libmodbus4r 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/NEWS +12 -3
- data/README +29 -24
- data/examples/use_rtu_master.rb +10 -17
- data/examples/use_rtu_slave.rb +24 -0
- data/examples/use_tcp_master.rb +11 -17
- data/examples/use_tcp_slave.rb +21 -0
- data/ext/errors.c +11 -11
- data/ext/extconf.rb +6 -1
- data/ext/master.c +30 -40
- data/ext/master.h +9 -8
- data/ext/modbus.c +1959 -0
- data/ext/modbus.h +347 -0
- data/ext/modbus4r.c +47 -11
- data/ext/modbus4r.h +6 -1
- data/ext/rtu_master.c +7 -9
- data/ext/rtu_master.h +2 -1
- data/ext/rtu_slave.c +131 -0
- data/ext/rtu_slave.h +23 -0
- data/ext/slave.c +215 -0
- data/ext/slave.h +44 -0
- data/ext/tcp_master.c +5 -9
- data/ext/tcp_master.h +2 -1
- data/ext/tcp_slave.c +134 -0
- data/ext/tcp_slave.h +21 -0
- data/lib/modbus4r.rb +12 -11
- data/spec/rtu_master_spec.rb +1 -1
- data/spec/rtu_slave_spec.rb +16 -0
- data/spec/tcp_master_spec.rb +36 -26
- data/spec/tcp_slave_spec.rb +95 -0
- metadata +21 -11
- data/TODO +0 -5
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'modbus4r'
|
2
|
+
|
3
|
+
describe ModBus::TCPSlave do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@sl = ModBus::TCPSlave.new('127.0.0.1', 1502, 1)
|
7
|
+
@sl.start
|
8
|
+
|
9
|
+
@mstr = ModBus::TCPMaster.new('127.0.0.1', 1502, 1)
|
10
|
+
@mstr.connect
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should have stoped" do
|
14
|
+
sl = ModBus::TCPSlave.new('127.0.0.1', 1512, 1)
|
15
|
+
sl.start.stoped? == false
|
16
|
+
|
17
|
+
|
18
|
+
mstr = ModBus::TCPMaster.new('127.0.0.1', 1512, 1)
|
19
|
+
mstr.connect.closed?.should == false
|
20
|
+
|
21
|
+
sl.stop.stoped? == true
|
22
|
+
lambda { mstr.connect }.should raise_error(ModBus::Errors::ModBusError)
|
23
|
+
sl.start.stoped? == false
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should have coil status" do
|
27
|
+
@sl.coil_status.should == []
|
28
|
+
@sl.coil_status = [false, true, false]
|
29
|
+
@sl.coil_status.should == [false, true, false]
|
30
|
+
|
31
|
+
@mstr.read_coil_status(0, 3).should == [false, true, false]
|
32
|
+
@mstr.force_single_coil(2, true)
|
33
|
+
|
34
|
+
@sl.coil_status.should == [false, true ,true]
|
35
|
+
|
36
|
+
@mstr.force_multiple_coils(0, [true, true, true])
|
37
|
+
|
38
|
+
@sl.coil_status.should == [true, true, true]
|
39
|
+
@sl.coil_status[1] = false
|
40
|
+
@sl.coil_status.should == [true, false, true]
|
41
|
+
|
42
|
+
@mstr.read_coil_status(0, 3).should == [true, false, true]
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should have input status" do
|
46
|
+
@sl.input_status.should == []
|
47
|
+
@sl.input_status = [false, false, false]
|
48
|
+
@sl.input_status.should == [false, false, false]
|
49
|
+
|
50
|
+
@mstr.read_input_status(0, 3).should == [false, false, false]
|
51
|
+
|
52
|
+
@sl.input_status[1] = true
|
53
|
+
@sl.input_status.should == [false, true, false]
|
54
|
+
|
55
|
+
@mstr.read_input_status(0, 3).should == [false, true, false]
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should have holding registers" do
|
59
|
+
@sl.holding_registers.should == []
|
60
|
+
@sl.holding_registers = [0, 0, 0]
|
61
|
+
@sl.holding_registers.should == [0, 0, 0]
|
62
|
+
|
63
|
+
@mstr.read_holding_registers(0, 3).should == [0, 0, 0]
|
64
|
+
@mstr.preset_single_register(1, 10000)
|
65
|
+
|
66
|
+
@sl.holding_registers.should == [0, 10000, 0]
|
67
|
+
|
68
|
+
@mstr.preset_multiple_registers(0, [1, 2, 3])
|
69
|
+
|
70
|
+
@sl.holding_registers.should == [1, 2, 3]
|
71
|
+
@sl.holding_registers[2] = 55
|
72
|
+
@sl.holding_registers.should == [1, 2, 55]
|
73
|
+
|
74
|
+
@mstr.read_holding_registers(0, 3) == [1, 2, 55]
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should have input registers" do
|
78
|
+
@sl.input_registers.should == []
|
79
|
+
@sl.input_registers = [0, 0, 0]
|
80
|
+
@sl.input_registers.should == [0, 0, 0]
|
81
|
+
|
82
|
+
@mstr.read_input_registers(0, 3).should == [0, 0, 0]
|
83
|
+
|
84
|
+
@sl.input_registers[2] = 55
|
85
|
+
@sl.input_registers.should == [0, 0, 55]
|
86
|
+
|
87
|
+
@mstr.read_input_registers(0, 3) == [1, 2, 55]
|
88
|
+
end
|
89
|
+
|
90
|
+
after(:each) do
|
91
|
+
@sl.stop unless @sl.stoped?
|
92
|
+
@mstr.close unless @mstr.closed?
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libmodbus4r
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aleksey Timin
|
@@ -9,12 +9,12 @@ autorequire: libmodbus4r
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-09-21 00:00:00 +06:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
16
16
|
description:
|
17
|
-
email:
|
17
|
+
email: atimin@gmail.com
|
18
18
|
executables: []
|
19
19
|
|
20
20
|
extensions:
|
@@ -23,28 +23,38 @@ extra_rdoc_files:
|
|
23
23
|
- README
|
24
24
|
- LICENSE
|
25
25
|
- NEWS
|
26
|
-
- TODO
|
27
26
|
files:
|
28
27
|
- lib/modbus4r.rb
|
28
|
+
- examples/use_rtu_slave.rb
|
29
|
+
- examples/use_tcp_slave.rb
|
29
30
|
- examples/use_rtu_master.rb
|
30
31
|
- examples/use_tcp_master.rb
|
31
32
|
- spec/rtu_master_spec.rb
|
32
33
|
- spec/tcp_master_spec.rb
|
33
|
-
-
|
34
|
-
-
|
35
|
-
- ext/
|
36
|
-
- ext/
|
34
|
+
- spec/rtu_slave_spec.rb
|
35
|
+
- spec/tcp_slave_spec.rb
|
36
|
+
- ext/errors.h
|
37
|
+
- ext/slave.c
|
38
|
+
- ext/modbus.h
|
37
39
|
- ext/master.h
|
40
|
+
- ext/modbus4r.h
|
38
41
|
- ext/rtu_master.c
|
39
|
-
- ext/
|
42
|
+
- ext/extconf.rb
|
43
|
+
- ext/slave.h
|
40
44
|
- ext/rtu_master.h
|
45
|
+
- ext/errors.c
|
41
46
|
- ext/master.c
|
42
|
-
- ext/
|
47
|
+
- ext/rtu_slave.c
|
48
|
+
- ext/rtu_slave.h
|
49
|
+
- ext/tcp_master.h
|
50
|
+
- ext/tcp_slave.c
|
51
|
+
- ext/tcp_slave.h
|
52
|
+
- ext/modbus.c
|
53
|
+
- ext/tcp_master.c
|
43
54
|
- ext/modbus4r.c
|
44
55
|
- README
|
45
56
|
- LICENSE
|
46
57
|
- NEWS
|
47
|
-
- TODO
|
48
58
|
has_rdoc: true
|
49
59
|
homepage:
|
50
60
|
licenses: []
|