【问题标题】:Getting USB data for OS X /dev/tty.* entry获取 OS X /dev/tty.* 条目的 USB 数据
【发布时间】:2015-07-18 14:21:06
【问题描述】:

我正在尝试(以 Java 编程方式,尽管可以运行外部脚本)获取 USB idProduct、idVendor 以及理想情况下用于 USB 设备的制造商和产品的字符串描述符。

设备有(我一开始就提供了)一个 /dev/tty.usbmodem 条目,我需要一些方法来可靠地将它映射回 USB 信息,但我找不到任何东西这将一个与另一个相关联(或者更确切地说我不知道​​在哪里看)。

相关设备的 /dev 条目为:

crw-rw-rw-  1 root  wheel   10,   2 18 Jul 15:08 /dev/tty.usbmodem9f31

system_profiler 为我提供了设备的以下 USB 信息:

<dict>
    <key>_name</key>
    <string>Stk500v2</string>
    <key>a_product_id</key>
    <string>0xa662</string>
    <key>b_vendor_id</key>
    <string>0x0403  (Future Technology Devices International Limited)</string>
    <key>c_bcd_device</key>
    <string> 1.80</string>
    <key>e_device_speed</key>
    <string>full_speed</string>
    <key>f_manufacturer</key>
    <string>www.cpustick.com</string>
    <key>g_location_id</key>
    <string>0x9f300000</string>
    <key>h_bus_power</key>
    <string>500</string>
    <key>j_bus_power_used</key>
    <string>500</string>
</dict>

我可以看到 g_location_id 的前缀 0x9f3 与 dev 条目的后缀 9f31 的开头相匹配,但我不知道 a)它有多可靠,以及 b)“1”在结束,以及在同一总线上拥有多个相同设备会如何影响,以及如何区分它们。

我还需要使用其他设备来执行此操作,但它们并不都遵循相同的命名规则。其中之一使用 USB 序列号字段作为后缀。我猜其他潜在的(我根本无法控制的)可能会再次以不同的方式做。

所以基本上我需要某种方式将文本设备名称 /dev/tty.whatever 映射到物理 USB 设备条目,然后我可以从中提取我需要的数据。在 Linux 上,我通过遍历 /sys 树从 /sys/class/tty 到 /sys/devices/pci...blahblah/usb[x]/wherever 来做到这一点,但我在 OS X 上找不到类似的设施。

【问题讨论】:

    标签: macos usb tty


    【解决方案1】:

    您可以使用IOKit 获取 Mac OS X 上串口的 USB 供应商 ID 和产品 ID。

    此外,您还可以使用一个名为 libserialport 的库:

    http://sigrok.org/wiki/Libserialport

    【讨论】:

    • IOKit 看起来是前进的方向——它是我链条中缺失的一环。 Libserialport 意味着我要编写一个我宁愿避免的外部帮助程序——如果可能的话,我宁愿使用系统安装的二进制文件。解析ioreg 可能是这样做的方法。您是否完全了解它的 Java 包装器?我有一个谷歌,但 IOKit 似乎有点模棱两可......
    猜你喜欢
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 2018-06-02
    相关资源
    最近更新 更多