gpt4 book ai didi

ruby-on-rails - 从 Ruby on Rails 应用程序中的串口读取挂起

转载 作者:数据小太阳 更新时间:2023-10-29 07:18:42 24 4
gpt4 key购买 nike

我正在使用串口 gem从我的 Ruby on Rails 3.2 应用程序中的串行端口读取。串行端口本身用于从 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 session 中执行读取操作,一切正常。如果我将 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

最佳答案

遇到了同样的问题。修复实际上很简单,问题是您的 Rails 应用程序不断从串行端口读取新值,只要它读取这些输入,它就不会执行任何其他操作,因此您的网站永远不会真正构建。

尝试它是否有效,例如,如果您只是让它从串行端口读取固定次数。

关于ruby-on-rails - 从 Ruby on Rails 应用程序中的串口读取挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10161758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com