Estoy usando el serialport
gem para leer desde el puerto serie en mi aplicación Ruby on Rails 3.2. El puerto serie en sí se utiliza para escribir datos de una placa Arduino. La gema se agrega a Gemfile
. El puerto se inicializa en application.rb
:La lectura desde el puerto serie en una aplicación de Ruby on Rails se cuelga
config.serial_port = SerialPort.new "/devttyACM0", 9600
config.serial_port.read_timeout = 100
El problema aparece cuando trato de leer desde este puerto.
@sp = ProjectName::Application::config.serial_port
@sp.read
La aplicación se cuelga mortalmente. Intenté leer desde una sesión pry
y todo estaba bien. Si configuro read_timeout
en 0
, también se cuelga la lectura de pry
. Ya traté de establecer read_timeout
a valores más grandes sin resultado. ¿Qué debo hacer para que funcione?
Actualización:
he tratado de realizar las mismas acciones utilizando sinatra
framework. Se cuelga también.
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