需要Ruby中串口通信的帮助

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二进制宝石,它可以解决每个人的问题,他说这在他的清单上。