rmodbus 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+