phidgets-ffi 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/examples/HelloWorld.rb +3 -3
- data/examples/accelerometer.rb +6 -7
- data/examples/advanced_servo.rb +6 -10
- data/examples/analog.rb +9 -10
- data/examples/bridge.rb +10 -12
- data/examples/dictionary.rb +28 -25
- data/examples/encoder.rb +15 -12
- data/examples/frequency_counter.rb +11 -12
- data/examples/gps.rb +15 -17
- data/examples/interface_kit_with_block.rb +10 -16
- data/examples/interface_kit_without_block.rb +17 -18
- data/examples/ir.rb +38 -45
- data/examples/led.rb +8 -7
- data/examples/manager.rb +3 -5
- data/examples/motor_control.rb +19 -24
- data/examples/raw-ffi/dictionary.rb +1 -1
- data/examples/raw-ffi/interface_kit.rb +1 -1
- data/examples/raw-ffi/library_version.rb +0 -1
- data/examples/raw-ffi/manager.rb +3 -3
- data/examples/rfid.rb +11 -13
- data/examples/servo.rb +4 -6
- data/examples/spatial.rb +17 -18
- data/examples/stepper.rb +16 -18
- data/examples/temperature_sensor.rb +8 -10
- data/examples/text_lcd.rb +22 -24
- data/lib/phidgets-ffi/ffi/common.rb +1 -1
- data/lib/phidgets-ffi/ffi/manager.rb +1 -1
- data/lib/phidgets-ffi/version.rb +1 -1
- metadata +2 -2
data/examples/HelloWorld.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
=begin
|
1
|
+
=begin
|
2
2
|
Phidget Hello World Program for all devices
|
3
3
|
(c) Phidgets 2012
|
4
4
|
=end
|
5
|
-
|
5
|
+
|
6
6
|
require 'rubygems'
|
7
7
|
require 'phidgets-ffi'
|
8
8
|
|
@@ -31,6 +31,6 @@ puts 'Phidget Simple Playground (plug and unplug devices)'
|
|
31
31
|
puts 'Please Enter to end anytime...'
|
32
32
|
|
33
33
|
gets.chomp
|
34
|
-
|
34
|
+
|
35
35
|
puts 'Closing...'
|
36
36
|
manager.close
|
data/examples/accelerometer.rb
CHANGED
@@ -3,15 +3,14 @@ require 'phidgets-ffi'
|
|
3
3
|
|
4
4
|
puts "Library Version: #{Phidgets::FFI.library_version}"
|
5
5
|
|
6
|
-
accel = Phidgets::Accelerometer.new
|
6
|
+
accel = Phidgets::Accelerometer.new
|
7
7
|
|
8
8
|
puts "Wait for PhidgetAccelerometer to attached..."
|
9
|
-
|
9
|
+
|
10
10
|
#The following method runs when the PhidgetAccelerometer is attached to the system
|
11
11
|
accel.on_attach do |device, obj|
|
12
|
-
|
13
|
-
|
14
|
-
puts "Class: #{device.device_class}"
|
12
|
+
puts "Device attributes: #{device.attributes} attached"
|
13
|
+
puts "Class: #{device.device_class}"
|
15
14
|
puts "Id: #{device.id}"
|
16
15
|
puts "Serial number: #{device.serial_number}"
|
17
16
|
puts "Version: #{device.version}"
|
@@ -22,7 +21,7 @@ accel.on_attach do |device, obj|
|
|
22
21
|
puts "Acceleration min[0]: #{device.axes[0].acceleration_min}"
|
23
22
|
puts "Acceleration max[0]: #{device.axes[0].acceleration_max}"
|
24
23
|
end
|
25
|
-
|
24
|
+
|
26
25
|
accel.on_detach do |device, obj|
|
27
26
|
puts "#{device.attributes.inspect} detached"
|
28
27
|
end
|
@@ -33,7 +32,7 @@ end
|
|
33
32
|
|
34
33
|
accel.on_acceleration_change do |device, axis, value|
|
35
34
|
puts "Axis #{axis.index}'s acceleration has changed to #{value}"
|
36
|
-
end
|
35
|
+
end
|
37
36
|
|
38
37
|
sleep 10
|
39
38
|
accel.close
|
data/examples/advanced_servo.rb
CHANGED
@@ -4,14 +4,13 @@ require 'phidgets-ffi'
|
|
4
4
|
puts "Library Version: #{Phidgets::FFI.library_version}"
|
5
5
|
|
6
6
|
adv = Phidgets::AdvancedServo.new
|
7
|
-
|
7
|
+
|
8
8
|
puts "Wait for PhidgetAdvancedServo to attached..."
|
9
9
|
|
10
10
|
#The following method runs when the PhidgetAdvancedServo is attached to the system
|
11
11
|
adv.on_attach do |device, obj|
|
12
|
-
|
13
|
-
|
14
|
-
puts "Class: #{device.device_class}"
|
12
|
+
puts "Device attributes: #{device.attributes} attached"
|
13
|
+
puts "Class: #{device.device_class}"
|
15
14
|
puts "Id: #{device.id}"
|
16
15
|
puts "Serial number: #{device.serial_number}"
|
17
16
|
puts "Version: #{device.version}"
|
@@ -19,9 +18,8 @@ adv.on_attach do |device, obj|
|
|
19
18
|
|
20
19
|
device.advanced_servos[0].engaged = true
|
21
20
|
sleep 1 #allow time for engaged to be set before event ends
|
22
|
-
|
23
21
|
end
|
24
|
-
|
22
|
+
|
25
23
|
adv.on_detach do |device, obj|
|
26
24
|
puts "#{device.attributes.inspect} detached"
|
27
25
|
end
|
@@ -45,7 +43,6 @@ end
|
|
45
43
|
sleep 3
|
46
44
|
|
47
45
|
if(adv.attached?)
|
48
|
-
|
49
46
|
max = adv.advanced_servos[0].position_max
|
50
47
|
3.times do
|
51
48
|
adv.advanced_servos[0].position = rand(max)
|
@@ -53,7 +50,7 @@ if(adv.attached?)
|
|
53
50
|
end
|
54
51
|
|
55
52
|
puts "Setting servo parameters: #{adv.advanced_servos[0].set_servo_parameters(600, 2000, 120, 1500)}"
|
56
|
-
|
53
|
+
|
57
54
|
puts "Acceleration: #{adv.advanced_servos[0].acceleration}"
|
58
55
|
puts "Acceleration min: #{adv.advanced_servos[0].acceleration_min}"
|
59
56
|
puts "Acceleration max: #{adv.advanced_servos[0].acceleration_max}"
|
@@ -77,7 +74,7 @@ if(adv.attached?)
|
|
77
74
|
adv.advanced_servos[0].type = Phidgets::FFI::AdvancedServoType[:default]
|
78
75
|
puts "Type: #{adv.advanced_servos[0].type}"
|
79
76
|
|
80
|
-
begin
|
77
|
+
begin
|
81
78
|
puts "Position: #{adv.advanced_servos[0].position}" #An error is raised when the position is unknown
|
82
79
|
rescue Phidgets::Error::UnknownVal => e
|
83
80
|
puts "Exception caught: #{e.message}"
|
@@ -85,7 +82,6 @@ if(adv.attached?)
|
|
85
82
|
|
86
83
|
puts "Position max: #{adv.advanced_servos[0].position_max}"
|
87
84
|
puts "Position min: #{adv.advanced_servos[0].position_min}"
|
88
|
-
|
89
85
|
end
|
90
86
|
|
91
87
|
sleep 2
|
data/examples/analog.rb
CHANGED
@@ -4,14 +4,13 @@ require 'phidgets-ffi'
|
|
4
4
|
puts "Library Version: #{Phidgets::FFI.library_version}"
|
5
5
|
|
6
6
|
an = Phidgets::Analog.new
|
7
|
-
|
7
|
+
|
8
8
|
puts "Wait for PhidgetAnalog to attached..."
|
9
|
-
|
9
|
+
|
10
10
|
#The following method runs when the PhidgetAnalog is attached to the system
|
11
11
|
an.on_attach do |device, obj|
|
12
|
-
|
13
|
-
|
14
|
-
puts "Class: #{device.device_class}"
|
12
|
+
puts "Device attributes: #{device.attributes} attached"
|
13
|
+
puts "Class: #{device.device_class}"
|
15
14
|
puts "Id: #{device.id}"
|
16
15
|
puts "Serial number: #{device.serial_number}"
|
17
16
|
puts "Version: #{device.version}"
|
@@ -19,17 +18,17 @@ an.on_attach do |device, obj|
|
|
19
18
|
|
20
19
|
puts "Voltage min: #{device.outputs[0].voltage_min}"
|
21
20
|
puts "Voltage max: #{device.outputs[0].voltage_max}"
|
22
|
-
|
21
|
+
|
23
22
|
device.outputs[0].enabled = true
|
24
23
|
sleep 1
|
25
24
|
device.outputs[0].voltage = 2.2
|
26
|
-
|
25
|
+
|
27
26
|
sleep 3
|
28
27
|
|
29
|
-
device.outputs[0].enabled = false
|
30
|
-
|
28
|
+
device.outputs[0].enabled = false
|
29
|
+
sleep 1
|
31
30
|
end
|
32
|
-
|
31
|
+
|
33
32
|
an.on_detach do |device, obj|
|
34
33
|
puts "#{device.attributes.inspect} detached"
|
35
34
|
end
|
data/examples/bridge.rb
CHANGED
@@ -6,12 +6,11 @@ puts "Library Version: #{Phidgets::FFI.library_version}"
|
|
6
6
|
br = Phidgets::Bridge.new
|
7
7
|
|
8
8
|
puts "Wait for PhidgetBridge to attached..."
|
9
|
-
|
9
|
+
|
10
10
|
#The following method runs when the PhidgetBridge is attached to the system
|
11
11
|
br.on_attach do |device, obj|
|
12
|
-
|
13
|
-
|
14
|
-
puts "Class: #{device.device_class}"
|
12
|
+
puts "Device attributes: #{device.attributes} attached"
|
13
|
+
puts "Class: #{device.device_class}"
|
15
14
|
puts "Id: #{device.id}"
|
16
15
|
puts "Serial number: #{device.serial_number}"
|
17
16
|
puts "Version: #{device.version}"
|
@@ -22,12 +21,11 @@ br.on_attach do |device, obj|
|
|
22
21
|
device.data_rate = 64
|
23
22
|
|
24
23
|
sleep 1
|
25
|
-
|
24
|
+
|
26
25
|
puts "Enabled: #{device.inputs[0].enabled}"
|
27
26
|
puts "Gain: #{device.inputs[0].gain}"
|
28
|
-
|
29
27
|
end
|
30
|
-
|
28
|
+
|
31
29
|
br.on_detach do |device, obj|
|
32
30
|
puts "#{device.attributes.inspect} detached"
|
33
31
|
end
|
@@ -38,20 +36,20 @@ end
|
|
38
36
|
|
39
37
|
br.on_bridge_data do |device, inputs, value|
|
40
38
|
puts "Bridge #{inputs.index}'s value changed to #{value}"
|
41
|
-
end
|
39
|
+
end
|
42
40
|
|
43
41
|
sleep 5
|
44
42
|
|
45
43
|
if(br.attached?)
|
46
44
|
5.times do
|
47
|
-
begin
|
48
|
-
puts "Bridge Value[0]: #{br.inputs[0].bridge_value}"
|
45
|
+
begin
|
46
|
+
puts "Bridge Value[0]: #{br.inputs[0].bridge_value}"
|
49
47
|
rescue Phidgets::Error::UnknownVal => e
|
50
48
|
puts "Exception caught: #{e.message}"
|
51
49
|
end
|
52
|
-
sleep 0.5
|
50
|
+
sleep 0.5
|
53
51
|
end
|
54
52
|
end
|
55
53
|
|
56
54
|
sleep 5
|
57
|
-
br.close
|
55
|
+
br.close
|
data/examples/dictionary.rb
CHANGED
@@ -8,34 +8,37 @@ puts "Library Version: #{Phidgets::FFI.library_version}"
|
|
8
8
|
dict = Phidgets::Dictionary.new
|
9
9
|
|
10
10
|
dict.on_error do |obj, code, reason|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
11
|
+
puts "Error (#{code}): #{reason}"
|
12
|
+
end
|
13
|
+
|
14
|
+
dict.on_connect do |obj|
|
15
|
+
puts "Connected!"
|
16
|
+
|
17
|
+
#Listening for every pattern
|
18
|
+
dict.on_change do |obj, key, val, reason|
|
19
|
+
puts "Every key: #{key} => #{val}-- #{reason}"
|
20
|
+
end
|
21
|
+
|
22
|
+
dict.on_change('snoop') do |obj, key, val, reason|
|
23
|
+
puts "Keys matching snoop: #{key} => #{val}-- #{reason}"
|
24
|
+
end
|
25
|
+
|
26
|
+
#Patterns an also be of ruby type: Regexp
|
27
|
+
dict.on_change(/test.*/) do |obj, key, val, reason|
|
28
|
+
puts "Keys matching /test.*/: #{key} => #{val}-- #{reason}"
|
29
29
|
end
|
30
|
+
end
|
31
|
+
|
32
|
+
dict.on_disconnect do |obj|
|
33
|
+
puts "Disconnected!"
|
34
|
+
end
|
30
35
|
|
31
|
-
dict.on_disconnect do |obj|
|
32
|
-
puts "Disconnected!"
|
33
|
-
end
|
34
|
-
|
35
36
|
options = {:address => 'localhost', :port => 5001, :password => nil}
|
37
|
+
|
36
38
|
dict.open(options)
|
37
|
-
|
39
|
+
|
38
40
|
sleep 5
|
41
|
+
|
39
42
|
if dict.status.to_s == 'connected'
|
40
43
|
puts "Listening to: #{dict.listeners.inspect}"
|
41
44
|
|
@@ -47,13 +50,13 @@ if dict.status.to_s == 'connected'
|
|
47
50
|
dict["fnord"] = {:value => "This is a fnordic key", :persistent => true}
|
48
51
|
dict["test"] = {:value => "This is a key that is called test", :persistent => false}
|
49
52
|
dict["test"] = nil
|
50
|
-
|
53
|
+
|
51
54
|
20.times do |i|
|
52
55
|
print "#{i}\n"
|
53
56
|
begin
|
54
57
|
dict["snoop"] = {:value => "value: #{i}"}
|
55
58
|
dict["testerson"] = {:value => "This is another test matching key"}
|
56
|
-
|
59
|
+
|
57
60
|
rescue Phidgets::Error::NetworkNotConnected
|
58
61
|
end
|
59
62
|
sleep 1
|
data/examples/encoder.rb
CHANGED
@@ -4,39 +4,38 @@ require 'phidgets-ffi'
|
|
4
4
|
puts "Library Version: #{Phidgets::FFI.library_version}"
|
5
5
|
|
6
6
|
en = Phidgets::Encoder.new
|
7
|
-
|
7
|
+
|
8
8
|
puts "Wait for PhidgetEncoder to attached..."
|
9
9
|
|
10
10
|
#The following method runs when the PhidgetEncoder is attached to the system
|
11
11
|
en.on_attach do |device, obj|
|
12
|
-
|
13
|
-
|
14
|
-
puts "Class: #{device.device_class}"
|
12
|
+
puts "Device attributes: #{device.attributes} attached"
|
13
|
+
puts "Class: #{device.device_class}"
|
15
14
|
puts "Id: #{device.id}"
|
16
15
|
puts "Serial number: #{device.serial_number}"
|
17
16
|
puts "Version: #{device.version}"
|
18
|
-
puts "# Digital Inputs: #{en.inputs.size}"
|
17
|
+
puts "# Digital Inputs: #{en.inputs.size}"
|
19
18
|
puts "# Encoders: #{device.encoders.size}"
|
20
19
|
|
21
|
-
|
20
|
+
begin
|
22
21
|
en.encoders[0].enabled = true #some encoders do not support the enable feature
|
23
22
|
rescue Phidgets::Error::Unsupported => e
|
24
23
|
puts "Exception caught: #{e.message}"
|
25
24
|
end
|
26
|
-
|
25
|
+
|
27
26
|
sleep 1
|
28
27
|
|
29
28
|
en.encoders[0].position = 200
|
30
|
-
|
29
|
+
|
31
30
|
begin
|
32
31
|
puts "Index Position: #{en.encoders[0].index_position}"
|
33
32
|
rescue Phidgets::Error::UnknownVal => e
|
34
33
|
puts "Exception caught: #{e.message}"
|
35
34
|
end
|
36
|
-
|
35
|
+
|
37
36
|
puts "Position: #{en.encoders[0].position}"
|
38
37
|
end
|
39
|
-
|
38
|
+
|
40
39
|
en.on_detach do |device, obj|
|
41
40
|
puts "#{device.attributes.inspect} detached"
|
42
41
|
end
|
@@ -46,12 +45,16 @@ en.on_error do |device, obj, code, description|
|
|
46
45
|
end
|
47
46
|
|
48
47
|
en.on_input_change do |device, input, state, obj|
|
49
|
-
|
48
|
+
puts "Input #{input.index}'s state has changed to #{state}"
|
50
49
|
end
|
51
50
|
|
52
51
|
en.on_position_change do |device, encoder, time, position_change, obj|
|
52
|
+
encoder = "Encoder #{encoder.index} -- "
|
53
|
+
position = "Position: #{device.encoders[encoder.index].position} -- "
|
54
|
+
relative = "Relative Change: #{position_change} -- "
|
55
|
+
elapsed_time = "Elapsed Time: #{time}"
|
53
56
|
|
54
|
-
puts "
|
57
|
+
puts "#{encoder} #{position} #{relative} #{elapsed_time}"
|
55
58
|
end
|
56
59
|
|
57
60
|
sleep 10
|
@@ -6,31 +6,30 @@ puts "Library Version: #{Phidgets::FFI.library_version}"
|
|
6
6
|
fc = Phidgets::FrequencyCounter.new
|
7
7
|
|
8
8
|
puts "Wait for PhidgetFrequncyCounter to attached..."
|
9
|
-
|
9
|
+
|
10
10
|
#The following method runs when the PhidgetFrequencyCounter is attached to the system
|
11
11
|
fc.on_attach do |device, obj|
|
12
|
-
|
13
|
-
|
14
|
-
puts "Class: #{device.device_class}"
|
12
|
+
puts "Device attributes: #{device.attributes} attached"
|
13
|
+
puts "Class: #{device.device_class}"
|
15
14
|
puts "Id: #{device.id}"
|
16
15
|
puts "Serial number: #{device.serial_number}"
|
17
16
|
puts "Version: #{device.version}"
|
18
17
|
puts "# Inputs: #{device.inputs.size}"
|
19
18
|
|
20
|
-
device.inputs[0].enabled = true
|
21
|
-
|
19
|
+
device.inputs[0].enabled = true
|
20
|
+
|
22
21
|
device.inputs[0].filter_type = Phidgets::FFI::FrequencyCounterFilterTypes[:filter_type_zero_crossing]
|
23
22
|
|
24
23
|
device.inputs[0].timeout = 100018
|
25
24
|
|
26
25
|
sleep 1
|
27
|
-
|
26
|
+
|
28
27
|
puts "Enabled: #{device.inputs[0].enabled}"
|
29
28
|
puts "Filter Type: #{device.inputs[0].filter_type}"
|
30
29
|
puts "Timeout: #{device.inputs[0].timeout}"
|
31
30
|
|
32
31
|
end
|
33
|
-
|
32
|
+
|
34
33
|
fc.on_detach do |device, obj|
|
35
34
|
puts "#{device.attributes.inspect} detached"
|
36
35
|
end
|
@@ -41,13 +40,13 @@ end
|
|
41
40
|
|
42
41
|
fc.on_count do |device, input, time, count, obj|
|
43
42
|
puts "Channel #{input.index}: #{count} pulses in #{time} microseconds"
|
44
|
-
end
|
43
|
+
end
|
45
44
|
|
46
45
|
sleep 5
|
47
46
|
|
48
47
|
if(fc.attached?)
|
49
48
|
5.times do
|
50
|
-
begin
|
49
|
+
begin
|
51
50
|
puts "Frequency[0]: #{fc.inputs[0].frequency}"
|
52
51
|
puts "Total count: #{fc.inputs[0].total_count}"
|
53
52
|
puts "Total time: #{fc.inputs[0].total_time} microseconds"
|
@@ -55,9 +54,9 @@ if(fc.attached?)
|
|
55
54
|
rescue Phidgets::Error::UnknownVal => e
|
56
55
|
puts "Exception caught: #{e.message}"
|
57
56
|
end
|
58
|
-
sleep 0.5
|
57
|
+
sleep 0.5
|
59
58
|
end
|
60
59
|
end
|
61
60
|
|
62
61
|
sleep 1
|
63
|
-
fc.close
|
62
|
+
fc.close
|
data/examples/gps.rb
CHANGED
@@ -6,20 +6,18 @@ puts "Library Version: #{Phidgets::FFI.library_version}"
|
|
6
6
|
gps = Phidgets::GPS.new
|
7
7
|
|
8
8
|
puts "Wait for PhidgetGPS to attached..."
|
9
|
-
|
9
|
+
|
10
10
|
#The following method runs when the PhidgetGPS is attached to the system
|
11
11
|
gps.on_attach do |device, obj|
|
12
|
-
|
13
|
-
|
14
|
-
puts "Class: #{device.device_class}"
|
12
|
+
puts "Device attributes: #{device.attributes} attached"
|
13
|
+
puts "Class: #{device.device_class}"
|
15
14
|
puts "Id: #{device.id}"
|
16
15
|
puts "Serial number: #{device.serial_number}"
|
17
16
|
puts "Version: #{device.version}"
|
18
|
-
|
17
|
+
|
19
18
|
puts "Waiting for position fix status to be acquired"
|
20
|
-
|
21
19
|
end
|
22
|
-
|
20
|
+
|
23
21
|
gps.on_detach do |device, obj|
|
24
22
|
puts "#{device.attributes.inspect} detached"
|
25
23
|
end
|
@@ -40,24 +38,24 @@ sleep 5
|
|
40
38
|
|
41
39
|
if(gps.attached?)
|
42
40
|
5.times do
|
43
|
-
begin
|
41
|
+
begin
|
44
42
|
puts "Latitude: #{gps.latitude} degrees"
|
45
43
|
rescue Phidgets::Error::UnknownVal => e
|
46
44
|
puts "Exception caught: #{e.message}"
|
47
45
|
end
|
48
46
|
|
49
47
|
begin
|
50
|
-
puts "Longitude: #{gps.longitude} degrees"
|
48
|
+
puts "Longitude: #{gps.longitude} degrees"
|
51
49
|
rescue Phidgets::Error::UnknownVal => e
|
52
50
|
puts "Exception caught: #{e.message}"
|
53
51
|
end
|
54
|
-
|
52
|
+
|
55
53
|
begin
|
56
|
-
puts "Altitude: #{gps.altitude} m"
|
54
|
+
puts "Altitude: #{gps.altitude} m"
|
57
55
|
rescue Phidgets::Error::UnknownVal => e
|
58
56
|
puts "Exception caught: #{e.message}"
|
59
57
|
end
|
60
|
-
|
58
|
+
|
61
59
|
begin
|
62
60
|
puts "Heading: #{gps.heading} degrees"
|
63
61
|
rescue Phidgets::Error::UnknownVal => e
|
@@ -69,23 +67,23 @@ if(gps.attached?)
|
|
69
67
|
rescue Phidgets::Error::UnknownVal => e
|
70
68
|
puts "Exception caught: #{e.message}"
|
71
69
|
end
|
72
|
-
|
70
|
+
|
73
71
|
begin
|
74
72
|
puts "GPS Time(UTC): #{gps.time[:hours]}:#{gps.time[:minutes]}:#{gps.time[:seconds]}:#{gps.time[:milliseconds]}"
|
75
73
|
rescue Phidgets::Error::UnknownVal => e
|
76
74
|
puts "Exception caught: #{e.message}"
|
77
75
|
end
|
78
|
-
|
76
|
+
|
79
77
|
begin
|
80
78
|
puts "GPS Date(UTC): #{gps.date[:month]}/#{gps.date[:day]}/#{gps.date[:year]}"
|
81
79
|
rescue Phidgets::Error::UnknownVal => e
|
82
80
|
puts "Exception caught: #{e.message}"
|
83
81
|
end
|
84
|
-
|
82
|
+
|
85
83
|
puts ''
|
86
|
-
sleep 0.5
|
84
|
+
sleep 0.5
|
87
85
|
end
|
88
86
|
end
|
89
87
|
|
90
88
|
sleep 50
|
91
|
-
gps.close
|
89
|
+
gps.close
|