我计划很快转向使用串行设备输入编码,并且非常乐意找到Ruby-serialport。 API看起来很容易使用,但我对如何采用基于事件的方法接收数据感到困惑。
我想在\n
出现时对数据执行某些操作,但库中的当前read()似乎只是转储屏幕上的内容。我正在寻找的是一种在新数据进入时触发功能的方法。
答案 0 :(得分:4)
Ruby和操作系统已经为您处理串行I / O的事件驱动部分。
您的gem实现的SerialPort
类是IO
的子级,因此它已经处理了读取换行符...就像这样:
sp = SerialPort.new "/dev/my-modem", 9600
...
while s = sp.gets
..
end
答案 1 :(得分:-1)
我认为您需要在应用程序中创建另一个线程来监听数据。
然后你应该处理传入的数据 - 放入某种数组。
使用Observer设计模式跟踪数据的状态 - 然后你将拥有你的功能 - 记住ruby不是事件驱动的语言。