phidgets-ffi 0.1.2 → 0.1.3

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.
@@ -6,8 +6,7 @@ puts "Library Version: #{Phidgets::FFI.library_version}"
6
6
  puts "Wait for PhidgetInterfaceKit to attach..."
7
7
 
8
8
  begin
9
- Phidgets::InterfaceKit.new do |ifkit|
10
-
9
+ Phidgets::InterfaceKit.new do |ifkit|
11
10
  puts "Device attributes: #{ifkit.attributes} attached"
12
11
  puts "Class: #{ifkit.device_class}"
13
12
  puts "Id: #{ifkit.id}"
@@ -16,8 +15,8 @@ Phidgets::InterfaceKit.new do |ifkit|
16
15
  puts "# Digital inputs: #{ifkit.inputs.size}"
17
16
  puts "# Digital outputs: #{ifkit.outputs.size}"
18
17
  puts "# Analog inputs: #{ifkit.sensors.size}"
19
-
20
- sleep 1
18
+
19
+ sleep 1
21
20
 
22
21
  if(ifkit.sensors.size > 0)
23
22
  ifkit.ratiometric = false
@@ -26,16 +25,16 @@ Phidgets::InterfaceKit.new do |ifkit|
26
25
 
27
26
  puts "Sensivity: #{ifkit.sensors[0].sensitivity}"
28
27
  puts "Data rate: #{ifkit.sensors[0].data_rate}"
29
- puts "Data rate max: #{ifkit.sensors[0].data_rate_max}"
30
- puts "Data rate min: #{ifkit.sensors[0].data_rate_min}"
31
- puts "Sensor value[0]: #{ifkit.sensors[0].to_i}"
28
+ puts "Data rate max: #{ifkit.sensors[0].data_rate_max}"
29
+ puts "Data rate min: #{ifkit.sensors[0].data_rate_min}"
30
+ puts "Sensor value[0]: #{ifkit.sensors[0].to_i}"
32
31
  puts "Raw sensor value[0]: #{ifkit.sensors[0].raw_value}"
33
-
32
+
34
33
  ifkit.outputs[0].state = true
35
34
  sleep 1 #allow time for digital output 0's state to be set
36
35
  puts "Is digital output 0's state on? ... #{ifkit.outputs[0].on?}"
37
36
  end
38
-
37
+
39
38
  ifkit.on_detach do |device, obj|
40
39
  puts "#{device.attributes.inspect} detached"
41
40
  end
@@ -51,18 +50,13 @@ Phidgets::InterfaceKit.new do |ifkit|
51
50
  ifkit.on_output_change do |device, output, state, obj|
52
51
  puts "Output #{output.index}'s state has changed to #{state}"
53
52
  end
54
-
53
+
55
54
  ifkit.on_sensor_change do |device, input, value, obj|
56
55
  puts "Sensor #{input.index}'s value has changed to #{value}"
57
- end
56
+ end
58
57
 
59
58
  sleep 10
60
59
  end
61
60
  rescue Phidgets::Error::Timeout => e
62
61
  puts "Exception caught: #{e.message}"
63
62
  end
64
-
65
-
66
-
67
-
68
-
@@ -3,39 +3,38 @@ require 'phidgets-ffi'
3
3
 
4
4
  puts "Library Version: #{Phidgets::FFI.library_version}"
5
5
 
6
- ifkit = Phidgets::InterfaceKit.new
7
-
6
+ ifkit = Phidgets::InterfaceKit.new
7
+
8
8
  ifkit.on_attach do |device, obj|
9
-
10
- puts "Device attributes: #{device.attributes} attached"
11
- puts "Class: #{device.device_class}"
9
+ puts "Device attributes: #{device.attributes} attached"
10
+ puts "Class: #{device.device_class}"
12
11
  puts "Id: #{device.id}"
13
12
  puts "Serial number: #{device.serial_number}"
14
13
  puts "Version: #{device.version}"
15
14
  puts "# Digital inputs: #{device.inputs.size}"
16
15
  puts "# Digital outputs: #{device.outputs.size}"
17
16
  puts "# Analog inputs: #{device.sensors.size}"
18
-
19
- sleep 1
17
+
18
+ sleep 1
20
19
 
21
20
  if(device.sensors.size > 0)
22
21
  device.ratiometric = false
23
- device.sensors[0].data_rate = 64
22
+ device.sensors[0].data_rate = 64
24
23
  device.sensors[0].sensitivity = 15
25
24
 
26
25
  puts "Sensivity: #{device.sensors[0].sensitivity}"
27
26
  puts "Data rate: #{device.sensors[0].data_rate}"
28
- puts "Data rate max: #{device.sensors[0].data_rate_max}"
29
- puts "Data rate min: #{device.sensors[0].data_rate_min}"
30
- puts "Sensor value[0]: #{device.sensors[0].to_i}"
27
+ puts "Data rate max: #{device.sensors[0].data_rate_max}"
28
+ puts "Data rate min: #{device.sensors[0].data_rate_min}"
29
+ puts "Sensor value[0]: #{device.sensors[0].to_i}"
31
30
  puts "Raw sensor value[0]: #{device.sensors[0].raw_value}"
32
-
31
+
33
32
  device.outputs[0].state = true
34
33
  sleep 1 #allow time for digital output 0's state to be set
35
34
  puts "Is digital output 0's state on? ... #{device.outputs[0].on?}"
36
- end
35
+ end
37
36
  end
38
-
37
+
39
38
  ifkit.on_detach do |device, obj|
40
39
  puts "#{device.attributes.inspect} detached"
41
40
  end
@@ -45,16 +44,16 @@ ifkit.on_error do |device, obj, code, description|
45
44
  end
46
45
 
47
46
  ifkit.on_input_change do |device, input, state, obj|
48
- puts "Input #{input.index}'s state has changed to #{state}"
47
+ puts "Input #{input.index}'s state has changed to #{state}"
49
48
  end
50
49
 
51
50
  ifkit.on_output_change do |device, output, state, obj|
52
- puts "Output #{output.index}'s state has changed to #{state}"
51
+ puts "Output #{output.index}'s state has changed to #{state}"
53
52
  end
54
-
53
+
55
54
  ifkit.on_sensor_change do |device, input, value, obj|
56
55
  puts "Sensor #{input.index}'s value has changed to #{value}"
57
- end
56
+ end
58
57
 
59
58
  sleep 10
60
59
  ifkit.close
@@ -6,34 +6,32 @@ puts "Library Version: #{Phidgets::FFI.library_version}"
6
6
  ir = Phidgets::IR.new
7
7
 
8
8
  puts "Wait for PhidgetIR to attached..."
9
-
9
+
10
10
  #The following method runs when the PhidgetIR is attached to the system
11
11
  ir.on_attach do |device, obj|
12
-
13
- puts "Device attributes: #{device.attributes} attached"
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
  #example of sending RAW Data - this was captured from an Apple remote Volume UP command
20
19
  volume_up_raw_data = [
21
- 9040, 4590, 540, 630, 550, 1740, 550, 1750, 550, 1740,
22
- 550, 620, 550, 1750, 550, 1740, 550, 1750, 550, 1740,
23
- 550, 1740, 560, 1740, 540, 630, 550, 620, 550, 620,
24
- 540, 630, 550, 1750, 550, 1740, 560, 1740, 550, 620,
25
- 550, 1740, 550, 620, 550, 620, 560, 610, 550, 620,
26
- 550, 1750, 550, 1740, 550, 620, 550, 1740, 550, 1750,
27
- 550, 620, 550, 620, 550, 620, 540]
28
-
29
- 5.times do
20
+ 9040, 4590, 540, 630, 550, 1740, 550, 1750, 550, 1740,
21
+ 550, 620, 550, 1750, 550, 1740, 550, 1750, 550, 1740,
22
+ 550, 1740, 560, 1740, 540, 630, 550, 620, 550, 620,
23
+ 540, 630, 550, 1750, 550, 1740, 560, 1740, 550, 620,
24
+ 550, 1740, 550, 620, 550, 620, 560, 610, 550, 620,
25
+ 550, 1750, 550, 1740, 550, 620, 550, 1740, 550, 1750,
26
+ 550, 620, 550, 620, 550, 620, 540]
27
+
28
+ 5.times do
30
29
  puts 'Transmiting raw data ...'
31
30
  device.transmit_raw(volume_up_raw_data, 67, 38000, 33, 110000)
32
31
  sleep 0.2
33
32
  end
34
-
35
33
  end
36
-
34
+
37
35
  ir.on_detach do |device, obj|
38
36
  puts "#{device.attributes.inspect} detached"
39
37
  end
@@ -44,52 +42,50 @@ end
44
42
 
45
43
  ir.on_code do |device, data, data_length, bit_count, repeat, obj|
46
44
  puts "Code #{data} received, length: #{data_length}, bit count: #{bit_count}, repeat: #{repeat}"
47
- end
45
+ end
48
46
 
49
47
  ir.on_learn do |device, data, data_length, code_info, obj|
50
48
  print "\n-------------------Learned Code---------------------\n"
51
-
52
- puts "Code: #{data}"
49
+
50
+ puts "Code: #{data}"
53
51
  puts "Data length: #{data_length}"
54
52
  puts "Bit count: #{code_info[:bit_count]}"
55
- puts "Encoding: #{code_info[:encoding]}"
56
- puts "Length: #{code_info[:length]}"
53
+ puts "Encoding: #{code_info[:encoding]}"
54
+ puts "Length: #{code_info[:length]}"
57
55
  puts "Gap: #{code_info[:gap]}"
58
56
  puts "Trail: #{code_info[:trail]}"
59
57
  puts "Header: #{code_info[:header][0]}, #{code_info[:header][1]}"
60
58
  puts "One: #{code_info[:one][0]}, #{code_info[:one][1]}"
61
- puts "Zero: #{code_info[:zero][0]}, #{code_info[:zero][1]}"
59
+ puts "Zero: #{code_info[:zero][0]}, #{code_info[:zero][1]}"
62
60
  puts "Min repeat: #{code_info[:min_repeat]}"
63
-
61
+
64
62
  printf 'Toggle mask: '
65
63
  16.times do |i|
66
64
  print "#{code_info[:toggle_mask][i]}, "
67
65
  end
68
-
66
+
69
67
  puts ''
70
-
68
+
71
69
  puts "Carrier frequency: #{code_info[:carrier_frequency]}"
72
70
  print "Duty cycle: #{code_info[:duty_cycle]} \n\n"
73
71
 
74
- end
72
+ end
75
73
 
76
74
  ir.on_raw_data do |device, raw_data, data_length, obj|
77
75
  print "Raw data: "
76
+
78
77
  data_length.times do |i|
79
78
  print "#{raw_data[i]}, "
80
79
  end
81
-
80
+
82
81
  puts ''
83
-
84
- end
82
+ end
85
83
 
86
-
87
- puts "Please transmit a code now ..."
84
+ puts "Please transmit a code now ..."
88
85
  sleep 10
89
86
 
90
87
  if(ir.attached?)
91
-
92
- apple_volume_down = ["77", "E1", "B0", "F0"]
88
+ apple_volume_down = ["77", "E1", "B0", "F0"]
93
89
  apple_volume_code_info = Phidgets::IR::IR_code_info.new
94
90
  apple_volume_code_info[:bit_count] = 32
95
91
  apple_volume_code_info[:encoding] = Phidgets::FFI::IREncoding[:encoding_space]
@@ -110,15 +106,14 @@ if(ir.attached?)
110
106
  5.times do
111
107
  puts 'Transmitting data ...'
112
108
  ir.transmit apple_volume_down, apple_volume_code_info
113
- sleep 0.2
109
+ sleep 0.2
114
110
  end
115
-
116
111
  rescue Phidgets::Error::Timeout => e
117
112
  puts "Exception caught: #{e.message}"
118
113
  end
119
-
114
+
120
115
  5.times do
121
- begin
116
+ begin
122
117
  puts ''
123
118
  raw_data, raw_data_length = ir.read_raw_data
124
119
 
@@ -126,30 +121,28 @@ if(ir.attached?)
126
121
  raw_data_length.times do |i|
127
122
  print "#{raw_data[i]},"
128
123
  end
129
-
124
+
130
125
  puts ''
131
- puts "Data length: #{raw_data_length}"
132
-
126
+ puts "Data length: #{raw_data_length}"
127
+
133
128
  puts ''
134
129
  data, data_length, bit_count = ir.last_code
135
-
136
- print 'Last code: '
130
+
131
+ print 'Last code: '
137
132
  print "#{data}"
138
133
  puts ''
139
134
  puts "Data length: #{data_length}"
140
135
  puts "Bit count: #{bit_count}"
141
-
136
+
142
137
  puts ''
143
138
  sleep 0.2
144
139
  puts '----------------------------------------------------'
145
-
140
+
146
141
  puts 'Transmitting the last code that was received'
147
142
  ir.transmit data, apple_volume_code_info
148
-
149
143
  rescue Phidgets::Error::UnknownVal => e
150
144
  puts "Exception caught: #{e.message}"
151
145
  end
152
-
153
146
  end
154
147
  end
155
148
 
@@ -6,21 +6,20 @@ puts "Library Version: #{Phidgets::FFI.library_version}"
6
6
  led = Phidgets::LED.new
7
7
 
8
8
  puts "Wait for PhidgetLED to attached..."
9
-
9
+
10
10
  #The following method runs when the PhidgetLED is attached to the system
11
11
  led.on_attach do |device, obj|
12
-
13
- puts "Device attributes: #{device.attributes} attached"
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 "# LEDs: #{device.leds.size}"
19
-
18
+
20
19
  device.current_limit = Phidgets::FFI::LEDCurrentLimit[:current_limit_20mA]
21
20
  device.voltage = Phidgets::FFI::LEDVoltage[:voltage_3_9V]
22
21
  end
23
-
22
+
24
23
  led.on_detach do |device, obj|
25
24
  puts "#{device.attributes.inspect} detached"
26
25
  end
@@ -36,14 +35,16 @@ if(led.attached?)
36
35
  i.current_limit = 20
37
36
  i.brightness = 50
38
37
  end
38
+
39
39
  sleep 1
40
40
  led.leds.each do |i|
41
41
  i.brightness = 100
42
42
  end
43
+
43
44
  sleep 1
44
45
  led.leds.each do |i|
45
46
  i.current_limit = 2
46
47
  end
47
48
  end
48
49
 
49
- led.close
50
+ led.close
@@ -2,20 +2,18 @@ require 'rubygems'
2
2
  require 'phidgets-ffi'
3
3
 
4
4
  Phidgets::Manager.new do |manager|
5
-
6
5
  manager.devices.size.times do |i|
7
6
  puts "Attached: #{Phidgets::Common.name(manager.devices[i])}, serial number: #{Phidgets::Common.serial_number(manager.devices[i])}"
8
7
  end
8
+
9
9
  puts ''
10
10
 
11
11
  manager.on_attach do |device_ptr, obj|
12
- puts "Attaching #{Phidgets::Common.name(device_ptr)}, serial number: #{Phidgets::Common.serial_number(device_ptr)}"
13
-
12
+ puts "Attaching #{Phidgets::Common.name(device_ptr)}, serial number: #{Phidgets::Common.serial_number(device_ptr)}"
14
13
  end
15
14
 
16
15
  manager.on_detach do |device_ptr, obj|
17
- puts "Detaching #{Phidgets::Common.name(device_ptr)}, serial number: #{Phidgets::Common.serial_number(device_ptr)}"
18
-
16
+ puts "Detaching #{Phidgets::Common.name(device_ptr)}, serial number: #{Phidgets::Common.serial_number(device_ptr)}"
19
17
  end
20
18
 
21
19
  puts "You have 20 seconds to plug/unplug USB devices and watch the callbacks execute"
@@ -6,11 +6,11 @@ puts "Library Version: #{Phidgets::FFI.library_version}"
6
6
  mc = Phidgets::MotorControl.new
7
7
 
8
8
  puts "Wait for PhidgetMotorControl to attached..."
9
-
9
+
10
10
  mc.on_attach do |device, obj|
11
- puts 'attach event'
12
- puts "Device attributes: #{device.attributes} attached"
13
- puts "Class: #{device.device_class}"
11
+ puts 'attach event'
12
+ puts "Device attributes: #{device.attributes} attached"
13
+ puts "Class: #{device.device_class}"
14
14
  puts "Id: #{device.id}"
15
15
  puts "Serial number: #{device.serial_number}"
16
16
  puts "Version: #{device.version}"
@@ -31,66 +31,63 @@ end
31
31
 
32
32
  mc.on_input_change do |device, input, state|
33
33
  puts "Digital Input #{input.index}'s state changed to #{state}"
34
- end
34
+ end
35
35
 
36
36
  =begin
37
37
  mc.on_sensor_update do |device, sensor, value|
38
38
  puts "Analog Sensor #{sensor.index}'s value is #{value}"
39
- end
39
+ end
40
40
  =end
41
41
 
42
42
  mc.on_velocity_change do |device, motor, velocity|
43
43
  puts "Motor #{motor.index}'s velocity changed to #{velocity}"
44
- end
44
+ end
45
45
 
46
46
  mc.on_current_change do |device, motor, current|
47
47
  puts "Motor #{motor.index}'s current changed to #{current}"
48
- end
48
+ end
49
49
 
50
50
  =begin
51
51
  mc.on_current_update do |device, motor, current|
52
52
  puts "Motor #{motor.index}'s current is #{current}"
53
- end
53
+ end
54
54
  =end
55
55
 
56
56
  =begin
57
57
  mc.on_back_emf_update do |device, motor, voltage|
58
58
  puts "Motor #{motor.index}'s back EMF is #{voltage}"
59
- end
59
+ end
60
60
  =end
61
61
 
62
62
  mc.on_position_change do |device, encoder, time, position|
63
63
  puts "Encoder #{encoder.index}'s position changed to #{position} in #{time}"
64
- end
64
+ end
65
65
 
66
66
  =begin
67
67
  mc.on_position_update do |device, encoder, position|
68
68
  puts "Encoder #{encoder.index}'s position is #{position}"
69
- end
69
+ end
70
70
  =end
71
71
 
72
72
  sleep 5
73
73
 
74
74
  if(mc.attached?)
75
-
76
75
  if(mc.id.to_s == "motor_control_1motor")
77
-
78
76
  mc.ratiometric = true
79
77
 
80
78
  puts "Digital input: #{mc.inputs.inspect}"
81
79
 
82
80
  puts "Encoder: #{mc.encoders.inspect}"
83
-
81
+
84
82
  puts "Analog sensor: #{mc.sensors[0].inspect}"
85
- puts "Analog sensor: #{mc.sensors[1].inspect}"
86
-
83
+ puts "Analog sensor: #{mc.sensors[1].inspect}"
84
+
87
85
  puts "Motor current: #{mc.motors[0].current}"
88
86
 
89
87
  mc.motors[0].acceleration = (mc.motors[0].acceleration_max)/2
90
88
  mc.motors[0].back_emf_sensing = true
91
-
92
- end
93
-
89
+ end
90
+
94
91
  puts "Motor acceleration min: #{mc.motors[0].acceleration_min}"
95
92
  puts "Motor acceleration max: #{mc.motors[0].acceleration_max}"
96
93
 
@@ -98,11 +95,9 @@ if(mc.attached?)
98
95
  100.times do |i|
99
96
  mc.motors[0].velocity = i
100
97
  sleep 0.1
101
-
102
98
  end
103
-
99
+
104
100
  mc.motors[0].velocity = 0
105
-
101
+
106
102
  sleep 2
107
103
  end
108
-