9月 022013
考えてみれば当たり前か。
シリアルポートからの入力を読むread関数が、たまにEOFErrorを投げてくるので無視したい。
しかしEOFError以外は握りつぶしたくない。
色々省略するけど、こういう感じで書いてたんだけど
require 'serialport'
serialport = SerialPort.new("/dev/tty.devicename", 9600, 8, 1, 0)
def read
serialport.read rescue EOFError ## たまに来るEOFErrorだけを無視するつもりだった
end
loop do
puts read
sleep 1
end
こういう実行結果になる。rescueで拾ったEOFErrorがreturnされてた。
EOFError
(デバイスからのデータ)
EOFError
EOFError
(デバイスからのデータ)
EOFError
(デバイスからのデータ)
EOFError
関数readを、こうして1行のrescueで書かないようにすればEOFErrorの時はnilが返る。
def read
begin
result = random_error
rescue EOFError
end
end
nilなので、改行がputsされる
(デバイスからのデータ)
(デバイスからのデータ)
(デバイスからのデータ)