我正在编写一个node.js JavaScript应用程序,可以在Mac(macOS服务器)上运行,它将与插入的USB设备进行通信。我需要用来与设备交互的库需要一个路径形式/dev/pathToDevice
- 例如lib.connect('/dev/pathToDevice');
- 而我在代码中识别USB设备的唯一方法是在插入时通过NPM的usb检测库获得的vendorId(VID)和productId(PID)。
我如何在JavaScript中从插入的USB设备的VID和PID中识别或导出设备的路径,以便将其传递给库?
答案 0 :(得分:0)
您可以编写一个使用libusbp中的libusbp_generic_interface_get_os_filename
函数的小型C ++程序。然后,您将从node.js调用C程序。如果您需要编写C ++程序的帮助,请告诉我。我可能会从libusbp的源代码树的port_name
示例开始。
或者,您可以按原样使用lsusb
中的libusbp
示例。它为每个设备返回类似/sys/devices/pci0000:00/0000:00:06.0/usb1/1-1
的路径。这是一个包含一堆特殊文件的目录;其中一个是busnum
,其中一个是devnum
,这是构建像/dev/bus/usb/DEVNUM/BUSNUM
这样的路径所需的两个数字。
如果可行,您可能更喜欢从node.js为libusbp编写绑定,而不是使用C可执行文件。
答案 1 :(得分:0)
尝试drivelist,它为您提供了安装路径及其跨平台,您可以轻松地将其与USB检测结合起来。
var drivelist = require("drivelist")
drivelist.list((error, devices)=> { console.log(devices) })
//Output
[ {
//stuff...
device: '/dev/disk0',
raw: '/dev/rdisk0',
mountpoints: [
{"path":"/","label":"Macintosh HD"},
{"path":"/private/var/vm","label":"VM"}
],
isRemovable: false,
//stuff....
]