Ruby on Rails 3.2 アプリケーションのシリアル ポートから読み取るためにserialport
gemを使用しています。シリアル ポート自体は、Arduino ボードからデータを書き込むために使用されます。gem が に追加されGemfile
ます。ポートは で初期化されapplication.rb
ます:
config.serial_port = SerialPort.new "/devttyACM0", 9600
config.serial_port.read_timeout = 100
このポートから読み取ろうとすると、問題が発生します。
@sp = ProjectName::Application::config.serial_port
@sp.read
アプリケーションが致命的にハングします。pry
セッションから読み取りを実行しようとしましたが、すべて問題ありませんでした。に設定read_timeout
すると0
、からの読み取りpry
もハングします。私はすでにread_timeout
結果なしでより大きな値に設定しようとしました。機能させるにはどうすればよいですか?
アップデート:
sinatra
フレームワークを使用して同じアクションを実行しようとしました。それもハングします。
require "sinatra"
require "serialport"
get '/' do
read_data
end
helpers do
def read_data
sp = SerialPort.new "/dev/ttyACM0", 9600
sp.read_timeout = 1500
t = sp.read.match(/\d+(\n|\r)+/)[0].gsub!(/(\n|\r)*/,"") rescue nil
sp.close
t
end
end