PhidgetsをRubyから使う方法は去年も調べたのだが、良いrubygemが無かったのでPhidgets Serverを立てるしかないかなと思っていたけど、
最近リリースされたphidgets-ffiを使うとRubyスクリプト単体で使えた。

他にも”phidgets”や”phidgets4r”などのgemもあるが、OSの判別のコードがSnow Leopardに対応していなかったりonAttachなどのイベントを発行してくれなかったりAPIがRubyっぽくなかったりする。
phidgets-ffiが一番対応デバイス数多くてドキュメントもしっかりしていて良い。


■インストール
まずPhidgets 21 Installerをインストールする。Cで書かれたライブラリと、Macにはコントロールパネルがインストールされる。

次にgemを入れる

gem install ffi phidgets-ffi


■テスト
自分でプログラムを書く前に、システム環境設定にPhidgetsコントロールパネルが増えているのでそこから動かしてみる。
PhidgetsデバイスをUSBポートに挿すとGeneralのタブに名前が増えるので、ダブルクリックすればそれぞれのデバイスに合わせたGUIが出てくる。


■phidgets-ffiを使う
RFIDリーダーを動かしてみた。これだけでRFIDタグをのせた・どけた事がイベントで取れて、タグのIDも読める。
ffiなので多分Linuxでも動くはず。

ffi-rfid.rb
#!/usr/bin/env ruby
require 'rubygems'
require 'phidgets-ffi'

rfid = Phidgets::RFID.new

puts 'waiting RFID Reader'

rfid.on_attach do |device, obj|
puts "#{device.device_class} attached"
device.antenna = true
device.led = true
sleep 1
end

rfid.on_tag do |device, tag, obj|
puts "tag : #{tag}"
end

rfid.on_tag_lost do |device, tag, obj|
puts "tag lost : #{tag}"
end

sleep 5
if rfid.attached?
loop do
end
else
puts 'device not found'
end