【发布时间】: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 上找不到类似的设施。
【问题讨论】: