如何检测使用Node.js连接的USB设备

时间:2016-03-07 12:36:40

标签: javascript node.js meteor serial-port

我是Node.js的新手。我想检测是否有任何USB / Mass存储设备连接到系统。

因为我们在C#中有像

那样的东西
// Add USB plugged event watching
        watcherAttach = new ManagementEventWatcher();
        watcherAttach.EventArrived += watcherAttach_EventArrived;
        watcherAttach.Query = new WqlEventQuery("SELECT * FROM  Win32_DeviceChangeEvent WHERE EventType = 2");
        watcherAttach.Start();

        // Add USB unplugged event watching
        watcherDetach = new ManagementEventWatcher();
        watcherDetach.EventArrived += watcherDetach_EventArrived;
        watcherDetach.Query = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 3");
        watcherDetach.Start();

请建议我们如何在Node.js中执行类似C#的操作。

2 个答案:

答案 0 :(得分:4)

Node-usb是一个节点库,我认为它提供了您正在寻找的确切内容。我不确定如何在没有库的情况下执行此操作,但如果您不想使用外部库,也许可以查看其源代码。

根据他们的文档,你可以使用

var usb = require('usb')
usb.on('attach', function(device) { ... });

在连接新设备时运行回调。

答案 1 :(得分:2)

更好的解决方案是使用'usb-detection'https://www.npmjs.com/package/usb-detection

您可以收听按productId或vendorId过滤的特定USB设备:

// Detect add or remove (change) 
usbDetect.on('change', function(device) { console.log('change', device); });
usbDetect.on('change:vid', function(device) { console.log('change', device); });
usbDetect.on('change:vid:pid', function(device) { console.log('change', device); });

// Get a list of USB devices on your system, optionally filtered by `vid` or `pid` 
usbDetect.find(function(err, devices) { console.log('find', devices, err); });
usbDetect.find(vid, function(err, devices) { console.log('find', devices, err); });
usbDetect.find(vid, pid, function(err, devices) { console.log('find', devices, err); });
// Promise version of `find`: 
usbDetect.find().then(function(devices) { console.log(devices); }).catch(function(err) { console.log(err); });