4

我需要通过 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
4

3 回答 3

3

仅仅因为搜索 ruby​​-serialport 有时会引导您:

toholio 的 github repo 似乎不再活跃(截至 09/2010)。发布的gem来自

http://github.com/hparra/ruby-serialport

于 2010-09-28T10:53:28.227 回答
2

串口规范永远不会改变,我不会担心库有多旧。

我假设您从 2006 年开始看到这篇关于 ruby​​ 和串行端口的文章

今年有人得到了那里提到的Ruby-SerialPort库在 Mac 上工作。

还有一篇来自 ruby​​ talk 的旧帖子,关于与 Win32 Serial API 的接口。

于 2008-10-03T18:05:22.460 回答
1

虽然串行标准没有改变,但 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,它可以解决每个人的问题,他说这是他要做的事情。

于 2008-10-27T23:06:13.083 回答