3月 262011
<< glitchtweet.com作った || sfc_ikiteru >>
■先にまとめ
gem install serialportでインストールして、
require 'rubygems'必ずバージョン1.0.4以上をロードするように指定して使いましょう。
gem 'serialport','>=1.0.4'
require 'serialport'
基本的なserialportの読み書きはこうやる。
実運用ではgetsは改行がくるまでブロックされるのでloopで回して待てばいい。
sp = SerialPort.new('/dev/tty.usb-serialdevice', 9600, 8, 1, 0) # 9600bps, 8bit, stopbit 1, parity none
line = sp.gets # read
sp.puts "echo:#{line}" # write
■詳しいこと
rubyでserialportを使う場合、/dev/ttyのデバイスファイルを直接読むか、それともruby-serialportというのを使うかの2通りの方法がある。
serialportのインストール方法は以前書いた。
で、この頃(2010年初頭)まではserialportのバージョン0.6を使うのが良かった。0.7が最新だったけど関数のインタフェースが変わったのにドキュメントが追いついてなくて使い方がわからなかった為。
でもこのserialport 0.6はrubygemsからインストールができなくて、適当にzipで拾ってきてインストールするしかなかった。
最近はserialport 1.0.4がrubygemsからインストールできて、MacとUbuntuで普通に使えるようになった。Windowsでもちゃんと動くらしい。
インタフェースも0.6と同じものになっている。
ただし、古いserialport 0.6がインストールされている環境では注意が必要で、なぜかgemをバージョン指定してrequireしないと0.6の方が読み込まれる。
しかも0.6のアンインストール方法がよくわからないので、
ぜひ皆様プログラムはこのように
require 'rubygems'書いてくれるといちいち修正して使う手間が省けるのでよろしくお願いします。
gem 'serialport','>=1.0.4'
require 'serialport'
**********
こないだかず助に行ったときに、2ヶ月ぐらいめんどくさくてこのblog書いてなくてネタたまりすぎてヤバイという話をしたら、@ykfに毎日テーマを送って、書かなかったら怒られて消化していこうという事になったのでしばらく毎日書くことになった。毎日書けば1週間ぐらいで全部書ききれる。