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
Другие вопросы по тегам