我使用serialport
宝石在我的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
会议,一切都OK。 如果我设置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