rmodbus 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA512:
3
+ metadata.gz: 7439565bc235bd2e35e610083325a8946e6f0ff1c46df6582bee852366555745ba7af9f1d7d50a5e4d6cdf45be288ff177588d74b09d97603e36338b18fec9ad
4
+ data.tar.gz: a81c7ce89ff654f5faf43be3b9cfda5c6130d0470e3e20f56a418049984ff3c9cb9215361877c928b648a1e1b80cdac533d3ef1e9d90a01a11f866aea4d33cf5
5
+ SHA1:
6
+ metadata.gz: 0e1df248725aa3e1f6c90f39096062e99511f9cb
7
+ data.tar.gz: 08414de5199b5bee7e053faa6fa57f2ad34ae4de
data/NEWS.md CHANGED
@@ -1,12 +1,16 @@
1
+ ###2013-10-28 Release 1.2.2
2
+
3
+ 1. Fixed issue [#29](https://github.com/flipback/rmodbus/pull/29). The server part supports 2000 of coils/discrete inputs for reading instead of 125.
4
+
1
5
  ###2013-06-28 Release 1.2.1
2
6
 
3
- 1. Fixed issue [#27](https://github.com/flipback/rmodbus/issues/24) for read_nonblock error on Windows
7
+ 1. Fixed issue [#27](https://github.com/flipback/rmodbus/issues/27) for read_nonblock error on Windows
4
8
 
5
9
  ###2013-03-12 Release 1.2.0
6
10
 
7
11
  1. Transaction number mismatch doesn't throw exception in TCPSlave#query method.
8
12
  Now this method will wait correct transaction until timeout breaks waiting.
9
- 2. Added ruby-2.0 experemental compatibility
13
+ 2. Added ruby-2.0 experimental compatibility
10
14
 
11
15
  ###2012-07-17 Release 1.1.5
12
16
 
data/Rakefile CHANGED
@@ -22,16 +22,8 @@ RSpec::Core::RakeTask.new(:spec) do |spec|
22
22
  end
23
23
  end
24
24
 
25
- RSpec::Core::RakeTask.new(:rcov) do |spec|
26
- spec.pattern = FileList['spec/**/*_spec.rb']
27
- spec.rcov = true
28
- end
29
-
30
25
  task :default => :spec
31
26
 
32
- require 'yard'
33
- YARD::Rake::YardocTask.new
34
-
35
27
  task :pry do
36
28
  sh "bundle exec pry -r ./lib/rmodbus.rb"
37
29
  end
@@ -35,13 +35,13 @@ module ModBus
35
35
 
36
36
  case func
37
37
  when 1
38
- params = parse_read_func(req, coils)
38
+ params = parse_read_func(req, coils, 2000)
39
39
  if params[:err] == 0
40
40
  val = coils[params[:addr],params[:quant]].pack_to_word
41
41
  pdu = func.chr + val.size.chr + val
42
42
  end
43
43
  when 2
44
- params = parse_read_func(req, discrete_inputs)
44
+ params = parse_read_func(req, discrete_inputs, 2000)
45
45
  if params[:err] == 0
46
46
  val = discrete_inputs[params[:addr],params[:quant]].pack_to_word
47
47
  pdu = func.chr + val.size.chr + val
@@ -89,10 +89,10 @@ module ModBus
89
89
  end
90
90
  end
91
91
 
92
- def parse_read_func(req, field)
92
+ def parse_read_func(req, field, quant_max=0x7d)
93
93
  quant = req[3,2].unpack('n')[0]
94
94
 
95
- return { :err => 3} unless quant <= 0x7d
95
+ return { :err => 3} unless quant <= quant_max
96
96
 
97
97
  addr = req[1,2].unpack('n')[0]
98
98
  return { :err => 2 } unless addr + quant <= field.size
@@ -13,5 +13,5 @@
13
13
  # GNU General Public License for more details.
14
14
  module ModBus
15
15
  # Package version
16
- VERSION = '1.2.1'
16
+ VERSION = '1.2.2'
17
17
  end
@@ -2,7 +2,7 @@
2
2
  require "rmodbus"
3
3
 
4
4
  describe ModBus::TCPServer do
5
- before do
5
+ before :all do
6
6
  @server = ModBus::TCPServer.new(8502,1)
7
7
  @server.coils = [1,0,1,1]
8
8
  @server.discrete_inputs = [1,1,0,0]
@@ -29,8 +29,15 @@ describe ModBus::TCPServer do
29
29
  )
30
30
  end
31
31
 
32
- it "should send exception if quanity of out more 0x7d" do
33
- lambda { @slave.read_coils(0, 0x7e) }.should raise_exception(
32
+ it "should send exception if quanity of registers are more than 0x7d" do
33
+ lambda { @slave.read_holding_registers(0, 0x7e) }.should raise_exception(
34
+ ModBus::Errors::IllegalDataValue,
35
+ "A value contained in the query data field is not an allowable value for server"
36
+ )
37
+ end
38
+
39
+ it "shouldn't send exception if quanity of coils are more than 0x7d0" do
40
+ lambda { @slave.read_coils(0, 0x7d1) }.should raise_exception(
34
41
  ModBus::Errors::IllegalDataValue,
35
42
  "A value contained in the query data field is not an allowable value for server"
36
43
  )
@@ -53,6 +60,11 @@ describe ModBus::TCPServer do
53
60
  @slave.read_coils(0,3).should == @server.coils[0,3]
54
61
  end
55
62
 
63
+ it "should supported function 'read coils' with more than 125 in one request" do
64
+ @server.coils = Array.new( 1900, 1 )
65
+ @slave.read_coils(0,1900).should == @server.coils[0,1900]
66
+ end
67
+
56
68
  it "should supported function 'read discrete inputs'" do
57
69
  @slave.read_discrete_inputs(1,3).should == @server.discrete_inputs[1,3]
58
70
  end
@@ -101,7 +113,7 @@ describe ModBus::TCPServer do
101
113
  srv.maxConnections.should eql(max_conn)
102
114
  end
103
115
 
104
- after do
116
+ after :all do
105
117
  @cl.close unless @cl.closed?
106
118
  @server.stop unless @server.stopped?
107
119
  while GServer.in_service?(8502)
metadata CHANGED
@@ -1,168 +1,79 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rmodbus
3
- version: !ruby/object:Gem::Version
4
- version: 1.2.1
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.2
6
5
  platform: ruby
7
- authors:
6
+ authors:
8
7
  - A.Timin, J. Sanders, K. Reynolds
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-06-28 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
11
+
12
+ date: 2013-10-28 00:00:00 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :development
23
16
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
- - !ruby/object:Gem::Dependency
31
- name: bundler
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
17
+ requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - &id002
20
+ - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
38
23
  type: :development
24
+ version_requirements: *id001
25
+ - !ruby/object:Gem::Dependency
26
+ name: bundler
39
27
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- - !ruby/object:Gem::Dependency
47
- name: rspec
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ~>
52
- - !ruby/object:Gem::Version
53
- version: 2.9.0
28
+ requirement: &id003 !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - *id002
54
31
  type: :development
32
+ version_requirements: *id003
33
+ - !ruby/object:Gem::Dependency
34
+ name: rspec
55
35
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
36
+ requirement: &id004 !ruby/object:Gem::Requirement
37
+ requirements:
59
38
  - - ~>
60
- - !ruby/object:Gem::Version
39
+ - !ruby/object:Gem::Version
61
40
  version: 2.9.0
62
- - !ruby/object:Gem::Dependency
63
- name: simplecov
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :development
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: yard
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
86
41
  type: :development
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
- - !ruby/object:Gem::Dependency
95
- name: rdiscount
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
101
- version: '0'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- - !ruby/object:Gem::Dependency
42
+ version_requirements: *id004
43
+ - !ruby/object:Gem::Dependency
111
44
  name: guard-rspec
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ! '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
45
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ! '>='
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
- - !ruby/object:Gem::Dependency
127
- name: pry
128
- requirement: !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ! '>='
132
- - !ruby/object:Gem::Version
133
- version: '0'
46
+ requirement: &id005 !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - *id002
134
49
  type: :development
50
+ version_requirements: *id005
51
+ - !ruby/object:Gem::Dependency
52
+ name: pry
135
53
  prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ! '>='
140
- - !ruby/object:Gem::Version
141
- version: '0'
142
- - !ruby/object:Gem::Dependency
143
- name: serialport
144
- requirement: !ruby/object:Gem::Requirement
145
- none: false
146
- requirements:
147
- - - ! '>='
148
- - !ruby/object:Gem::Version
149
- version: '0'
54
+ requirement: &id006 !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - *id002
150
57
  type: :development
58
+ version_requirements: *id006
59
+ - !ruby/object:Gem::Dependency
60
+ name: serialport
151
61
  prerelease: false
152
- version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
- requirements:
155
- - - ! '>='
156
- - !ruby/object:Gem::Version
157
- version: '0'
62
+ requirement: &id007 !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - *id002
65
+ type: :development
66
+ version_requirements: *id007
158
67
  description:
159
68
  email: atimin@gmail.com
160
69
  executables: []
70
+
161
71
  extensions: []
162
- extra_rdoc_files:
72
+
73
+ extra_rdoc_files:
163
74
  - README.md
164
75
  - NEWS.md
165
- files:
76
+ files:
166
77
  - lib/rmodbus/rtu_client.rb
167
78
  - lib/rmodbus/rtu_via_tcp_slave.rb
168
79
  - lib/rmodbus/rtu_server.rb
@@ -210,33 +121,31 @@ files:
210
121
  - README.md
211
122
  - NEWS.md
212
123
  homepage: http://rmodbus.flipback.net
213
- licenses: []
124
+ licenses:
125
+ - GPL v2.0
126
+ metadata: {}
127
+
214
128
  post_install_message:
215
- rdoc_options:
129
+ rdoc_options:
216
130
  - --title
217
131
  - RModBus
218
132
  - --inline-source
219
133
  - --main
220
134
  - README.md
221
- require_paths:
135
+ require_paths:
222
136
  - lib
223
- required_ruby_version: !ruby/object:Gem::Requirement
224
- none: false
225
- requirements:
226
- - - ! '>='
227
- - !ruby/object:Gem::Version
228
- version: '0'
229
- required_rubygems_version: !ruby/object:Gem::Requirement
230
- none: false
231
- requirements:
232
- - - ! '>='
233
- - !ruby/object:Gem::Version
234
- version: '0'
137
+ required_ruby_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - *id002
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - *id002
235
143
  requirements: []
144
+
236
145
  rubyforge_project:
237
- rubygems_version: 1.8.25
146
+ rubygems_version: 2.0.13
238
147
  signing_key:
239
- specification_version: 3
148
+ specification_version: 4
240
149
  summary: RModBus - free implementation of protocol ModBus
241
150
  test_files: []
242
- has_rdoc:
151
+