Ruby EventMachine последовательное подключение к Arduino?
У меня есть приложение Ruby, которое подключается к последовательному устройству через USB(Arduino, не фирма).
Я изучаю возможность использования EventMachine для неблокирующего двунаправленного ввода-вывода, но не могу найти никаких примеров. EvenMachine поддерживает последовательные соединения? В настоящее время мы используем нашу собственную неблокирующую инфраструктуру ввода-вывода, и я бы предпочел не изобретать велосипед.
В настоящее время все управление осуществляется через объект Serial через gem serialport. Я считаю, что это подкласс класса IO в Ruby.
1 ответ
Решение
require 'eventmachine'
class Sender < EventMachine::Connection
def receive_data(data)
puts "Just got: #{data}"
end
def unbind
puts "Disconnected! Did you unplug the device?"
EM.stop
end
end
EM.run do
serial = SerialPort.new '/dev/ttyACM0'
# We can do polling here to give the thread a chance to send outbound msgs.
EventMachine::PeriodicTimer.new(2) { serial.puts "Hello!" }
EM.attach serial, Sender
end