在Ruby中的串行端口通信方面需要帮助
我需要通过Ruby中的串行端口进行一些通信。根据我的研究,似乎没有太多用于串行通信的现代库,而我能找到的最新材料是2006年的。我有没有知道的宝石?
我最终需要与连接到USB的串行设备(我可以弄清楚端口没有问题)之间保持通信,以进行来回通信(类似Ruby式的伪代码)。
def serial_write_read if serial.read == "READY" serial.write "1" until serial.read == "OK" serial.write "5" end return when serial.read == "DONE" end end
解决方案
串行端口规范永远都不会改变,我不会担心这些库有多老。
我假设我们看过2006年的这篇有关ruby和串口的文章
这是有人提到的Ruby-SerialPort库今年可以在Mac上使用。
在ruby的演讲中也有一篇旧文章,内容涉及与Win32 Serial API的接口。
尽管串行标准没有改变,但多年来Ruby Gems与Ruby C扩展交互的方式发生了足够的变化,因此RubyForge串行端口扩展不能很好地发挥作用。这些年来,RubyForge上已经有一些补丁可以解决该问题,但是还不是很漂亮。好消息是,Github大大加快了清理Ruby串行端口扩展的活动。至少三个不同的人正在Github上交叉分支其串行端口代码。我们可以在Github上搜索,但我相信Toholio具有最新的代码,该代码将Ruby串行端口重新编码和重新打包为Ruby Gem。 (是的!)
http://github.com/toholio/ruby-serialport/tree/master
它在Linux上对我非常有用,可以通过最新的Ruby Gems版本解决早期的冲突。在Windows上,我仍然无法正常工作。在Windows上编译Ruby扩展从来都不是一件容易的事,但是这完全是蠕虫的"灵丹妙药"。我很高兴人们再次致力于Ruby串行端口支持。我已经要求Toholio生成一个Windows二进制gem,它将解决每个人的问题,他说这是他的工作。
仅仅是因为搜索ruby-serialport有时会带我们到这里:
toholio的github存储库似乎不再处于活动状态(截至09/2010)。
出版的宝石来自
http://github.com/hparra/ruby-serialport