Need assistance with serial port communications in Ruby
我需要在Ruby的串行端口上进行一些通信。根据我的研究,似乎没有很多现代的串行通信图书馆,我能找到的最新资料是2006年的。有没有我不知道的宝石?
我最终需要与一个连接到USB的串行设备保持通信(我可以确定端口没有问题),以便进行来回通信(有点像Ruby风格的伪代码)。
1 2 3 4 5 6 7 8 9 | 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 |
因为搜索ruby serialport有时会引导您:
Toholio的Github回购似乎不再活跃(截至2010年9月)。出版的宝石来自
http://github.com/hparra/ruby-serialport
串行端口规范并没有永久性的改变,我不担心这些库有多旧。
我假设您看到了2006年关于Ruby和串行端口的文章
这是一个让这里提到的Ruby serialport库今年在Mac上工作的人。
RubyTalk还有一篇关于连接到win32串行API的老文章。
虽然串行标准没有改变,但是RubyGems与RubyC扩展的交互方式多年来已经发生了很大的变化,因此RubyForge串行端口扩展无法正常工作。多年来,Rubyforge上有一些补丁可以修复这个问题,但它并不漂亮。好消息是,GitHub已经允许在清理Ruby串行端口扩展的活动中实现了令人难以置信的加速。至少有三个人在Github上交叉分支他们的串行端口代码。您可以在Github上搜索,但我相信Toholio有最新的代码,它将Ruby串行端口重新编码并重新打包为Ruby gem。(耶!)
http://github.com/toholio/ruby-serialport/tree/master
它在Linux上非常适合我,解决了早期与最新RubyGems版本的冲突。在Windows上,我仍然无法让它正常工作。在Windows上编译Ruby扩展从来都不是一件容易的事,但那是一个非常简单的蠕虫。我很高兴大家又开始支持Ruby串行端口了。我已经要求Toholio生成一个Windows二进制宝石,它可以解决每个人的问题,他说这在他的清单上。