相关疑难解决方法(0)

从Ruby on Rails应用程序中的串行端口读取挂起

我正在使用serialport gem从我的Ruby on Rails 3.2应用程序中的串口读取.串行端口本身用于从Arduino板写入数据.宝石被添加到Gemfile.端口初始化为application.rb:

config.serial_port = SerialPort.new "/devttyACM0", 9600
config.serial_port.read_timeout = 100
Run Code Online (Sandbox Code Playgroud)

当我尝试从此端口读取时出现问题.

@sp = ProjectName::Application::config.serial_port
@sp.read
Run Code Online (Sandbox Code Playgroud)

该应用程序挂起致命.我试图从一个pry会话中执行阅读,一切都很好.如果我设置read_timeout0,从阅读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
Run Code Online (Sandbox Code Playgroud)

ruby serial-port ruby-on-rails arduino ruby-on-rails-3

5
推荐指数
1
解决办法
4535
查看次数