rmodbus 1.3.2 → 2.1.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 +5 -5
- data/NEWS.md +19 -0
- data/README.md +8 -8
- data/examples/perfomance_rtu.rb +55 -56
- data/examples/perfomance_rtu_via_tcp.rb +54 -55
- data/examples/perfomance_tcp.rb +54 -55
- data/examples/simple_xpca_gateway.rb +85 -0
- data/examples/use_rtu_via_tcp_modbus.rb +14 -11
- data/examples/use_tcp_modbus.rb +14 -11
- data/lib/rmodbus/client/slave.rb +333 -0
- data/lib/rmodbus/client.rb +15 -10
- data/lib/rmodbus/debug.rb +12 -15
- data/lib/rmodbus/errors.rb +26 -2
- data/lib/rmodbus/ext.rb +72 -51
- data/lib/rmodbus/options.rb +4 -1
- data/lib/rmodbus/proxy.rb +14 -9
- data/lib/rmodbus/rtu.rb +89 -125
- data/lib/rmodbus/rtu_client.rb +22 -2
- data/lib/rmodbus/rtu_server.rb +16 -12
- data/lib/rmodbus/rtu_slave.rb +26 -3
- data/lib/rmodbus/rtu_via_tcp_server.rb +12 -19
- data/lib/rmodbus/server/slave.rb +18 -0
- data/lib/rmodbus/server.rb +227 -84
- data/lib/rmodbus/sp.rb +10 -12
- data/lib/rmodbus/tcp.rb +9 -10
- data/lib/rmodbus/tcp_client.rb +3 -0
- data/lib/rmodbus/tcp_server.rb +41 -35
- data/lib/rmodbus/tcp_slave.rb +19 -18
- data/lib/rmodbus/version.rb +3 -2
- data/lib/rmodbus.rb +20 -21
- metadata +63 -50
- data/Rakefile +0 -29
- data/examples/simple-xpca-gateway.rb +0 -84
- data/lib/rmodbus/rtu_via_tcp_client.rb +0 -26
- data/lib/rmodbus/rtu_via_tcp_slave.rb +0 -29
- data/lib/rmodbus/slave.rb +0 -308
- data/spec/client_spec.rb +0 -88
- data/spec/exception_spec.rb +0 -119
- data/spec/ext_spec.rb +0 -52
- data/spec/logging_spec.rb +0 -89
- data/spec/proxy_spec.rb +0 -74
- data/spec/read_rtu_response_spec.rb +0 -92
- data/spec/response_mismach_spec.rb +0 -163
- data/spec/rtu_client_spec.rb +0 -86
- data/spec/rtu_server_spec.rb +0 -30
- data/spec/rtu_via_tcp_client_spec.rb +0 -76
- data/spec/rtu_via_tcp_server_spec.rb +0 -16
- data/spec/slave_spec.rb +0 -55
- data/spec/spec_helper.rb +0 -54
- data/spec/tcp_client_spec.rb +0 -88
- data/spec/tcp_server_spec.rb +0 -129
data/lib/rmodbus.rb
CHANGED
@@ -1,24 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rmodbus/ext"
|
4
|
+
require "rmodbus/proxy"
|
5
|
+
require "rmodbus/version"
|
4
6
|
|
5
7
|
module ModBus
|
6
|
-
autoload :Errors,
|
7
|
-
autoload :Debug,
|
8
|
-
autoload :Options,
|
9
|
-
autoload :SP,
|
10
|
-
autoload :RTU,
|
11
|
-
autoload :TCP,
|
12
|
-
autoload :
|
13
|
-
autoload :
|
14
|
-
autoload :
|
15
|
-
autoload :
|
16
|
-
autoload :
|
17
|
-
autoload :
|
18
|
-
autoload :
|
19
|
-
autoload :
|
20
|
-
autoload :
|
21
|
-
autoload :RTUViaTCPSlave, 'rmodbus/rtu_via_tcp_slave'
|
22
|
-
autoload :RTUViaTCPClient, 'rmodbus/rtu_via_tcp_client'
|
23
|
-
autoload :RTUViaTCPServer, 'rmodbus/rtu_via_tcp_server'
|
8
|
+
autoload :Errors, "rmodbus/errors"
|
9
|
+
autoload :Debug, "rmodbus/debug"
|
10
|
+
autoload :Options, "rmodbus/options"
|
11
|
+
autoload :SP, "rmodbus/sp"
|
12
|
+
autoload :RTU, "rmodbus/rtu"
|
13
|
+
autoload :TCP, "rmodbus/tcp"
|
14
|
+
autoload :Client, "rmodbus/client"
|
15
|
+
autoload :Server, "rmodbus/server"
|
16
|
+
autoload :TCPSlave, "rmodbus/tcp_slave"
|
17
|
+
autoload :TCPClient, "rmodbus/tcp_client"
|
18
|
+
autoload :TCPServer, "rmodbus/tcp_server"
|
19
|
+
autoload :RTUSlave, "rmodbus/rtu_slave"
|
20
|
+
autoload :RTUClient, "rmodbus/rtu_client"
|
21
|
+
autoload :RTUServer, "rmodbus/rtu_server"
|
22
|
+
autoload :RTUViaTCPServer, "rmodbus/rtu_via_tcp_server"
|
24
23
|
end
|
metadata
CHANGED
@@ -1,115 +1,143 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rmodbus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 2.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- A.Timin, J. Sanders, K. Reynolds, F. Luizão
|
7
|
+
- A.Timin, J. Sanders, K. Reynolds, F. Luizão, C. Cutrer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.2'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: ccutrer-serialport
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
33
|
+
version: '1.1'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1.
|
40
|
+
version: '1.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: gserver
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '13.0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '13.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '3.11'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '3.11'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rubocop-inst
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '1.
|
89
|
+
version: '1.0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '1.
|
96
|
+
version: '1.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: rubocop-rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0.
|
103
|
+
version: '0.6'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0.
|
110
|
+
version: '0.6'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rubocop-rspec
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '3.0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '3.0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: digest-crc
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0.1'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0.1'
|
111
139
|
description:
|
112
|
-
email:
|
140
|
+
email: cody@cutrer.us
|
113
141
|
executables: []
|
114
142
|
extensions: []
|
115
143
|
extra_rdoc_files:
|
@@ -118,15 +146,15 @@ extra_rdoc_files:
|
|
118
146
|
files:
|
119
147
|
- NEWS.md
|
120
148
|
- README.md
|
121
|
-
- Rakefile
|
122
149
|
- examples/perfomance_rtu.rb
|
123
150
|
- examples/perfomance_rtu_via_tcp.rb
|
124
151
|
- examples/perfomance_tcp.rb
|
125
|
-
- examples/
|
152
|
+
- examples/simple_xpca_gateway.rb
|
126
153
|
- examples/use_rtu_via_tcp_modbus.rb
|
127
154
|
- examples/use_tcp_modbus.rb
|
128
155
|
- lib/rmodbus.rb
|
129
156
|
- lib/rmodbus/client.rb
|
157
|
+
- lib/rmodbus/client/slave.rb
|
130
158
|
- lib/rmodbus/debug.rb
|
131
159
|
- lib/rmodbus/errors.rb
|
132
160
|
- lib/rmodbus/ext.rb
|
@@ -136,36 +164,22 @@ files:
|
|
136
164
|
- lib/rmodbus/rtu_client.rb
|
137
165
|
- lib/rmodbus/rtu_server.rb
|
138
166
|
- lib/rmodbus/rtu_slave.rb
|
139
|
-
- lib/rmodbus/rtu_via_tcp_client.rb
|
140
167
|
- lib/rmodbus/rtu_via_tcp_server.rb
|
141
|
-
- lib/rmodbus/rtu_via_tcp_slave.rb
|
142
168
|
- lib/rmodbus/server.rb
|
143
|
-
- lib/rmodbus/slave.rb
|
169
|
+
- lib/rmodbus/server/slave.rb
|
144
170
|
- lib/rmodbus/sp.rb
|
145
171
|
- lib/rmodbus/tcp.rb
|
146
172
|
- lib/rmodbus/tcp_client.rb
|
147
173
|
- lib/rmodbus/tcp_server.rb
|
148
174
|
- lib/rmodbus/tcp_slave.rb
|
149
175
|
- lib/rmodbus/version.rb
|
150
|
-
|
151
|
-
- spec/exception_spec.rb
|
152
|
-
- spec/ext_spec.rb
|
153
|
-
- spec/logging_spec.rb
|
154
|
-
- spec/proxy_spec.rb
|
155
|
-
- spec/read_rtu_response_spec.rb
|
156
|
-
- spec/response_mismach_spec.rb
|
157
|
-
- spec/rtu_client_spec.rb
|
158
|
-
- spec/rtu_server_spec.rb
|
159
|
-
- spec/rtu_via_tcp_client_spec.rb
|
160
|
-
- spec/rtu_via_tcp_server_spec.rb
|
161
|
-
- spec/slave_spec.rb
|
162
|
-
- spec/spec_helper.rb
|
163
|
-
- spec/tcp_client_spec.rb
|
164
|
-
- spec/tcp_server_spec.rb
|
165
|
-
homepage: http://www.rubydoc.info/github/rmodbus/rmodbus
|
176
|
+
homepage: https://github.com/rmodbus/rmodbus
|
166
177
|
licenses:
|
167
178
|
- BSD-3-Clause
|
168
|
-
metadata:
|
179
|
+
metadata:
|
180
|
+
changelog_uri: https://github.com/rmodbus/rmodbus/blob/main/NEWS.md
|
181
|
+
source_code_uri: https://github.com/rmodbus/rmodbus
|
182
|
+
rubygems_mfa_required: 'true'
|
169
183
|
post_install_message:
|
170
184
|
rdoc_options:
|
171
185
|
- "--title"
|
@@ -179,15 +193,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
179
193
|
requirements:
|
180
194
|
- - ">="
|
181
195
|
- !ruby/object:Gem::Version
|
182
|
-
version: '
|
196
|
+
version: '2.7'
|
183
197
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
198
|
requirements:
|
185
199
|
- - ">="
|
186
200
|
- !ruby/object:Gem::Version
|
187
201
|
version: '0'
|
188
202
|
requirements: []
|
189
|
-
|
190
|
-
rubygems_version: 2.6.11
|
203
|
+
rubygems_version: 3.5.11
|
191
204
|
signing_key:
|
192
205
|
specification_version: 4
|
193
206
|
summary: RModBus - free implementation of protocol ModBus
|
data/Rakefile
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'bundler'
|
5
|
-
begin
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
$stderr.puts e.message
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
-
exit e.status_code
|
11
|
-
end
|
12
|
-
|
13
|
-
require 'rake'
|
14
|
-
require 'rspec/core'
|
15
|
-
require 'rspec/core/rake_task'
|
16
|
-
RSpec::Core::RakeTask.new(:spec) do |spec|
|
17
|
-
spec.pattern = FileList['spec/**/*_spec.rb']
|
18
|
-
begin
|
19
|
-
require 'serialport'
|
20
|
-
rescue LoadError => e
|
21
|
-
spec.pattern.exclude("spec/rtu_client_spec.rb", "spec/rtu_server_spec.rb")
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
task :default => :spec
|
26
|
-
|
27
|
-
task :pry do
|
28
|
-
sh "bundle exec pry -r ./lib/rmodbus.rb"
|
29
|
-
end
|
@@ -1,84 +0,0 @@
|
|
1
|
-
=begin
|
2
|
-
It's very simple example of implementation XPCA gateway (see http://www.xpca.org)
|
3
|
-
for communication with TCP ModBus devices
|
4
|
-
It receives REST requests (e.g http://127.0.0.1:4567/mb/127.0.0.1/8502/1/coils/6/17 )
|
5
|
-
and returns data in JSON format addr : data:
|
6
|
-
{"coils": {
|
7
|
-
"6":{
|
8
|
-
"value":0,
|
9
|
-
"timestamp":"2011-07-12 18:11:03 +0000",
|
10
|
-
"quality":"good"
|
11
|
-
},
|
12
|
-
"7":{
|
13
|
-
"value":0,
|
14
|
-
"timestamp":"2011-07-12 18:11:03 +0000",
|
15
|
-
"quality":"good"
|
16
|
-
}
|
17
|
-
...
|
18
|
-
}
|
19
|
-
|
20
|
-
This code requies gems: rmodbus, sinatra and json
|
21
|
-
2011 (c) Aleksey Timin
|
22
|
-
=end
|
23
|
-
|
24
|
-
require 'rubygems'
|
25
|
-
require 'rmodbus'
|
26
|
-
require 'sinatra'
|
27
|
-
require 'json'
|
28
|
-
|
29
|
-
# Launche TCP ModBus server for test
|
30
|
-
IP = '127.0.0.1'
|
31
|
-
PORT = 8502
|
32
|
-
|
33
|
-
@srv = ModBus::TCPServer.new(PORT,1)
|
34
|
-
|
35
|
-
@srv.holding_registers = Array.new(100) { |i| i = i + 1 }
|
36
|
-
@srv.input_registers = Array.new(100) { |i| i = i + 1 }
|
37
|
-
@srv.coils = Array.new(100) { |i| i = 0 }
|
38
|
-
@srv.discrete_inputs = Array.new(100) { |i| i = 0 }
|
39
|
-
|
40
|
-
@srv.start
|
41
|
-
|
42
|
-
|
43
|
-
# Calc a GET request
|
44
|
-
# @example
|
45
|
-
# http://127.0.0.1:4567/mb/127.0.0.1/8502/1/coils/6/17
|
46
|
-
#
|
47
|
-
# HTTP route: GET http://localhost/mb/:ip/:port/:slave/:dataplace/:firstaddr/:lastaddr
|
48
|
-
#
|
49
|
-
# :ip - ip addr of ModBus TCP Server
|
50
|
-
# :port - port of ModBUs TCP Server
|
51
|
-
# :slave - id of slave device
|
52
|
-
# :dataplace - valid values: coils, discrete_inputs, input_registers, holding_registers
|
53
|
-
# :firstaddr - first addr of registers(contacts)
|
54
|
-
# :lastaddr - last addr of registers(contacts)
|
55
|
-
get '/mb/:ip/:port/:slave/:dataplace/:firstaddr/:lastaddr' do
|
56
|
-
resp = {}
|
57
|
-
begin
|
58
|
-
data = []
|
59
|
-
ModBus::TCPClient.new(params[:ip].to_s, params[:port].to_i) do |cl|
|
60
|
-
cl.with_slave(params[:slave].to_i) do |slave|
|
61
|
-
slave.debug = true
|
62
|
-
dataplace = slave.send params[:dataplace]
|
63
|
-
data = dataplace[params[:firstaddr].to_i .. params[:lastaddr].to_i]
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
resp = { params[:dataplace] => {}}
|
68
|
-
data.each_with_index do |v,i|
|
69
|
-
resp[params[:dataplace]][params[:firstaddr].to_i + i] = {
|
70
|
-
:value => v,
|
71
|
-
:timestamp => Time.now.utc.strftime("%Y-%m-%d %H:%M:%S %z"),
|
72
|
-
:quality => "good"
|
73
|
-
}
|
74
|
-
end
|
75
|
-
rescue Exception => e
|
76
|
-
resp = { :error => {
|
77
|
-
:type => e.class,
|
78
|
-
:message => e.message }
|
79
|
-
}
|
80
|
-
end
|
81
|
-
|
82
|
-
content_type "application/json"
|
83
|
-
resp.to_json
|
84
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module ModBus
|
2
|
-
# RTU over TCP client implementation
|
3
|
-
# @example
|
4
|
-
# RTUViaTCPClient.connect('127.0.0.1', 10002) do |cl|
|
5
|
-
# cl.with_slave(uid) do |slave|
|
6
|
-
# slave.holding_registers[0..100]
|
7
|
-
# end
|
8
|
-
# end
|
9
|
-
#
|
10
|
-
# @see TCP#open_tcp_connection
|
11
|
-
# @see Client#initialize
|
12
|
-
class RTUViaTCPClient < Client
|
13
|
-
include RTU
|
14
|
-
include TCP
|
15
|
-
|
16
|
-
protected
|
17
|
-
# Open TCP\IP connection
|
18
|
-
def open_connection(ipaddr, port = 10002, opts = {})
|
19
|
-
io = open_tcp_connection(ipaddr, port, opts)
|
20
|
-
end
|
21
|
-
|
22
|
-
def get_slave(uid, io)
|
23
|
-
RTUViaTCPSlave.new(uid, io)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
module ModBus
|
2
|
-
# RTU over TCP slave implementation
|
3
|
-
# @example
|
4
|
-
# RTUViaTCP.connect('127.0.0.1', 10002) do |cl|
|
5
|
-
# cl.with_slave(uid) do |slave|
|
6
|
-
# slave.holding_registers[0..100]
|
7
|
-
# end
|
8
|
-
# end
|
9
|
-
#
|
10
|
-
# @see RTUViaTCPClient#open_connection
|
11
|
-
# @see Client#with_slave
|
12
|
-
# @see Slave
|
13
|
-
class RTUViaTCPSlave < Slave
|
14
|
-
include RTU
|
15
|
-
|
16
|
-
private
|
17
|
-
# overide method for RTU implamentaion
|
18
|
-
# @see Slave#query
|
19
|
-
def send_pdu(pdu)
|
20
|
-
send_rtu_pdu(pdu)
|
21
|
-
end
|
22
|
-
|
23
|
-
# overide method for RTU implamentaion
|
24
|
-
# @see Slave#query
|
25
|
-
def read_pdu
|
26
|
-
read_rtu_pdu
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|