farmbot-serial 0.0.4 → 0.0.5
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/README.md +20 -1
- data/lib/arduino.rb +17 -9
- data/lib/arduino_event_machine.rb +12 -1
- data/lib/default_serial_port.rb +13 -12
- data/lib/farmbot-serial.rb +1 -1
- data/spec/fixtures/stub_serial_port.rb +2 -4
- data/spec/lib/ramps_arduino_values_received_spec.rb +1 -13
- metadata +2 -6
- data/lib/hardware_interface_arduino_values_received.rb +0 -59
- data/lib/outbound_message.rb +0 -58
- data/spec/lib/ramps_arduino_spec.rb +0 -672
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76fb34947d7e8701118ad070a874e9ccf7318b84
|
4
|
+
data.tar.gz: 97a79c5b63f4fe02d4532f5efd24193fd9b2902f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47c21fdafd0323365b48d24037af53414a7ec65953a66195be9e9a7e2c73c4d366a112ade1d0e86a5c2c0663bb00b81d6c54e8d5d6bb573944e2a4e79cb958c0
|
7
|
+
data.tar.gz: c48d82dd75b5be870756af8d2b8c4906416305fe9f27a50aa15c79948a99e34fe191de80504f308198bb4fb21c26a5e1c52b4cf974e2d43ecf9b79321002f3fc
|
data/README.md
CHANGED
@@ -1 +1,20 @@
|
|
1
|
-
|
1
|
+
# Farmbot-Serial
|
2
|
+
|
3
|
+
A ruby gem for controlling Farmbot via serial line with EventMachine.
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
bot = FB::Arduino.new # Defaults to '/dev/ttyACM0'
|
9
|
+
|
10
|
+
EM.run do
|
11
|
+
# Register bot with event loop.
|
12
|
+
FB::ArduinoEventMachine.connect(bot)
|
13
|
+
# Make the bot flinch every 5 seconds...
|
14
|
+
FB::ArduinoEventMachine.poll(5) { bot.commands.move_relative(1, 1, 1) }
|
15
|
+
# Immediate handling of incoming messages.
|
16
|
+
bot.onmessage { |data| puts "Serial message in: #{data}" }
|
17
|
+
# Stop event loop if connection closes or serial cable is disconnected
|
18
|
+
bot.onclose { EM.stop }
|
19
|
+
end
|
20
|
+
```
|
data/lib/arduino.rb
CHANGED
@@ -1,20 +1,16 @@
|
|
1
|
-
## HARDWARE INTERFACE
|
2
|
-
## ******************
|
3
|
-
|
4
1
|
# Communicate with the arduino using a serial interface
|
5
|
-
# All information is exchanged using a variation of g-code
|
6
|
-
# Parameters are stored in the database
|
7
2
|
module FB
|
8
3
|
class Arduino
|
9
4
|
class EmergencyStop < StandardError; end # Not yet used.
|
10
5
|
|
11
|
-
attr_reader :serial_port, :logger
|
6
|
+
attr_reader :serial_port, :logger, :commands, :queue
|
12
7
|
|
13
8
|
# Initial and provide a serial object, as well as an IO object to send
|
14
9
|
# log messages to. Default SerialPort is DefaultSerialPort. Default logger
|
15
10
|
# is STDOUT
|
16
11
|
def initialize(serial_port = DefaultSerialPort.new, logger = STDOUT)
|
17
|
-
@serial_port, @logger = serial_port, logger
|
12
|
+
@serial_port, @logger, @queue = serial_port, logger, EM::Queue.new
|
13
|
+
@commands = FB::ArduinoCommandSet.new(self)
|
18
14
|
end
|
19
15
|
|
20
16
|
# Log to screen/file/IO stream
|
@@ -23,8 +19,16 @@ module FB
|
|
23
19
|
end
|
24
20
|
|
25
21
|
# Handle incoming text from arduino into pi
|
26
|
-
def
|
27
|
-
|
22
|
+
def onmessage(&blk)
|
23
|
+
raise 'read() requires a block' unless block_given?
|
24
|
+
@queue.pop do |string|
|
25
|
+
log "RECEIVED #{string}"
|
26
|
+
blk.call(string)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def onclose(&blk)
|
31
|
+
@onclose = blk
|
28
32
|
end
|
29
33
|
|
30
34
|
# Send outgoing test to arduino from pi
|
@@ -36,6 +40,10 @@ module FB
|
|
36
40
|
# Handle loss of serial connection
|
37
41
|
def disconnect
|
38
42
|
log "Connection to device lost"
|
43
|
+
@onclose.call if @onclose
|
44
|
+
end
|
45
|
+
|
46
|
+
def reconnect
|
39
47
|
end
|
40
48
|
end
|
41
49
|
end
|
@@ -7,8 +7,14 @@ module FB
|
|
7
7
|
attr_accessor :arduino
|
8
8
|
end
|
9
9
|
|
10
|
+
def self.poll(interval, &blk)
|
11
|
+
raise 'You must pass a block' unless block_given?
|
12
|
+
EventMachine::PeriodicTimer.new(interval.to_f, &blk)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Gets called when data arrives.
|
10
16
|
def receive_data(data)
|
11
|
-
self.class.arduino.
|
17
|
+
self.class.arduino.queue.push(data)
|
12
18
|
end
|
13
19
|
|
14
20
|
# Gets called when the connection breaks.
|
@@ -16,5 +22,10 @@ module FB
|
|
16
22
|
self.class.arduino.disconnect
|
17
23
|
EM.stop
|
18
24
|
end
|
25
|
+
|
26
|
+
def self.connect(arduino)
|
27
|
+
@arduino = arduino
|
28
|
+
EM.attach arduino.serial_port, self
|
29
|
+
end
|
19
30
|
end
|
20
31
|
end
|
data/lib/default_serial_port.rb
CHANGED
@@ -2,18 +2,19 @@ require 'serialport'
|
|
2
2
|
|
3
3
|
# This object creates a Serial IO with sane default, since most FarmBot setups
|
4
4
|
# follow the same serial configuration setup.
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
5
|
+
module FB
|
6
|
+
class DefaultSerialPort < SerialPort
|
7
|
+
COM_PORT = '/dev/ttyACM0'
|
8
|
+
OPTIONS = { "baud" => 115200,
|
9
|
+
"data_bits" => 8,
|
10
|
+
"stop_bits" => 1,
|
11
|
+
"parity" => SerialPort::NONE,
|
12
|
+
"flow_control" => SerialPort::SOFT }
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
# Why `def self::new()`? it was defined that way in the parent class,
|
15
|
+
# therefore, I can't call super in #initialize().
|
16
|
+
def self::new(com = COM_PORT, conf = OPTIONS)
|
17
|
+
super
|
18
|
+
end
|
17
19
|
end
|
18
20
|
end
|
19
|
-
|
data/lib/farmbot-serial.rb
CHANGED
@@ -2,19 +2,7 @@ require 'spec_helper'
|
|
2
2
|
describe FB::HardwareInterfaceArduinoValuesReceived do
|
3
3
|
|
4
4
|
before do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
FB::HardwareInterface.current.status = FB::Status.new
|
10
|
-
|
11
|
-
@ramps = FB::HardwareInterfaceArduinoValuesReceived.new()
|
12
|
-
|
13
|
-
#@ramps = FB::HardwareInterfaceArduino.new(true)
|
14
|
-
|
15
|
-
#@ramps_param = FB::HardwareInterfaceParam.new
|
16
|
-
#@ramps.ramps_param = @ramps_param
|
17
|
-
|
5
|
+
@ramps = FB::HardwareInterfaceArduinoValuesReceived.new
|
18
6
|
end
|
19
7
|
|
20
8
|
it "load parameters" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: farmbot-serial
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Evers
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-03-
|
12
|
+
date: 2015-03-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -124,10 +124,7 @@ files:
|
|
124
124
|
- lib/arduino_event_machine.rb
|
125
125
|
- lib/default_serial_port.rb
|
126
126
|
- lib/farmbot-serial.rb
|
127
|
-
- lib/hardware_interface_arduino_values_received.rb
|
128
|
-
- lib/outbound_message.rb
|
129
127
|
- spec/fixtures/stub_serial_port.rb
|
130
|
-
- spec/lib/ramps_arduino_spec.rb
|
131
128
|
- spec/lib/ramps_arduino_values_received_spec.rb
|
132
129
|
- spec/spec_helper.rb
|
133
130
|
- testcommands.csv
|
@@ -157,6 +154,5 @@ specification_version: 4
|
|
157
154
|
summary: Serial library for Farmbot
|
158
155
|
test_files:
|
159
156
|
- spec/fixtures/stub_serial_port.rb
|
160
|
-
- spec/lib/ramps_arduino_spec.rb
|
161
157
|
- spec/lib/ramps_arduino_values_received_spec.rb
|
162
158
|
- spec/spec_helper.rb
|
@@ -1,59 +0,0 @@
|
|
1
|
-
module FB
|
2
|
-
# Rename to StatusIndicator or StatusRegister
|
3
|
-
class HardwareInterfaceArduinoValuesReceived
|
4
|
-
|
5
|
-
attr_accessor :code, :text, :external_info
|
6
|
-
|
7
|
-
# value holders with the name used in the serial
|
8
|
-
# communucation as they are received from arduino
|
9
|
-
attr_accessor :p , :v, :x , :y , :z, :xa, :xb, :ya, :yb, :za, :zb
|
10
|
-
|
11
|
-
|
12
|
-
def initialize
|
13
|
-
@p = -1
|
14
|
-
@v = 0
|
15
|
-
@x = 0
|
16
|
-
@y = 0
|
17
|
-
@z = 0
|
18
|
-
@xa = 0
|
19
|
-
@xb = 0
|
20
|
-
@ya = 0
|
21
|
-
@yb = 0
|
22
|
-
@za = 0
|
23
|
-
@zb = 0
|
24
|
-
@text = ''
|
25
|
-
@code = 0
|
26
|
-
end
|
27
|
-
# Change name to []=?
|
28
|
-
def load_parameter(name, value)
|
29
|
-
name = name.upcase.to_sym
|
30
|
-
case name
|
31
|
-
when :P
|
32
|
-
@p = value
|
33
|
-
when :V
|
34
|
-
@v = value
|
35
|
-
when :XA
|
36
|
-
@xa = value
|
37
|
-
when :XB
|
38
|
-
@xb = value
|
39
|
-
when :YA
|
40
|
-
@ya = value
|
41
|
-
when :YB
|
42
|
-
@yb = value
|
43
|
-
when :ZA
|
44
|
-
@za = value
|
45
|
-
when :ZB
|
46
|
-
@zb = value
|
47
|
-
when :X
|
48
|
-
@x = value
|
49
|
-
when :Y
|
50
|
-
@y = value
|
51
|
-
when :Z
|
52
|
-
@z = value
|
53
|
-
else
|
54
|
-
raise "Unknown status symbol '#{name}'"
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
59
|
-
end
|
data/lib/outbound_message.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
# An outbound (Pi -> Arduino) status message.
|
2
|
-
# Originally HardwareInterfaceArduinoWriteStatus
|
3
|
-
class OutboundMessage
|
4
|
-
|
5
|
-
attr_accessor :done, :code, :received, :start, :log, :onscreen, :text,
|
6
|
-
:params, :timeout
|
7
|
-
|
8
|
-
def initialize(text)
|
9
|
-
@text = text
|
10
|
-
@done = 0
|
11
|
-
@code = ''
|
12
|
-
@received = ''
|
13
|
-
@text = ''
|
14
|
-
@params = ''
|
15
|
-
@log = false
|
16
|
-
@onscreen = false
|
17
|
-
@start = Time.now
|
18
|
-
@timeout = 5
|
19
|
-
end
|
20
|
-
|
21
|
-
def parse_response!
|
22
|
-
# get the parameter and data part
|
23
|
-
@code = received[0..2].upcase
|
24
|
-
@params = received[3..-1].to_s.upcase.strip
|
25
|
-
end
|
26
|
-
|
27
|
-
# handle the incoming message depending on the first code number
|
28
|
-
#
|
29
|
-
def process_code_and_params
|
30
|
-
|
31
|
-
# process the feedback
|
32
|
-
case self.code
|
33
|
-
|
34
|
-
# command received by arduino
|
35
|
-
when 'R01'
|
36
|
-
self.timeout = 90
|
37
|
-
# command is finished
|
38
|
-
when 'R02'
|
39
|
-
self.done = 1
|
40
|
-
@is_done = true
|
41
|
-
# command is finished with errors
|
42
|
-
when 'R03'
|
43
|
-
self.done = 1
|
44
|
-
@is_done = true
|
45
|
-
# command is still ongoing
|
46
|
-
when 'R04'
|
47
|
-
self.start = Time.now
|
48
|
-
self.timeout = 90
|
49
|
-
# specific feedback that is processes separately
|
50
|
-
else
|
51
|
-
process_value(self.code,self.params)
|
52
|
-
end
|
53
|
-
|
54
|
-
self.received = ''
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
@@ -1,672 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
describe FB::HardwareInterfaceArduino do
|
3
|
-
|
4
|
-
before do
|
5
|
-
FB::HardwareInterface.current.status = FB::Status.new
|
6
|
-
|
7
|
-
@ramps = FB::HardwareInterfaceArduino.new(true)
|
8
|
-
|
9
|
-
@ramps_param = FB::HardwareInterfaceParam.new
|
10
|
-
@ramps.ramps_param = @ramps_param
|
11
|
-
end
|
12
|
-
|
13
|
-
it "read status" do
|
14
|
-
@ramps.connect_board
|
15
|
-
expect(1).to eq(1)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "execute_command" do
|
19
|
-
command = "TEST"
|
20
|
-
|
21
|
-
@ramps.serial_port.test_serial_read = "R01\nR02\n"
|
22
|
-
@ramps.execute_command(command, false, false)
|
23
|
-
|
24
|
-
expect(@ramps.serial_port.test_serial_write).to eq("#{command}\n")
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
it "execute_command with causing an error" do
|
29
|
-
|
30
|
-
FB::HardwareInterface.current.status = nil
|
31
|
-
|
32
|
-
@ramps.serial_port.rts = 0
|
33
|
-
@ramps.execute_command(nil,nil,nil)
|
34
|
-
|
35
|
-
FB::HardwareInterface.current.status = FB::Status.new
|
36
|
-
|
37
|
-
expect { @ramps }.to_not raise_error
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
it "create write status" do
|
42
|
-
|
43
|
-
text = rand(9999999).to_s
|
44
|
-
log = rand(9999999).to_s
|
45
|
-
onscreen = true
|
46
|
-
|
47
|
-
write_status = @ramps.create_write_status(text, log, onscreen)
|
48
|
-
|
49
|
-
expect(write_status.text ).to eq(text )
|
50
|
-
expect(write_status.log ).to eq(log )
|
51
|
-
expect(write_status.onscreen ).to eq(onscreen )
|
52
|
-
end
|
53
|
-
|
54
|
-
it "handle execution exception" do
|
55
|
-
e = Exception.new
|
56
|
-
@ramps.handle_execution_exception(e)
|
57
|
-
expect(1).to eq(1)
|
58
|
-
end
|
59
|
-
|
60
|
-
it "log result of execution" do
|
61
|
-
|
62
|
-
text = rand(9999999).to_s
|
63
|
-
log = rand(9999999).to_s
|
64
|
-
onscreen = true
|
65
|
-
|
66
|
-
write_status = @ramps.create_write_status(text, log, onscreen)
|
67
|
-
|
68
|
-
@ramps.log_result_of_execution(write_status)
|
69
|
-
|
70
|
-
expect(1).to eq(1)
|
71
|
-
end
|
72
|
-
|
73
|
-
it "process feedback" do
|
74
|
-
|
75
|
-
text = rand(9999999).to_s
|
76
|
-
log = rand(9999999).to_s
|
77
|
-
onscreen = false
|
78
|
-
|
79
|
-
@ramps.serial_port.test_serial_read = "R02\n"
|
80
|
-
|
81
|
-
write_status = @ramps.create_write_status(text, log, onscreen)
|
82
|
-
|
83
|
-
@ramps.process_feedback(write_status)
|
84
|
-
@ramps.process_feedback(write_status)
|
85
|
-
@ramps.process_feedback(write_status)
|
86
|
-
@ramps.process_feedback(write_status)
|
87
|
-
@ramps.process_feedback(write_status)
|
88
|
-
|
89
|
-
expect(write_status.done).to eq(1)
|
90
|
-
|
91
|
-
end
|
92
|
-
|
93
|
-
it "and and process characters" do
|
94
|
-
|
95
|
-
text = rand(9999999).to_s
|
96
|
-
log = rand(9999999).to_s
|
97
|
-
onscreen = false
|
98
|
-
|
99
|
-
write_status = @ramps.create_write_status(text, log, onscreen)
|
100
|
-
|
101
|
-
@ramps.add_and_process_characters(write_status, 'R')
|
102
|
-
@ramps.add_and_process_characters(write_status, '0')
|
103
|
-
@ramps.add_and_process_characters(write_status, '2')
|
104
|
-
@ramps.add_and_process_characters(write_status, "\n")
|
105
|
-
|
106
|
-
expect(write_status.done).to eq(1)
|
107
|
-
|
108
|
-
end
|
109
|
-
|
110
|
-
it "process codes and parameters R01" do
|
111
|
-
|
112
|
-
text = rand(9999999).to_s
|
113
|
-
log = rand(9999999).to_s
|
114
|
-
onscreen = false
|
115
|
-
|
116
|
-
write_status = @ramps.create_write_status(text, log, onscreen)
|
117
|
-
write_status.code = "R01"
|
118
|
-
timeout = write_status.timeout
|
119
|
-
|
120
|
-
@ramps.process_code_and_params(write_status)
|
121
|
-
|
122
|
-
expect(write_status.timeout).to be > timeout
|
123
|
-
|
124
|
-
end
|
125
|
-
|
126
|
-
it "process codes and parameters R02" do
|
127
|
-
|
128
|
-
text = rand(9999999).to_s
|
129
|
-
log = rand(9999999).to_s
|
130
|
-
onscreen = false
|
131
|
-
|
132
|
-
write_status = @ramps.create_write_status(text, log, onscreen)
|
133
|
-
write_status.code = "R02"
|
134
|
-
|
135
|
-
@ramps.process_code_and_params(write_status)
|
136
|
-
|
137
|
-
expect(write_status.done).to eq(1)
|
138
|
-
|
139
|
-
end
|
140
|
-
|
141
|
-
it "process codes and parameters R03" do
|
142
|
-
|
143
|
-
text = rand(9999999).to_s
|
144
|
-
log = rand(9999999).to_s
|
145
|
-
onscreen = false
|
146
|
-
|
147
|
-
write_status = @ramps.create_write_status(text, log, onscreen)
|
148
|
-
write_status.code = "R03"
|
149
|
-
|
150
|
-
@ramps.process_code_and_params(write_status)
|
151
|
-
|
152
|
-
expect(write_status.done).to eq(1)
|
153
|
-
end
|
154
|
-
|
155
|
-
it "process codes and parameters R04" do
|
156
|
-
|
157
|
-
text = rand(9999999).to_s
|
158
|
-
log = rand(9999999).to_s
|
159
|
-
onscreen = false
|
160
|
-
|
161
|
-
write_status = @ramps.create_write_status(text, log, onscreen)
|
162
|
-
write_status.code = "R04"
|
163
|
-
timeout = write_status.timeout
|
164
|
-
time = Time.now
|
165
|
-
|
166
|
-
@ramps.process_code_and_params(write_status)
|
167
|
-
|
168
|
-
expect(write_status.timeout).to be > timeout
|
169
|
-
expect(write_status.start).to be > time
|
170
|
-
|
171
|
-
end
|
172
|
-
|
173
|
-
it "process codes and parameters other" do
|
174
|
-
|
175
|
-
text = rand(9999999).to_s
|
176
|
-
log = rand(9999999).to_s
|
177
|
-
onscreen = false
|
178
|
-
par = rand(9999999).to_s
|
179
|
-
|
180
|
-
write_status = @ramps.create_write_status(text, log, onscreen)
|
181
|
-
write_status.code = "R83"
|
182
|
-
write_status.params = par
|
183
|
-
|
184
|
-
@ramps.process_code_and_params(write_status)
|
185
|
-
|
186
|
-
expect(FB::HardwareInterface.current.status.device_version).to eq(write_status.params)
|
187
|
-
|
188
|
-
end
|
189
|
-
|
190
|
-
|
191
|
-
it "prepare serial port" do
|
192
|
-
text = rand(9999999).to_s
|
193
|
-
log = rand(9999999).to_s
|
194
|
-
onscreen = false
|
195
|
-
|
196
|
-
write_status = @ramps.create_write_status(text, log, onscreen)
|
197
|
-
|
198
|
-
@ramps.prepare_serial_port(write_status)
|
199
|
-
expect(1).to eq(1)
|
200
|
-
end
|
201
|
-
|
202
|
-
it "clean serial buffer" do
|
203
|
-
@ramps.serial_port.test_serial_read = rand(9999999).to_s
|
204
|
-
@ramps.clean_serial_buffer
|
205
|
-
expect(@ramps.serial_port.test_serial_read).to eq(nil)
|
206
|
-
|
207
|
-
end
|
208
|
-
|
209
|
-
it "serial port write" do
|
210
|
-
text = rand(9999999).to_s
|
211
|
-
@ramps.serial_port_write(text)
|
212
|
-
expect(@ramps.serial_port.test_serial_write).to eq(text)
|
213
|
-
end
|
214
|
-
|
215
|
-
it "emergency stop off" do
|
216
|
-
@ramps.serial_port.test_serial_write = ""
|
217
|
-
FB::HardwareInterface.current.status.emergency_stop = false
|
218
|
-
@ramps.check_emergency_stop
|
219
|
-
expect(@ramps.serial_port.test_serial_write).to eq("")
|
220
|
-
end
|
221
|
-
|
222
|
-
it "emergency stop on" do
|
223
|
-
@ramps.serial_port.test_serial_write = ""
|
224
|
-
FB::HardwareInterface.current.status.emergency_stop = true
|
225
|
-
@ramps.check_emergency_stop
|
226
|
-
expect(@ramps.serial_port.test_serial_write).to eq("E\n")
|
227
|
-
end
|
228
|
-
|
229
|
-
it "log incoming text" do
|
230
|
-
text = rand(9999999).to_s
|
231
|
-
log = rand(9999999).to_s
|
232
|
-
onscreen = false
|
233
|
-
|
234
|
-
write_status = @ramps.create_write_status(text, log, onscreen)
|
235
|
-
|
236
|
-
@ramps.log_incoming_text(write_status)
|
237
|
-
expect(1).to eq(1)
|
238
|
-
end
|
239
|
-
|
240
|
-
it "process value split two letters" do
|
241
|
-
|
242
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
243
|
-
code = "R81"
|
244
|
-
text = "ZA1 ZB2 XA3 XB4 YA5 YB6"
|
245
|
-
@ramps.process_value_split(code, params, text)
|
246
|
-
|
247
|
-
expect(params.za).to eq(1)
|
248
|
-
expect(params.zb).to eq(2)
|
249
|
-
expect(params.xa).to eq(3)
|
250
|
-
expect(params.xb).to eq(4)
|
251
|
-
expect(params.ya).to eq(5)
|
252
|
-
expect(params.yb).to eq(6)
|
253
|
-
end
|
254
|
-
|
255
|
-
it "process value split one letters" do
|
256
|
-
|
257
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
258
|
-
code = "R99"
|
259
|
-
text = "P1 V2 X3 Y4 Z5"
|
260
|
-
@ramps.process_value_split(code, params, text)
|
261
|
-
|
262
|
-
expect(params.p).to eq(1)
|
263
|
-
expect(params.v).to eq(2)
|
264
|
-
expect(params.x).to eq(3)
|
265
|
-
expect(params.y).to eq(4)
|
266
|
-
expect(params.z).to eq(5)
|
267
|
-
|
268
|
-
end
|
269
|
-
|
270
|
-
it "process value R21" do
|
271
|
-
|
272
|
-
param = 1
|
273
|
-
value = rand(999).to_i
|
274
|
-
|
275
|
-
code = "R21"
|
276
|
-
text = "P#{param} V#{value}"
|
277
|
-
|
278
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
279
|
-
@ramps.process_value_split(code, params, text)
|
280
|
-
@ramps.process_value_R21(params,code)
|
281
|
-
|
282
|
-
par_obj = @ramps_param.get_param_by_id(param)
|
283
|
-
|
284
|
-
expect(par_obj['value_ar']).to eq(value)
|
285
|
-
|
286
|
-
end
|
287
|
-
|
288
|
-
it "process value R23" do
|
289
|
-
|
290
|
-
param = 1
|
291
|
-
value = rand(999).to_i
|
292
|
-
|
293
|
-
code = "R23"
|
294
|
-
text = "P#{param} V#{value}"
|
295
|
-
|
296
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
297
|
-
@ramps.process_value_split(code, params, text)
|
298
|
-
@ramps.process_value_R23(params,code)
|
299
|
-
|
300
|
-
par_obj = @ramps_param.get_param_by_id(param)
|
301
|
-
|
302
|
-
expect(par_obj['value_db']).to eq(value)
|
303
|
-
|
304
|
-
end
|
305
|
-
|
306
|
-
it "process value R41" do
|
307
|
-
|
308
|
-
pinnr = rand(9999999).to_i
|
309
|
-
value = rand(9999999).to_i
|
310
|
-
exinf = rand(9999999).to_i
|
311
|
-
|
312
|
-
code = "R41"
|
313
|
-
text = "P#{pinnr} V#{value}"
|
314
|
-
|
315
|
-
@ramps.external_info = exinf
|
316
|
-
|
317
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
318
|
-
@ramps.process_value_split(code, params, text)
|
319
|
-
@ramps.process_value_R41(params,code)
|
320
|
-
|
321
|
-
pin_value = 0
|
322
|
-
|
323
|
-
|
324
|
-
list.each do |meas|
|
325
|
-
if meas['ext_info'].to_s == exinf.to_s
|
326
|
-
pin_value = meas['value']
|
327
|
-
end
|
328
|
-
end
|
329
|
-
|
330
|
-
expect(pin_value.to_i).to eq(value.to_i)
|
331
|
-
|
332
|
-
end
|
333
|
-
|
334
|
-
it "process value R81 XA" do
|
335
|
-
|
336
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
337
|
-
code = "R81"
|
338
|
-
text = " XA1 XB0 YA0 YB0 ZA0 ZB0 "
|
339
|
-
@ramps.process_value_split(code, params, text)
|
340
|
-
@ramps.process_value_R81(params,code)
|
341
|
-
|
342
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_a).to eq(true)
|
343
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_b).to eq(false)
|
344
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_a).to eq(false)
|
345
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_b).to eq(false)
|
346
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_a).to eq(false)
|
347
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_b).to eq(false)
|
348
|
-
|
349
|
-
end
|
350
|
-
|
351
|
-
it "process value R81 XB" do
|
352
|
-
|
353
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
354
|
-
code = "R81"
|
355
|
-
text = " XA0 XB1 YA0 YB0 ZA0 ZB0 "
|
356
|
-
@ramps.process_value_split(code, params, text)
|
357
|
-
@ramps.process_value_R81(params,code)
|
358
|
-
|
359
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_a).to eq(false)
|
360
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_b).to eq(true)
|
361
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_a).to eq(false)
|
362
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_b).to eq(false)
|
363
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_a).to eq(false)
|
364
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_b).to eq(false)
|
365
|
-
|
366
|
-
end
|
367
|
-
|
368
|
-
it "process value R81 YA" do
|
369
|
-
|
370
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
371
|
-
code = "R81"
|
372
|
-
text = " XA0 XB0 YA1 YB0 ZA0 ZB0 "
|
373
|
-
@ramps.process_value_split(code, params, text)
|
374
|
-
@ramps.process_value_R81(params,code)
|
375
|
-
|
376
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_a).to eq(false)
|
377
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_b).to eq(false)
|
378
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_a).to eq(true)
|
379
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_b).to eq(false)
|
380
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_a).to eq(false)
|
381
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_b).to eq(false)
|
382
|
-
|
383
|
-
end
|
384
|
-
|
385
|
-
it "process value R81 YB" do
|
386
|
-
|
387
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
388
|
-
code = "R81"
|
389
|
-
text = " XA0 XB0 YA0 YB1 ZA0 ZB0 "
|
390
|
-
@ramps.process_value_split(code, params, text)
|
391
|
-
@ramps.process_value_R81(params,code)
|
392
|
-
|
393
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_a).to eq(false)
|
394
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_b).to eq(false)
|
395
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_a).to eq(false)
|
396
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_b).to eq(true)
|
397
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_a).to eq(false)
|
398
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_b).to eq(false)
|
399
|
-
|
400
|
-
end
|
401
|
-
|
402
|
-
it "process value R81 ZA" do
|
403
|
-
|
404
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
405
|
-
code = "R81"
|
406
|
-
text = " XA0 XB0 YA0 YB0 ZA1 ZB0 "
|
407
|
-
@ramps.process_value_split(code, params, text)
|
408
|
-
@ramps.process_value_R81(params,code)
|
409
|
-
|
410
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_a).to eq(false)
|
411
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_b).to eq(false)
|
412
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_a).to eq(false)
|
413
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_b).to eq(false)
|
414
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_a).to eq(true)
|
415
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_b).to eq(false)
|
416
|
-
|
417
|
-
end
|
418
|
-
|
419
|
-
it "process value R81 ZB" do
|
420
|
-
|
421
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
422
|
-
code = "R81"
|
423
|
-
text = " XA0 XB0 YA0 YB0 ZA0 ZB1 "
|
424
|
-
@ramps.process_value_split(code, params, text)
|
425
|
-
@ramps.process_value_R81(params,code)
|
426
|
-
|
427
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_a).to eq(false)
|
428
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_b).to eq(false)
|
429
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_a).to eq(false)
|
430
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_b).to eq(false)
|
431
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_a).to eq(false)
|
432
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_b).to eq(true)
|
433
|
-
|
434
|
-
end
|
435
|
-
|
436
|
-
it "process value R82" do
|
437
|
-
|
438
|
-
x = rand(9999999).to_i
|
439
|
-
y = rand(9999999).to_i
|
440
|
-
z = rand(9999999).to_i
|
441
|
-
|
442
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
443
|
-
code = "R82"
|
444
|
-
text = "X#{x} Y#{y} Z#{z}"
|
445
|
-
@ramps.process_value_split(code, params, text)
|
446
|
-
@ramps.process_value_R82(params,code)
|
447
|
-
|
448
|
-
expect(FB::HardwareInterface.current.status.info_current_x_steps).to eq(x)
|
449
|
-
expect(FB::HardwareInterface.current.status.info_current_y_steps).to eq(y)
|
450
|
-
expect(FB::HardwareInterface.current.status.info_current_z_steps).to eq(z)
|
451
|
-
|
452
|
-
expect(FB::HardwareInterface.current.status.info_current_x ).to eq(x / @ramps_param.axis_x_steps_per_unit)
|
453
|
-
expect(FB::HardwareInterface.current.status.info_current_y ).to eq(y / @ramps_param.axis_y_steps_per_unit)
|
454
|
-
expect(FB::HardwareInterface.current.status.info_current_z ).to eq(z / @ramps_param.axis_z_steps_per_unit)
|
455
|
-
|
456
|
-
end
|
457
|
-
|
458
|
-
it "process value R83" do
|
459
|
-
code = "R83"
|
460
|
-
text = rand(9999999).to_s
|
461
|
-
|
462
|
-
@ramps.process_value_process_R83(code, text)
|
463
|
-
|
464
|
-
expect(FB::HardwareInterface.current.status.device_version).to eq(text)
|
465
|
-
end
|
466
|
-
|
467
|
-
|
468
|
-
it "process value R99" do
|
469
|
-
|
470
|
-
code = "R99"
|
471
|
-
text = rand(9999999).to_s
|
472
|
-
|
473
|
-
@ramps.process_value_process_R99(code, text)
|
474
|
-
end
|
475
|
-
|
476
|
-
it "save pin value" do
|
477
|
-
|
478
|
-
pinnr = rand(9999999).to_i
|
479
|
-
value = rand(9999999).to_i
|
480
|
-
exinf = rand(9999999).to_i
|
481
|
-
|
482
|
-
@ramps.external_info = exinf
|
483
|
-
pin_value = 0
|
484
|
-
|
485
|
-
|
486
|
-
list.each do |meas|
|
487
|
-
if meas['ext_info'].to_s == exinf.to_s
|
488
|
-
pin_value = meas['value']
|
489
|
-
end
|
490
|
-
end
|
491
|
-
|
492
|
-
expect(pin_value.to_i).to eq(value.to_i)
|
493
|
-
end
|
494
|
-
|
495
|
-
it "process value process param list 1" do
|
496
|
-
|
497
|
-
# "process value R21"
|
498
|
-
|
499
|
-
param = 1
|
500
|
-
value = rand(999).to_i
|
501
|
-
|
502
|
-
code = "R21"
|
503
|
-
text = "P#{param} V#{value}"
|
504
|
-
|
505
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
506
|
-
@ramps.process_value_split(code, params, text)
|
507
|
-
@ramps.process_value_process_param_list(params,code)
|
508
|
-
|
509
|
-
par_obj = @ramps_param.get_param_by_id(param)
|
510
|
-
|
511
|
-
expect(par_obj['value_ar']).to eq(value)
|
512
|
-
end
|
513
|
-
|
514
|
-
it "process value process param list 2" do
|
515
|
-
|
516
|
-
# "process value R23"
|
517
|
-
|
518
|
-
param = 1
|
519
|
-
value = rand(999).to_i
|
520
|
-
|
521
|
-
code = "R23"
|
522
|
-
text = "P#{param} V#{value}"
|
523
|
-
|
524
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
525
|
-
@ramps.process_value_split(code, params, text)
|
526
|
-
@ramps.process_value_process_param_list(params,code)
|
527
|
-
|
528
|
-
par_obj = @ramps_param.get_param_by_id(param)
|
529
|
-
|
530
|
-
expect(par_obj['value_db']).to eq(value)
|
531
|
-
|
532
|
-
end
|
533
|
-
|
534
|
-
it "process value process param list 3" do
|
535
|
-
|
536
|
-
# "process value R41"
|
537
|
-
|
538
|
-
pinnr = rand(9999999).to_i
|
539
|
-
value = rand(9999999).to_i
|
540
|
-
exinf = rand(9999999).to_i
|
541
|
-
|
542
|
-
code = "R41"
|
543
|
-
text = "P#{pinnr} V#{value}"
|
544
|
-
|
545
|
-
@ramps.external_info = exinf
|
546
|
-
|
547
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
548
|
-
@ramps.process_value_split(code, params, text)
|
549
|
-
@ramps.process_value_process_param_list(params,code)
|
550
|
-
|
551
|
-
pin_value = 0
|
552
|
-
|
553
|
-
|
554
|
-
list.each do |meas|
|
555
|
-
if meas['ext_info'].to_s == exinf.to_s
|
556
|
-
pin_value = meas['value']
|
557
|
-
end
|
558
|
-
end
|
559
|
-
|
560
|
-
end
|
561
|
-
|
562
|
-
it "process value process text 1" do
|
563
|
-
|
564
|
-
# process_value_process_R83
|
565
|
-
|
566
|
-
code = "R83"
|
567
|
-
text = rand(9999999).to_s
|
568
|
-
|
569
|
-
@ramps.process_value_process_R83(code, text)
|
570
|
-
|
571
|
-
expect(FB::HardwareInterface.current.status.device_version).to eq(text)
|
572
|
-
|
573
|
-
end
|
574
|
-
|
575
|
-
it "process value process text 2" do
|
576
|
-
|
577
|
-
# process_value_process_R99
|
578
|
-
|
579
|
-
code = "R99"
|
580
|
-
text = rand(9999999).to_s
|
581
|
-
|
582
|
-
@ramps.process_value_process_R99(code, text)
|
583
|
-
|
584
|
-
end
|
585
|
-
|
586
|
-
it "process value 1" do
|
587
|
-
|
588
|
-
# "process value R21"
|
589
|
-
|
590
|
-
param = 1
|
591
|
-
value = rand(999).to_i
|
592
|
-
|
593
|
-
code = "R21"
|
594
|
-
text = "P#{param} V#{value}"
|
595
|
-
|
596
|
-
@ramps.process_value(code,text)
|
597
|
-
|
598
|
-
par_obj = @ramps_param.get_param_by_id(param)
|
599
|
-
|
600
|
-
expect(par_obj['value_ar']).to eq(value)
|
601
|
-
|
602
|
-
end
|
603
|
-
|
604
|
-
it "process value 2" do
|
605
|
-
|
606
|
-
|
607
|
-
# process_value_process_R99
|
608
|
-
|
609
|
-
code = "R99"
|
610
|
-
text = rand(9999999).to_s
|
611
|
-
|
612
|
-
@ramps.process_value(code,text)
|
613
|
-
|
614
|
-
end
|
615
|
-
|
616
|
-
it "process value 3" do
|
617
|
-
|
618
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
619
|
-
code = "R81"
|
620
|
-
text = " XA0 XB0 YA0 YB0 ZA0 ZB1 "
|
621
|
-
@ramps.process_value(code,text)
|
622
|
-
|
623
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_a).to eq(false)
|
624
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_b).to eq(false)
|
625
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_a).to eq(false)
|
626
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_b).to eq(false)
|
627
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_a).to eq(false)
|
628
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_b).to eq(true)
|
629
|
-
|
630
|
-
end
|
631
|
-
|
632
|
-
it "process value named parameters 1" do
|
633
|
-
|
634
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
635
|
-
code = "R81"
|
636
|
-
text = " XA0 XB0 YA0 YB0 ZA0 ZB1 "
|
637
|
-
@ramps.process_value_split(code, params, text)
|
638
|
-
@ramps.process_value_process_named_params(params,code)
|
639
|
-
|
640
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_a).to eq(false)
|
641
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_x_b).to eq(false)
|
642
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_a).to eq(false)
|
643
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_y_b).to eq(false)
|
644
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_a).to eq(false)
|
645
|
-
expect(FB::HardwareInterface.current.status.info_end_stop_z_b).to eq(true)
|
646
|
-
|
647
|
-
end
|
648
|
-
|
649
|
-
it "process value named parameters 2" do
|
650
|
-
|
651
|
-
x = rand(9999999).to_i
|
652
|
-
y = rand(9999999).to_i
|
653
|
-
z = rand(9999999).to_i
|
654
|
-
|
655
|
-
params = FB::HardwareInterfaceArduinoValuesReceived.new
|
656
|
-
code = "R82"
|
657
|
-
text = "X#{x} Y#{y} Z#{z}"
|
658
|
-
@ramps.process_value_split(code, params, text)
|
659
|
-
@ramps.process_value_process_named_params(params,code)
|
660
|
-
|
661
|
-
expect(FB::HardwareInterface.current.status.info_current_x_steps).to eq(x)
|
662
|
-
expect(FB::HardwareInterface.current.status.info_current_y_steps).to eq(y)
|
663
|
-
expect(FB::HardwareInterface.current.status.info_current_z_steps).to eq(z)
|
664
|
-
|
665
|
-
expect(FB::HardwareInterface.current.status.info_current_x ).to eq(x / @ramps_param.axis_x_steps_per_unit)
|
666
|
-
expect(FB::HardwareInterface.current.status.info_current_y ).to eq(y / @ramps_param.axis_y_steps_per_unit)
|
667
|
-
expect(FB::HardwareInterface.current.status.info_current_z ).to eq(z / @ramps_param.axis_z_steps_per_unit)
|
668
|
-
|
669
|
-
end
|
670
|
-
|
671
|
-
end
|
672
|
-
|