Ruby-Serialport:听取输入

时间:2011-04-23 23:58:49

标签: ruby serial-port

我计划很快转向使用串行设备输入编码,并且非常乐意找到Ruby-serialport。 API看起来很容易使用,但我对如何采用基于事件的方法接收数据感到困惑。

我想在\n出现时对数据执行某些操作,但库中的当前read()似乎只是转储屏幕上的内容。我正在寻找的是一种在新数据进入时触发功能的方法。

2 个答案:

答案 0 :(得分:4)

Ruby和操作系统已经为您处理串行I / O的事件驱动部分。

您的gem实现的SerialPort类是IO的子级,因此它已经处理了读取换行符...就像这样:

sp = SerialPort.new "/dev/my-modem", 9600
...
while s = sp.gets
  ..
end

答案 1 :(得分:-1)

我认为您需要在应用程序中创建另一个线程来监听数据。

然后你应该处理传入的数据 - 放入某种数组。

使用Observer设计模式跟踪数据的状态 - 然后你将拥有你的功能 - 记住ruby不是事件驱动的语言。