【问题标题】:Reading data from USB device (Waterrower S4 Monitor) with libusb and Ruby使用 libusb 和 Ruby 从 USB 设备(Waterrower S4 监视器)读取数据
【发布时间】:2015-04-16 06:31:03
【问题描述】:

我买了一个Waterrower,它有一个S4 Performance Monitor,背面有一个Micro-USB连接器,我认为能够获取来自S4的数据并用它做一些好事会很好.

我确实知道一些 Ruby,但我根本不喜欢与硬件交谈。我确实在 Github 上找到了 libusb Ruby binding by Lars Kanis 并玩弄了它:

2.1.0 :001 > require "libusb"
 => true 
2.1.0 :002 > usb = LIBUSB::Context.new
 => #<LIBUSB::Context:0x000001011451c0 @ctx=#<FFI::Pointer address=0x000001032788b0>, @on_pollfd_added=nil, @on_pollfd_removed=nil, @hotplug_callbacks={}> 
2.1.0 :003 > usb.devices
 => [#<LIBUSB::Device 20/9 04d8:000a Microchip Technology Inc. CDC RS-232: WR-S4.2 ? (Comm (00,00))>, #<LIBUSB::Device 20/8 054c:0243 Sony Storage Media 2A08080530914 (MassStorage SCSI Bulk-Only)>, #<LIBUSB::Device 20/1 05ac:025a Apple Inc. Apple Internal Keyboard / Trackpad ? (HID (01,01), HID (00,00), HID (01,02))>, #<LIBUSB::Device 20/129 05ac:8007 ? ? ? (Hi-speed Hub with single TT)>, #<LIBUSB::Device 21/128 05ac:8007 ? ? ? (Hub (00,03))>] 
2.1.0 :004 > wr_s4 = usb.devices(:idVendor => 0x04d8, :idProduct => 0x000a).first
 => #<LIBUSB::Device 20/9 04d8:000a Microchip Technology Inc. CDC RS-232: WR-S4.2 ? (Comm (00,00))> 
2.1.0 :005 > wr_s4
 => #<LIBUSB::Device 20/9 04d8:000a Microchip Technology Inc. CDC RS-232: WR-S4.2 ? (Comm (00,00))>

如您所见,我能够连接到正确的设备(名为wr_s4)。

现在,我不知道 S4 Monitor 将以何种格式通过 USB 发送数据,以及读取数据的最智能方式是什么。

对于 S4 性能监视器或使用 Ruby 从 USB 设备获取数据的任何帮助,我们将不胜感激。

非常感谢您的帮助!

【问题讨论】:

  • 嘿,你知道如何在 ruby​​ 中从 USB 发送和获取文件吗?

标签: ruby macos usb osx-yosemite libusb


【解决方案1】:

你看过标题为“Water Rower S4 S5 USB Protocol Iss 1.04.doc”的文档吗?

Here 是链接。

github项目似乎和你想做的差不多。它应该有助于理解 USB 数据。

【讨论】:

  • 太棒了!非常感谢!
  • 该链接已失效,但您可以找到相同的文档here
【解决方案2】:

您可以联系制造商并询问 USB 协议的详细信息。如果他们不告诉你,那么你只需要对其进行逆向工程。

制造商提供适用于 Windows 的软件,因此您可以做的是让该软件正常工作,然后使用某种 USB 协议分析器来查看 USB 数据包。我推荐Beagle USB 12,但您可能可以免费找到一些软件 USB 协议分析器,它可能已经足够好了。

一旦您对 USB 有了足够的了解并弄清楚了协议是什么,编写发送和接收所需数据的 libusb 命令就相对容易了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多