modbus-cli 0.0.13 → 0.0.15

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: fd1223c99568138597a15d1bc5ba2761ea8d61ae
4
- data.tar.gz: 888fdc04b385310d4dd0bfc112cee60987e43cb3
2
+ SHA256:
3
+ metadata.gz: b7cc8d3a460a2a3f9598b6cab601b69e1541aca060e06b530588db86b1680682
4
+ data.tar.gz: 3c6f3332b694b6832f02063b0c42652f2d0402da78fe40a6268426033a355208
5
5
  SHA512:
6
- metadata.gz: 95b09c57efbbc5928797986aacf72785a8857a4013783db54ad365eeb652f6ff61448871ac05d710028eb9935494a1e944e934be74cd1e0f84b5b4a8b5aac039
7
- data.tar.gz: 6788dace2ba90faf4f7a673a32dbd8abefd376c444ed09ef4f5a8bcedf91ba23f7f09eb94d69441f618108192620a02e758d23c5e1b9da6b2b7750515b1e4122
6
+ metadata.gz: 40b414e97d709f231e1772d45136237ac37db742188cf190590a056168c7af421fe890691a45f7684afd23a6e5ae2e9a56f7b3eb5f060062ac8228915f11b804
7
+ data.tar.gz: e7d765873fe608ad3e0bcacc797cf3109c9b89157af435d2294ef17eb5e0e8f2084e182bbb1c3a09ce731ab4fb85ab1368fba4296e47663f3b496d0d3bf05a87
data/.travis.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  rvm:
2
+ - 2.5.1
2
3
  - 2.1.0
3
- - 1.8.7
4
4
  - 1.9.3
5
5
  - jruby
@@ -53,6 +53,12 @@ module Modbus
53
53
  Integer(t)
54
54
  end
55
55
  end
56
+
57
+ def connect_timeout_option
58
+ option ["-C", "--connect-timeout"], 'TIMEOUT', "Specify the timeout in seconds when connecting to TCP socket" do |t|
59
+ Integer(t)
60
+ end
61
+ end
56
62
  end
57
63
 
58
64
 
@@ -19,6 +19,7 @@ module Modbus
19
19
  option ["-o", "--output"], 'FILE', "write results to file FILE"
20
20
  debug_option
21
21
  timeout_option
22
+ connect_timeout_option
22
23
 
23
24
  parameter 'COUNT', 'number of data to read', :attribute_name => :count do |c|
24
25
  result = Integer(c)
@@ -73,7 +74,13 @@ module Modbus
73
74
  end
74
75
 
75
76
  def execute
76
- ModBus::TCPClient.connect(host, port) do |cl|
77
+ connect_args =
78
+ if connect_timeout
79
+ [host, port, {connect_timeout: connect_timeout}]
80
+ else
81
+ [host, port]
82
+ end
83
+ ModBus::TCPClient.connect(*connect_args) do |cl|
77
84
  cl.with_slave(slave) do |sl|
78
85
  sl.debug = true if debug?
79
86
  sl.read_retry_timeout = timeout if timeout
@@ -161,7 +168,7 @@ module Modbus
161
168
  case addr_type
162
169
  when :bit
163
170
  (addr + 1).to_s
164
- when :word, :int
171
+ when :word, :int, :dword, :float
165
172
  case addr_area
166
173
  when :input_registers
167
174
  (addr + 300001).to_s
@@ -1,5 +1,5 @@
1
1
  module Modbus
2
2
  module Cli
3
- VERSION = "0.0.13"
3
+ VERSION = "0.0.15"
4
4
  end
5
5
  end
@@ -15,6 +15,7 @@ module Modbus
15
15
  address_parameter
16
16
  debug_option
17
17
  timeout_option
18
+ connect_timeout_option
18
19
 
19
20
  parameter 'VALUES ...', 'values to write, nonzero counts as true for discrete values' do |v|
20
21
  case addr_type
@@ -35,7 +36,13 @@ module Modbus
35
36
 
36
37
 
37
38
  def execute
38
- ModBus::TCPClient.connect(host, port) do |cl|
39
+ connect_args =
40
+ if connect_timeout
41
+ [host, port, {connect_timeout: connect_timeout}]
42
+ else
43
+ [host, port]
44
+ end
45
+ ModBus::TCPClient.connect(*connect_args) do |cl|
39
46
  cl.with_slave(slave) do |sl|
40
47
  sl.debug = true if debug?
41
48
  sl.read_retry_timeout = timeout if timeout
data/modbus-cli.gemspec CHANGED
@@ -10,6 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.homepage = "http://www.github.com/tallakt/modbus-cli"
11
11
  s.summary = %q{Modbus command line}
12
12
  s.description = %q{Command line interface to communicate over Modbus TCP}
13
+ s.license = "MIT"
13
14
 
14
15
  s.rubyforge_project = "modbus-cli"
15
16
 
@@ -25,5 +26,5 @@ Gem::Specification.new do |s|
25
26
  s.add_runtime_dependency "gserver", '~> 0.0'
26
27
  s.add_development_dependency "rspec", '~> 3.5'
27
28
  s.add_development_dependency "rake", '~> 12.0'
28
- s.add_development_dependency "bundler", '~> 1.14'
29
+ s.add_development_dependency "bundler", '~> 1.16'
29
30
  end
@@ -106,11 +106,4 @@ describe Modbus::Cli::DumpCommand do
106
106
  slave.should_receive(:debug=).with(true)
107
107
  cmd.run %w(dump --debug dump.yml)
108
108
  end
109
-
110
109
  end
111
-
112
-
113
-
114
-
115
-
116
-
@@ -4,49 +4,49 @@ require 'yaml'
4
4
 
5
5
 
6
6
  describe Modbus::Cli::ReadCommand do
7
- include OutputCapture
7
+ include OutputCapture
8
8
 
9
9
  before(:each) do
10
10
  stub_tcpip
11
11
  end
12
12
 
13
13
  it 'can read holding registers' do
14
- client, slave = standard_connect_helper '1.2.3.4', 502
14
+ _client, slave = standard_connect_helper '1.2.3.4', 502
15
15
  slave.should_receive(:read_holding_registers).with(100, 10).and_return((0..9).to_a)
16
16
  cmd.run %w(read 1.2.3.4 %MW100 10)
17
17
  stdout.should match(/^\s*%MW105\s*5$/)
18
18
  end
19
19
 
20
20
  it 'can read input registers' do
21
- client, slave = standard_connect_helper '1.2.3.4', 502
21
+ _client, slave = standard_connect_helper '1.2.3.4', 502
22
22
  slave.should_receive(:read_input_registers).with(100, 10).and_return((0..9).to_a)
23
23
  cmd.run %w(read 1.2.3.4 300101 10)
24
24
  stdout.should match(/^\s*300106\s*5$/)
25
25
  end
26
26
 
27
27
  it 'can read floating point numbers' do
28
- client, slave = standard_connect_helper '1.2.3.4', 502
28
+ _client, slave = standard_connect_helper '1.2.3.4', 502
29
29
  slave.should_receive(:read_holding_registers).with(100, 4).and_return([52429, 17095, 52429, 17095])
30
30
  cmd.run %w(read 1.2.3.4 %MF100 2)
31
31
  stdout.should match(/^\s*%MF102\s*99[.]9(00[0-9]*)?$/)
32
32
  end
33
33
 
34
34
  it 'should display numbers with good precision' do
35
- client, slave = standard_connect_helper '1.2.3.4', 502
35
+ _client, slave = standard_connect_helper '1.2.3.4', 502
36
36
  slave.should_receive(:read_holding_registers).and_return([1049, 16286])
37
37
  cmd.run %w(read 1.2.3.4 %MF100 1)
38
38
  stdout.should match(/^\s*%MF100\s*1[.]2345\d*$/)
39
39
  end
40
40
 
41
41
  it 'can read double word numbers' do
42
- client, slave = standard_connect_helper '1.2.3.4', 502
42
+ _client, slave = standard_connect_helper '1.2.3.4', 502
43
43
  slave.should_receive(:read_holding_registers).with(100, 4).and_return([16959, 15, 16959, 15])
44
44
  cmd.run %w(read 1.2.3.4 %MD100 2)
45
45
  stdout.should match(/^\s*%MD102\s*999999$/)
46
46
  end
47
47
 
48
48
  it 'can read coils' do
49
- client, slave = standard_connect_helper '1.2.3.4', 502
49
+ _client, slave = standard_connect_helper '1.2.3.4', 502
50
50
  slave.should_receive(:read_coils).with(100, 10).and_return([1, 0] * 5)
51
51
  cmd.run %w(read 1.2.3.4 %M100 10)
52
52
  stdout.should match(/^\s*%M105\s*0$/)
@@ -66,14 +66,14 @@ describe Modbus::Cli::ReadCommand do
66
66
  end
67
67
 
68
68
  it 'should split large reads into smaller chunks for words' do
69
- client, slave = standard_connect_helper '1.2.3.4', 502
69
+ _client, slave = standard_connect_helper '1.2.3.4', 502
70
70
  slave.should_receive(:read_holding_registers).with(100, 125).and_return([1, 0] * 1000)
71
71
  slave.should_receive(:read_holding_registers).with(225, 25).and_return([1, 0] * 1000)
72
72
  cmd.run %w(read 1.2.3.4 %MW100 150)
73
73
  end
74
74
 
75
75
  it 'should split large reads into smaller chunks for coils' do
76
- client, slave = standard_connect_helper '1.2.3.4', 502
76
+ _client, slave = standard_connect_helper '1.2.3.4', 502
77
77
  slave.should_receive(:read_coils).with(100, 1000).and_return([1, 0] * 500)
78
78
  slave.should_receive(:read_coils).with(1100, 1000).and_return([1, 0] * 500)
79
79
  slave.should_receive(:read_coils).with(2100, 1000).and_return([1, 0] * 500)
@@ -81,39 +81,39 @@ describe Modbus::Cli::ReadCommand do
81
81
  end
82
82
 
83
83
  it 'can read registers as ints' do
84
- client, slave = standard_connect_helper '1.2.3.4', 502
84
+ _client, slave = standard_connect_helper '1.2.3.4', 502
85
85
  slave.should_receive(:read_holding_registers).with(100, 1).and_return([0xffff])
86
86
  cmd.run %w(read --int 1.2.3.4 %MW100 1)
87
87
  stdout.should match(/^\s*%MW100\s*-1$/)
88
88
  end
89
89
 
90
90
  it 'can read registers as floats' do
91
- client, slave = standard_connect_helper '1.2.3.4', 502
91
+ _client, slave = standard_connect_helper '1.2.3.4', 502
92
92
  slave.should_receive(:read_holding_registers).with(100, 2).and_return([0,0])
93
93
  cmd.run %w(read --float 1.2.3.4 %MW100 1)
94
94
  end
95
95
 
96
96
  it 'can read registers as dwords' do
97
- client, slave = standard_connect_helper '1.2.3.4', 502
97
+ _client, slave = standard_connect_helper '1.2.3.4', 502
98
98
  slave.should_receive(:read_holding_registers).with(100, 2).and_return([0,0])
99
99
  cmd.run %w(read --dword 1.2.3.4 %MW100 1)
100
100
  end
101
101
 
102
102
  it 'can read registers as words' do
103
- client, slave = standard_connect_helper '1.2.3.4', 502
103
+ _client, slave = standard_connect_helper '1.2.3.4', 502
104
104
  slave.should_receive(:read_holding_registers).with(100, 1).and_return([0])
105
105
  cmd.run %w(read --word 1.2.3.4 %MD100 1)
106
106
  end
107
107
 
108
108
  it 'accepts Modicon addresses for coils' do
109
- client, slave = standard_connect_helper '1.2.3.4', 502
109
+ _client, slave = standard_connect_helper '1.2.3.4', 502
110
110
  slave.should_receive(:read_coils).with(100, 10).and_return([1, 0] * 5)
111
111
  cmd.run %w(read 1.2.3.4 101 10)
112
112
  stdout.should match(/^\s*106\s*0$/)
113
113
  end
114
114
 
115
115
  it 'accepts Modicon addresses for registers' do
116
- client, slave = standard_connect_helper '1.2.3.4', 502
116
+ _client, slave = standard_connect_helper '1.2.3.4', 502
117
117
  slave.should_receive(:read_holding_registers).with(100, 10).and_return((0..9).to_a)
118
118
  cmd.run %w(read 1.2.3.4 400101 10)
119
119
  stdout.should match(/^\s*400106\s*5$/)
@@ -121,14 +121,14 @@ describe Modbus::Cli::ReadCommand do
121
121
 
122
122
 
123
123
  it 'should accept the --modicon option to force modicon output' do
124
- client, slave = standard_connect_helper '1.2.3.4', 502
124
+ _client, slave = standard_connect_helper '1.2.3.4', 502
125
125
  slave.should_receive(:read_holding_registers).with(100, 10).and_return((0..9).to_a)
126
126
  cmd.run %w(read --modicon 1.2.3.4 %MW100 10)
127
127
  stdout.should match(/^\s*400106\s*5$/)
128
128
  end
129
129
 
130
130
  it 'should accept the --schneider option to force schneider output' do
131
- client, slave = standard_connect_helper '1.2.3.4', 502
131
+ _client, slave = standard_connect_helper '1.2.3.4', 502
132
132
  slave.should_receive(:read_holding_registers).with(100, 10).and_return((0..9).to_a)
133
133
  cmd.run %w(read --schneider 1.2.3.4 400101 10)
134
134
  stdout.should match(/^\s*%MW105\s*5$/)
@@ -142,7 +142,7 @@ describe Modbus::Cli::ReadCommand do
142
142
  end
143
143
 
144
144
  it 'can write the output from reading registers to a yaml file using the -o <filename> parameter' do
145
- client, slave = standard_connect_helper '1.2.3.4', 502
145
+ _client, slave = standard_connect_helper '1.2.3.4', 502
146
146
  slave.should_receive(:read_holding_registers).with(100, 1).and_return([1])
147
147
  file_double = double('file')
148
148
  File.should_receive(:open).and_yield(file_double)
@@ -152,7 +152,7 @@ describe Modbus::Cli::ReadCommand do
152
152
  end
153
153
 
154
154
  it 'can write the output from reading coils to a yaml file using the -o <filename> parameter' do
155
- client, slave = standard_connect_helper '1.2.3.4', 502
155
+ _client, slave = standard_connect_helper '1.2.3.4', 502
156
156
  slave.should_receive(:read_coils).with(100, 1).and_return([1])
157
157
  file_double = double('file')
158
158
  File.should_receive(:open).and_yield(file_double)
@@ -162,23 +162,22 @@ describe Modbus::Cli::ReadCommand do
162
162
  end
163
163
 
164
164
  it 'has a --debug flag' do
165
- client, slave = standard_connect_helper '1.2.3.4', 502
165
+ _client, slave = standard_connect_helper '1.2.3.4', 502
166
166
  slave.should_receive(:read_holding_registers).with(100, 10).and_return((0..9).to_a)
167
167
  slave.should_receive(:debug=).with(true)
168
168
  cmd.run %w(read --debug 1.2.3.4 %MW100 10)
169
169
  end
170
170
 
171
171
  it 'has a --timeout flag' do
172
- client, slave = standard_connect_helper '1.2.3.4', 502
172
+ _client, slave = standard_connect_helper '1.2.3.4', 502
173
173
  slave.should_receive(:read_retry_timeout=).with(99)
174
174
  slave.should_receive(:read_holding_registers).with(100, 10).and_return((0..9).to_a)
175
175
  cmd.run %w(read --timeout 99 1.2.3.4 %MW100 10)
176
176
  end
177
177
 
178
-
178
+ it 'has a --connect-timeout flag' do
179
+ ModBus::TCPClient.should_receive(:connect).with('X', 502, connect_timeout: 99)
180
+ cmd.run %w(read --connect-timeout 99 X %MW100 10)
181
+ end
179
182
  end
180
183
 
181
-
182
-
183
-
184
-
@@ -10,26 +10,26 @@ describe Modbus::Cli::WriteCommand do
10
10
  end
11
11
 
12
12
  it 'can write to registers' do
13
- client, slave = standard_connect_helper 'HOST', 502
13
+ _client, slave = standard_connect_helper 'HOST', 502
14
14
  slave.should_receive(:write_holding_registers).with(100, [1, 2, 3, 4])
15
15
  cmd.run %w(write HOST %MW100 1 2 3 4)
16
16
  end
17
17
 
18
18
 
19
19
  it 'can write floating point numbers' do
20
- client, slave = standard_connect_helper 'HOST', 502
20
+ _client, slave = standard_connect_helper 'HOST', 502
21
21
  slave.should_receive(:write_holding_registers).with(100, [52429, 17095, 52429, 17095])
22
22
  cmd.run %w(write HOST %MF100 99.9 99.9)
23
23
  end
24
24
 
25
25
  it 'can write double word numbers' do
26
- client, slave = standard_connect_helper 'HOST', 502
26
+ _client, slave = standard_connect_helper 'HOST', 502
27
27
  slave.should_receive(:write_holding_registers).with(100, [16959, 15, 16959, 15])
28
28
  cmd.run %w(write HOST %MD100 999999 999999)
29
29
  end
30
30
 
31
31
  it 'can write to coils' do
32
- client, slave = standard_connect_helper 'HOST', 502
32
+ _client, slave = standard_connect_helper 'HOST', 502
33
33
  slave.should_receive(:write_multiple_coils).with(100, [1, 0, 1, 0, 1, 0, 0, 1, 1])
34
34
  cmd.run %w(write HOST %M100 1 0 1 0 1 0 0 1 1)
35
35
  end
@@ -45,14 +45,14 @@ describe Modbus::Cli::WriteCommand do
45
45
 
46
46
 
47
47
  it 'should split large writes in chunks for words' do
48
- client, slave = standard_connect_helper 'HOST', 502
48
+ _client, slave = standard_connect_helper 'HOST', 502
49
49
  slave.should_receive(:write_holding_registers).with(100, (1..123).to_a)
50
50
  slave.should_receive(:write_holding_registers).with(223, (124..150).to_a)
51
51
  cmd.run %w(write HOST %MW100) + (1..150).to_a
52
52
  end
53
53
 
54
54
  it 'should split large writes in chunks for coils' do
55
- client, slave = standard_connect_helper 'HOST', 502
55
+ _client, slave = standard_connect_helper 'HOST', 502
56
56
  slave.should_receive(:write_multiple_coils).with(100, [0, 1] * 400)
57
57
  slave.should_receive(:write_multiple_coils).with(900, [0, 1] * 400)
58
58
  slave.should_receive(:write_multiple_coils).with(1700, [0, 1] * 200)
@@ -60,37 +60,37 @@ describe Modbus::Cli::WriteCommand do
60
60
  end
61
61
 
62
62
  it 'can write to registers as ints' do
63
- client, slave = standard_connect_helper 'HOST', 502
63
+ _client, slave = standard_connect_helper 'HOST', 502
64
64
  slave.should_receive(:write_holding_registers).with(100, [0xffff])
65
65
  cmd.run %w(write --int HOST %MW100 -1)
66
66
  end
67
67
 
68
68
  it 'can write to registers as floats' do
69
- client, slave = standard_connect_helper 'HOST', 502
69
+ _client, slave = standard_connect_helper 'HOST', 502
70
70
  slave.should_receive(:write_holding_registers).with(100, [52429, 17095])
71
71
  cmd.run %w(write --float HOST %MW100 99.9)
72
72
  end
73
73
 
74
74
  it 'can write to registers as double words' do
75
- client, slave = standard_connect_helper 'HOST', 502
75
+ _client, slave = standard_connect_helper 'HOST', 502
76
76
  slave.should_receive(:write_holding_registers).with(100, [16959, 15])
77
77
  cmd.run %w(write --dword HOST %MW100 999999)
78
78
  end
79
79
 
80
80
  it 'can write to registers as words' do
81
- client, slave = standard_connect_helper 'HOST', 502
81
+ _client, slave = standard_connect_helper 'HOST', 502
82
82
  slave.should_receive(:write_holding_registers).with(100, [99])
83
83
  cmd.run %w(write --word HOST %MF100 99)
84
84
  end
85
85
 
86
86
  it 'can write to registers using Modicon addressing' do
87
- client, slave = standard_connect_helper 'HOST', 502
87
+ _client, slave = standard_connect_helper 'HOST', 502
88
88
  slave.should_receive(:write_holding_registers).with(100, [1, 2, 3, 4])
89
89
  cmd.run %w(write HOST 400101 1 2 3 4)
90
90
  end
91
91
 
92
92
  it 'can write to coils using Modicon addressing' do
93
- client, slave = standard_connect_helper 'HOST', 502
93
+ _client, slave = standard_connect_helper 'HOST', 502
94
94
  slave.should_receive(:write_multiple_coils).with(100, [1, 0, 1, 0, 1, 0, 0, 1, 1])
95
95
  cmd.run %w(write HOST 101 1 0 1 0 1 0 0 1 1)
96
96
  end
@@ -103,19 +103,23 @@ describe Modbus::Cli::WriteCommand do
103
103
  end
104
104
 
105
105
  it 'has a --debug flag' do
106
- client, slave = standard_connect_helper 'HOST', 502
106
+ _client, slave = standard_connect_helper 'HOST', 502
107
107
  slave.should_receive(:debug=).with(true)
108
108
  slave.should_receive(:write_multiple_coils)
109
109
  cmd.run %w(write --debug HOST 101 1)
110
110
  end
111
111
 
112
112
  it 'has a --timeout flag' do
113
- client, slave = standard_connect_helper 'HOST', 502
113
+ _client, slave = standard_connect_helper 'HOST', 502
114
114
  slave.should_receive(:read_retry_timeout=).with(99)
115
115
  slave.should_receive(:write_multiple_coils)
116
116
  cmd.run %w(write --timeout 99 HOST 101 1)
117
117
  end
118
118
 
119
+ it 'has a --connect-timeout flag' do
120
+ ModBus::TCPClient.should_receive(:connect).with('X', 502, connect_timeout: 99)
121
+ cmd.run %w(write --connect-timeout 99 X %MW100 10)
122
+ end
119
123
  end
120
124
 
121
125
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: modbus-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tallak Tveide
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-17 00:00:00.000000000 Z
11
+ date: 2025-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rmodbus
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '1.14'
89
+ version: '1.16'
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.14'
96
+ version: '1.16'
97
97
  description: Command line interface to communicate over Modbus TCP
98
98
  email:
99
99
  - tallak@tveide.net
@@ -121,7 +121,8 @@ files:
121
121
  - spec/spec_helper.rb
122
122
  - spec/write_command_spec.rb
123
123
  homepage: http://www.github.com/tallakt/modbus-cli
124
- licenses: []
124
+ licenses:
125
+ - MIT
125
126
  metadata: {}
126
127
  post_install_message:
127
128
  rdoc_options: []
@@ -138,8 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
139
  - !ruby/object:Gem::Version
139
140
  version: '0'
140
141
  requirements: []
141
- rubyforge_project: modbus-cli
142
- rubygems_version: 2.4.8
142
+ rubygems_version: 3.0.3.1
143
143
  signing_key:
144
144
  specification_version: 4
145
145
  summary: Modbus command line