rmodbus-ccutrer 2.0.0 → 2.1.0
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 +4 -4
- data/Rakefile +4 -24
- data/lib/rmodbus/client.rb +2 -2
- data/lib/rmodbus/debug.rb +4 -3
- data/lib/rmodbus/rtu.rb +1 -2
- data/lib/rmodbus/rtu_server.rb +1 -1
- data/lib/rmodbus/rtu_via_tcp_server.rb +1 -1
- data/lib/rmodbus/sp.rb +6 -11
- data/lib/rmodbus/tcp_server.rb +1 -1
- data/lib/rmodbus/version.rb +1 -1
- data/spec/client_spec.rb +4 -4
- data/spec/logging_spec.rb +15 -22
- data/spec/proxy_spec.rb +4 -4
- data/spec/rtu_client_spec.rb +5 -11
- data/spec/rtu_server_spec.rb +2 -4
- data/spec/rtu_via_tcp_server_spec.rb +0 -5
- metadata +13 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3f1eb7faa783c285b4152b693b9f2ea3b9639917e589714b4bea416e483998e
|
4
|
+
data.tar.gz: 0e9005770dab3ca0336583e59a9c1c7d098b11267199a83e1d65339b7bd68a6c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ee2ba1774e37c5e111fc0242056a5c8fb3cb3cec0b7243782e54f06e7c9d0d4e595bc51b7c1e9dea13f7d93b52ce83a2d23eec252f22c7e24e57df34e166fb7
|
7
|
+
data.tar.gz: 5c4732bd7e8edbd18e8cffb942911d5c7cf161beb8c0935fbb2ed521505adfe607fe46dc6f80e8ea74cb6c1a5f36641f52364f43eb51c06cf90a77df50f1683e
|
data/Rakefile
CHANGED
@@ -1,29 +1,9 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
require 'rubygems'
|
4
|
-
require 'bundler'
|
5
3
|
begin
|
6
|
-
|
7
|
-
rescue
|
8
|
-
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
-
exit e.status_code
|
4
|
+
require 'bundler/setup'
|
5
|
+
rescue LoadError
|
6
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
11
7
|
end
|
12
8
|
|
13
|
-
|
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
|
9
|
+
Bundler::GemHelper.install_tasks
|
data/lib/rmodbus/client.rb
CHANGED
@@ -17,7 +17,7 @@ module ModBus
|
|
17
17
|
# @return [Client] client object
|
18
18
|
def initialize(*args, &block)
|
19
19
|
# Defaults
|
20
|
-
@
|
20
|
+
@logger = nil
|
21
21
|
@raise_exception_on_mismatch = false
|
22
22
|
@read_retry_timeout = 1
|
23
23
|
@read_retries = 1
|
@@ -49,7 +49,7 @@ module ModBus
|
|
49
49
|
# @return [Slave] slave object
|
50
50
|
def with_slave(uid, &block)
|
51
51
|
slave = get_slave(uid, @io)
|
52
|
-
slave.
|
52
|
+
slave.logger = logger
|
53
53
|
slave.raise_exception_on_mismatch = raise_exception_on_mismatch
|
54
54
|
slave.read_retries = read_retries
|
55
55
|
slave.read_retry_timeout = read_retry_timeout
|
data/lib/rmodbus/debug.rb
CHANGED
@@ -2,15 +2,16 @@ require 'time'
|
|
2
2
|
|
3
3
|
module ModBus
|
4
4
|
module Debug
|
5
|
-
attr_accessor :
|
6
|
-
:read_retries, :read_retry_timeout
|
5
|
+
attr_accessor :raise_exception_on_mismatch,
|
6
|
+
:read_retries, :read_retry_timeout,
|
7
|
+
:logger
|
7
8
|
|
8
9
|
|
9
10
|
private
|
10
11
|
# Put log message on standard output
|
11
12
|
# @param [String] msg message for log
|
12
13
|
def log(msg)
|
13
|
-
|
14
|
+
logger&.debug(msg)
|
14
15
|
end
|
15
16
|
|
16
17
|
# Convert string of byte to string for log
|
data/lib/rmodbus/rtu.rb
CHANGED
@@ -8,8 +8,7 @@ module ModBus
|
|
8
8
|
# We have to read specific amounts of numbers of bytes from the network depending on the function code and content
|
9
9
|
def read_rtu_response(io)
|
10
10
|
# Read the slave_id and function code
|
11
|
-
msg = read(io, 2)
|
12
|
-
log logging_bytes(msg)
|
11
|
+
msg = read(io, 2)
|
13
12
|
|
14
13
|
function_code = msg.getbyte(1)
|
15
14
|
case function_code
|
data/lib/rmodbus/rtu_server.rb
CHANGED
data/lib/rmodbus/sp.rb
CHANGED
@@ -1,36 +1,31 @@
|
|
1
1
|
begin
|
2
|
-
require 'serialport'
|
2
|
+
require 'ccutrer-serialport'
|
3
3
|
rescue Exception => e
|
4
|
-
warn "[WARNING] Install `serialport` gem for use RTU protocols"
|
4
|
+
warn "[WARNING] Install `ccutrer-serialport` gem for use RTU protocols"
|
5
5
|
end
|
6
6
|
|
7
7
|
module ModBus
|
8
8
|
module SP
|
9
9
|
attr_reader :port, :baud, :data_bits, :stop_bits, :parity, :read_timeout
|
10
10
|
# Open serial port
|
11
|
-
# @param [String] port name serial ports ("/dev/ttyS0"
|
11
|
+
# @param [String] port name serial ports ("/dev/ttyS0")
|
12
12
|
# @param [Integer] baud rate serial port (default 9600)
|
13
13
|
# @param [Hash] opts the options of serial port
|
14
14
|
#
|
15
15
|
# @option opts [Integer] :data_bits from 5 to 8
|
16
16
|
# @option opts [Integer] :stop_bits 1 or 2
|
17
|
-
# @option opts [Integer] :parity
|
18
|
-
# @option opts [Integer] :read_timeout default 100 ms
|
17
|
+
# @option opts [Integer] :parity :none, :even or :odd
|
19
18
|
# @return [SerialPort] io serial port
|
20
19
|
def open_serial_port(port, baud, opts = {})
|
21
20
|
@port, @baud = port, baud
|
22
21
|
|
23
|
-
@data_bits, @stop_bits, @parity
|
22
|
+
@data_bits, @stop_bits, @parity = 8, 1, :none
|
24
23
|
|
25
24
|
@data_bits = opts[:data_bits] unless opts[:data_bits].nil?
|
26
25
|
@stop_bits = opts[:stop_bits] unless opts[:stop_bits].nil?
|
27
26
|
@parity = opts[:parity] unless opts[:parity].nil?
|
28
|
-
@read_timeout = opts[:read_timeout] unless opts[:read_timeout].nil?
|
29
27
|
|
30
|
-
|
31
|
-
io.flow_control = SerialPort::NONE
|
32
|
-
io.read_timeout = @read_timeout
|
33
|
-
io
|
28
|
+
CCutrer::SerialPort.new(@port, baud: @baud, data_bits: @data_bits, stop_bits: @stop_bits, parity: @parity)
|
34
29
|
end
|
35
30
|
end
|
36
31
|
end
|
data/lib/rmodbus/tcp_server.rb
CHANGED
data/lib/rmodbus/version.rb
CHANGED
data/spec/client_spec.rb
CHANGED
@@ -39,13 +39,13 @@ describe ModBus::Client do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'should common for all slaves :debug flag' do
|
42
|
-
@cl.
|
42
|
+
@cl.logger = true
|
43
43
|
@cl.with_slave(1) do |slave_1|
|
44
|
-
slave_1.
|
44
|
+
slave_1.logger.should eq true
|
45
45
|
end
|
46
46
|
@cl.with_slave(2) do |slave_2|
|
47
|
-
slave_2.
|
48
|
-
slave_2.
|
47
|
+
slave_2.logger = false
|
48
|
+
slave_2.logger.should eq false
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
data/spec/logging_spec.rb
CHANGED
@@ -11,19 +11,19 @@ describe ModBus::TCPClient do
|
|
11
11
|
@sock.stub(:read).with(0).and_return('')
|
12
12
|
|
13
13
|
@slave = ModBus::TCPClient.new('127.0.0.1', 1502).with_slave(@uid)
|
14
|
-
@slave.
|
14
|
+
@slave.logger = double("logger")
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'should log rec\send bytes' do
|
18
18
|
request, response = "\x3\x0\x6b\x0\x3", "\x3\x6\x2\x2b\x0\x0\x0\x64"
|
19
19
|
mock_query(request,response)
|
20
|
-
|
21
|
-
|
20
|
+
@slave.logger.should_receive(:debug).with("Tx (12 bytes): [00][01][00][00][00][06][01][03][00][6b][00][03]")
|
21
|
+
@slave.logger.should_receive(:debug).with("Rx (15 bytes): [00][01][00][00][00][09][01][03][06][02][2b][00][00][00][64]")
|
22
22
|
@slave.query(request)
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should don't logging if debug disable" do
|
26
|
-
@slave.
|
26
|
+
@slave.logger = nil
|
27
27
|
request, response = "\x3\x0\x6b\x0\x3", "\x3\x6\x2\x2b\x0\x0\x0\x64"
|
28
28
|
mock_query(request,response)
|
29
29
|
@slave.query(request)
|
@@ -35,10 +35,10 @@ describe ModBus::TCPClient do
|
|
35
35
|
@sock.should_receive(:read).with(7).and_return("\000\002\000\000\000\001" + @uid.chr)
|
36
36
|
@sock.should_receive(:read).with(7).and_return("\000\001\000\000\000\001" + @uid.chr)
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
38
|
+
@slave.logger.should_receive(:debug).with("Tx (7 bytes): [00][01][00][00][00][01][01]")
|
39
|
+
@slave.logger.should_receive(:debug).with("Rx (7 bytes): [00][02][00][00][00][01][01]")
|
40
|
+
@slave.logger.should_receive(:debug).with("Transaction number mismatch. A packet is ignored.")
|
41
|
+
@slave.logger.should_receive(:debug).with("Rx (7 bytes): [00][01][00][00][00][01][01]")
|
42
42
|
|
43
43
|
@slave.query('')
|
44
44
|
end
|
@@ -52,35 +52,28 @@ describe ModBus::TCPClient do
|
|
52
52
|
end
|
53
53
|
|
54
54
|
begin
|
55
|
-
require "serialport"
|
55
|
+
require "ccutrer-serialport"
|
56
56
|
describe ModBus::RTUClient do
|
57
57
|
before do
|
58
58
|
@sp = double('Serial port')
|
59
|
+
allow(@sp).to receive(:flush)
|
59
60
|
|
60
|
-
SerialPort.should_receive(:new).with("/dev/port1", 9600, 7, 2,
|
61
|
-
SerialPort.stub(:public_method_defined?).with(:flush_input).and_return(true)
|
61
|
+
CCutrer::SerialPort.should_receive(:new).with("/dev/port1", baud: 9600, data_bits: 7, stop_bits: 2, parity: :odd).and_return(@sp)
|
62
62
|
|
63
|
-
@
|
64
|
-
@sp.should_receive(:flow_control=).with(SerialPort::NONE)
|
65
|
-
@sp.stub(:read_timeout=)
|
66
|
-
@sp.stub(:flush_input)
|
67
|
-
|
68
|
-
@slave = ModBus::RTUClient.new("/dev/port1", 9600, :data_bits => 7, :stop_bits => 2, :parity => SerialPort::ODD).with_slave(1)
|
63
|
+
@slave = ModBus::RTUClient.new("/dev/port1", 9600, :data_bits => 7, :stop_bits => 2, :parity => :odd).with_slave(1)
|
69
64
|
@slave.read_retries = 0
|
70
|
-
|
71
65
|
end
|
72
66
|
|
73
67
|
it 'should log rec\send bytes' do
|
74
68
|
request = "\x3\x0\x1\x0\x1"
|
75
69
|
@sp.should_receive(:write).with("\1#{request}\xd5\xca")
|
76
|
-
@sp.should_receive(:flush_input) # Clean a garbage
|
77
70
|
@sp.should_receive(:read).with(2).and_return("\x1\x3")
|
78
71
|
@sp.should_receive(:read).with(1).and_return("\x2")
|
79
72
|
@sp.should_receive(:read).with(4).and_return("\xff\xff\xb9\xf4")
|
80
73
|
|
81
|
-
@slave.
|
82
|
-
|
83
|
-
|
74
|
+
@slave.logger = double("logger")
|
75
|
+
@slave.logger.should_receive(:debug).with("Tx (8 bytes): [01][03][00][01][00][01][d5][ca]")
|
76
|
+
@slave.logger.should_receive(:debug).with("Rx (7 bytes): [01][03][02][ff][ff][b9][f4]")
|
84
77
|
|
85
78
|
@slave.query(request).should == "\xff\xff"
|
86
79
|
end
|
data/spec/proxy_spec.rb
CHANGED
@@ -12,7 +12,7 @@ describe Array do
|
|
12
12
|
|
13
13
|
# Handle all of the coil methods
|
14
14
|
it "should call read_coil" do
|
15
|
-
@slave.should_receive(:read_coil).with(0
|
15
|
+
@slave.should_receive(:read_coil).with(0)
|
16
16
|
@coil_proxy[0]
|
17
17
|
end
|
18
18
|
it "should call read_coils" do
|
@@ -31,7 +31,7 @@ describe Array do
|
|
31
31
|
|
32
32
|
# Discrete input tests
|
33
33
|
it "should call read_discrete_input" do
|
34
|
-
@slave.should_receive(:read_discrete_input).with(0
|
34
|
+
@slave.should_receive(:read_discrete_input).with(0)
|
35
35
|
@discrete_input_proxy[0]
|
36
36
|
end
|
37
37
|
|
@@ -43,7 +43,7 @@ describe Array do
|
|
43
43
|
|
44
44
|
# Holding Register Tess
|
45
45
|
it "should call read_holding_register" do
|
46
|
-
@slave.should_receive(:read_holding_register).with(0
|
46
|
+
@slave.should_receive(:read_holding_register).with(0)
|
47
47
|
@holding_register_proxy[0]
|
48
48
|
end
|
49
49
|
it "should call read_holding_registers" do
|
@@ -62,7 +62,7 @@ describe Array do
|
|
62
62
|
|
63
63
|
# Input Register Tests
|
64
64
|
it "should call read_discrete_input" do
|
65
|
-
@slave.should_receive(:read_input_register).with(0
|
65
|
+
@slave.should_receive(:read_input_register).with(0)
|
66
66
|
@input_register_proxy[0]
|
67
67
|
end
|
68
68
|
|
data/spec/rtu_client_spec.rb
CHANGED
@@ -4,16 +4,11 @@ require 'rmodbus'
|
|
4
4
|
describe ModBus::RTUClient do
|
5
5
|
before do
|
6
6
|
@sp = double('Serial port')
|
7
|
+
allow(@sp).to receive(:flush)
|
7
8
|
|
8
|
-
SerialPort.should_receive(:new).with("/dev/port1", 9600, 8, 1,
|
9
|
-
SerialPort.stub(:public_method_defined?).with(:flush_input).and_return(true)
|
9
|
+
CCutrer::SerialPort.should_receive(:new).with("/dev/port1", baud: 9600, data_bits: 8, stop_bits: 1, parity: :none).and_return(@sp)
|
10
10
|
|
11
|
-
@
|
12
|
-
@sp.stub(:class).and_return(SerialPort)
|
13
|
-
@sp.should_receive(:flow_control=).with(SerialPort::NONE)
|
14
|
-
@sp.stub(:flush_input)
|
15
|
-
|
16
|
-
@cl = ModBus::RTUClient.new("/dev/port1", 9600, :data_bits => 8, :stop_bits => 1, :parity => SerialPort::NONE)
|
11
|
+
@cl = ModBus::RTUClient.new("/dev/port1", 9600, :data_bits => 8, :stop_bits => 1, :parity => :none)
|
17
12
|
@slave = @cl.with_slave(1)
|
18
13
|
@slave.read_retries = 1
|
19
14
|
end
|
@@ -41,16 +36,15 @@ describe ModBus::RTUClient do
|
|
41
36
|
|
42
37
|
it 'should sugar connect method' do
|
43
38
|
port, baud = "/dev/port1", 4800
|
44
|
-
SerialPort.should_receive(:new).with(port, baud, 8, 1,
|
39
|
+
CCutrer::SerialPort.should_receive(:new).with(port, baud: baud, data_bits: 8, stop_bits: 1, parity: :none).and_return(@sp)
|
45
40
|
@sp.should_receive(:closed?).and_return(false)
|
46
41
|
@sp.should_receive(:close)
|
47
|
-
@sp.should_receive(:flow_control=).with(SerialPort::NONE)
|
48
42
|
ModBus::RTUClient.connect(port, baud) do |cl|
|
49
43
|
cl.port.should == port
|
50
44
|
cl.baud.should == baud
|
51
45
|
cl.data_bits.should == 8
|
52
46
|
cl.stop_bits.should == 1
|
53
|
-
cl.parity.should ==
|
47
|
+
cl.parity.should == :none
|
54
48
|
end
|
55
49
|
end
|
56
50
|
|
data/spec/rtu_server_spec.rb
CHANGED
@@ -4,9 +4,7 @@ require 'rmodbus'
|
|
4
4
|
describe ModBus::RTUServer do
|
5
5
|
before do
|
6
6
|
@sp = double('SerialPort')
|
7
|
-
SerialPort.should_receive(:new).with('/dev/ttyS0', 4800, 7, 2,
|
8
|
-
@sp.stub(:read_timeout=)
|
9
|
-
@sp.should_receive(:flow_control=).with(SerialPort::NONE)
|
7
|
+
CCutrer::SerialPort.should_receive(:new).with('/dev/ttyS0', baud: 4800, data_bits: 7, stop_bits: 2, parity: :none).and_return(@sp)
|
10
8
|
|
11
9
|
@server = ModBus::RTUServer.new('/dev/ttyS0', 4800, :data_bits => 7, :stop_bits => 2)
|
12
10
|
@slave = @server.with_slave(1)
|
@@ -26,6 +24,6 @@ describe ModBus::RTUServer do
|
|
26
24
|
@server.baud.should == 4800
|
27
25
|
@server.data_bits.should == 7
|
28
26
|
@server.stop_bits.should == 2
|
29
|
-
@server.parity.should ==
|
27
|
+
@server.parity.should == :none
|
30
28
|
end
|
31
29
|
end
|
@@ -24,10 +24,6 @@ describe ModBus::RTUViaTCPServer do
|
|
24
24
|
@io = @cl.instance_variable_get(:@io)
|
25
25
|
end
|
26
26
|
|
27
|
-
before do
|
28
|
-
@server.debug = false
|
29
|
-
end
|
30
|
-
|
31
27
|
it "should have options :host" do
|
32
28
|
host = '192.168.0.1'
|
33
29
|
srv = ModBus::RTUViaTCPServer.new(1010, :host => '192.168.0.1')
|
@@ -43,7 +39,6 @@ describe ModBus::RTUViaTCPServer do
|
|
43
39
|
it "should properly ignore responses from other slaves" do
|
44
40
|
request = "\x10\x03\x0\x1\x0\x1\xd6\x8b"
|
45
41
|
response = "\x10\x83\x1\xd0\xf5"
|
46
|
-
@server.debug = true
|
47
42
|
@server.should receive(:log).ordered.with("Server RX (8 bytes): [10][03][00][01][00][01][d6][8b]")
|
48
43
|
@server.should receive(:log).ordered.with("Server RX function 3 to 16: {:quant=>1, :addr=>1}")
|
49
44
|
@server.should receive(:log).ordered.with("Server RX (5 bytes): [10][83][01][d0][f5]")
|
metadata
CHANGED
@@ -1,99 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rmodbus-ccutrer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
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: 2021-08-
|
11
|
+
date: 2021-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 12.3.3
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 12.3.3
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec
|
43
15
|
requirement: !ruby/object:Gem::Requirement
|
44
16
|
requirements:
|
45
17
|
- - "~>"
|
46
18
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
19
|
+
version: '13.0'
|
48
20
|
type: :development
|
49
21
|
prerelease: false
|
50
22
|
version_requirements: !ruby/object:Gem::Requirement
|
51
23
|
requirements:
|
52
24
|
- - "~>"
|
53
25
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
26
|
+
version: '13.0'
|
55
27
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
28
|
+
name: bundler
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|
58
30
|
requirements:
|
59
31
|
- - "~>"
|
60
32
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
33
|
+
version: '2.2'
|
62
34
|
type: :development
|
63
35
|
prerelease: false
|
64
36
|
version_requirements: !ruby/object:Gem::Requirement
|
65
37
|
requirements:
|
66
38
|
- - "~>"
|
67
39
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
40
|
+
version: '2.2'
|
69
41
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
42
|
+
name: rspec
|
71
43
|
requirement: !ruby/object:Gem::Requirement
|
72
44
|
requirements:
|
73
45
|
- - "~>"
|
74
46
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
47
|
+
version: '2.99'
|
76
48
|
type: :development
|
77
49
|
prerelease: false
|
78
50
|
version_requirements: !ruby/object:Gem::Requirement
|
79
51
|
requirements:
|
80
52
|
- - "~>"
|
81
53
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
54
|
+
version: '2.99'
|
83
55
|
- !ruby/object:Gem::Dependency
|
84
|
-
name: serialport
|
56
|
+
name: ccutrer-serialport
|
85
57
|
requirement: !ruby/object:Gem::Requirement
|
86
58
|
requirements:
|
87
59
|
- - "~>"
|
88
60
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
61
|
+
version: 1.0.0
|
90
62
|
type: :development
|
91
63
|
prerelease: false
|
92
64
|
version_requirements: !ruby/object:Gem::Requirement
|
93
65
|
requirements:
|
94
66
|
- - "~>"
|
95
67
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
68
|
+
version: 1.0.0
|
97
69
|
- !ruby/object:Gem::Dependency
|
98
70
|
name: gserver
|
99
71
|
requirement: !ruby/object:Gem::Requirement
|