Tôi đang sử dụng serialport
gem để đọc từ cổng nối tiếp trong ứng dụng Ruby on Rails 3.2 của tôi. Cổng nối tiếp được sử dụng để ghi dữ liệu từ bảng Arduino. Đá quý được thêm vào Gemfile
. Cổng được khởi tạo trong application.rb
:Đọc từ cổng nối tiếp trong ứng dụng Ruby on Rails treo
config.serial_port = SerialPort.new "/devttyACM0", 9600
config.serial_port.read_timeout = 100
Sự cố xuất hiện khi tôi cố gắng đọc từ cổng này.
@sp = ProjectName::Application::config.serial_port
@sp.read
Ứng dụng treo cứng người chết. Tôi đã cố gắng để thực hiện đọc từ một phiên họp pry
và mọi thứ đều OK. Nếu tôi đặt read_timeout
thành 0
, đọc từ pry
cũng bị treo. Tôi đã cố gắng đặt read_timeout
thành các giá trị lớn hơn mà không có kết quả. Tôi nên làm gì để nó hoạt động?
Cập nhật:
tôi đã cố gắng để thực hiện các hành động tương tự sử dụng sinatra
framework. Nó cũng bị treo.
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