我正在使用serialport
gem从我的 Ruby on Rails 3.2 应用程序中的串行端口读取数据。串行端口本身用于从 Arduino 板写入数据。宝石被添加到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
framework执行相同的操作。它也挂了。
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