Нет способа определить скрытые устройства напрямую по его серийному номеру, но это может быть сделано другой рукой.
В соответствии с документацией node-hid:
Выбор устройства из списка устройств
Если вам нужно отфильтровать список HID.devices (), вы можете использовать стандартные методы Javascript массива:
var devices = HID.devices();
var deviceInfo = devices.find( function(d) {
var isTeensy = d.vendorId===0x16C0 && d.productId===0x0486;
return isTeensy && d.usagePage===0xFFAB && d.usage===0x200;
});
if( deviceInfo ) {
var device = new HID.HID( deviceInfo.path );
// ... use device
}
Я изменил этот пример кода для своих целей, и он отлично работает. Это было именно то, что я искал.
Код:
var HID = require('node-hid');
var CodeReaders_SN = {CD1: 'S/N:90908B7FB888144AB5B24E00CC94329A Rev:PAAASS00-007-R02-3',
CD2: 'S/N:0A79B01259DBAC408626ACE774F276C5 Rev:PAAASS00-007-R02-3',
CU1: 'S/N:885A258366CA254081B5D07AC824B796 Rev:PAAASS00-007-R02-3',
CU2: 'S/N:EAEA0A7167869D4EAED90048FF7C653F Rev:PAAASS00-007-R02-3'};
var CodeReaders_Path = {CD1: '',CD2: '',CU1: '',CU2: ''};
if( process.argv[2] ) {
var type = process.argv[2];
console.log("driverType:",type);
HID.setDriverType( type );
}
console.log('devices:', HID.devices());
console.log('-----------------');
var devices = HID.devices();
var deviceInfo = devices.find( function(d) {
if (d.serialNumber == CodeReaders_SN.CD1){
CodeReaders_Path.CD1 = d.path;
console.log('Serial no: ',d.serialNumber, 'path:', CodeReaders_Path.CD1);
}
if (d.serialNumber == CodeReaders_SN.CD2){
CodeReaders_Path.CD2 = d.path;
console.log('Serial no: ',d.serialNumber, 'path:', CodeReaders_Path.CD2);
}
if (d.serialNumber == CodeReaders_SN.CU1){
CodeReaders_Path.CU1 = d.path;
console.log('Serial no: ',d.serialNumber, 'path:', CodeReaders_Path.CU1);
}
if (d.serialNumber == CodeReaders_SN.CU2){
CodeReaders_Path.CU2 = d.path;
console.log('Serial no: ',d.serialNumber, 'path:', CodeReaders_Path.CU2);
}
});
var KeyboardCharacters = require('node-hid-stream').KeyboardCharacters;
var CReaderD1 = new KeyboardCharacters({path: CodeReaders_Path.CD1});
var CReaderD2 = new KeyboardCharacters({path: CodeReaders_Path.CD2});
var CReaderU1 = new KeyboardCharacters({path: CodeReaders_Path.CU1});
var CReaderU2 = new KeyboardCharacters({path: CodeReaders_Path.CU2});
Терминал:
devices: [ { vendorId: 1504,
productId: 4608,
path: '/dev/hidraw0',
serialNumber:
'S/N:90908B7FB888144AB5B24E00CC94329A Rev:PAAASS00-007-R02-3',
manufacturer: 'Symbol Technologies, Inc, 2008',
product: 'Symbol Bar Code Scanner',
release: 256,
interface: 0 },
{ vendorId: 1504,
productId: 4608,
path: '/dev/hidraw2',
serialNumber:
'S/N:0A79B01259DBAC408626ACE774F276C5 Rev:PAAASS00-007-R02-3',
manufacturer: 'Symbol Technologies, Inc, 2008',
product: 'Symbol Bar Code Scanner',
release: 256,
interface: 0 },
{ vendorId: 1504,
productId: 4608,
path: '/dev/hidraw3',
serialNumber:
'S/N:885A258366CA254081B5D07AC824B796 Rev:PAAASS00-007-R02-3',
manufacturer: 'Symbol Technologies, Inc, 2008',
product: 'Symbol Bar Code Scanner',
release: 256,
interface: 0 },
{ vendorId: 1504,
productId: 4608,
path: '/dev/hidraw4',
serialNumber:
'S/N:EAEA0A7167869D4EAED90048FF7C653F Rev:PAAASS00-007-R02-3',
manufacturer: 'Symbol Technologies, Inc, 2008',
product: 'Symbol Bar Code Scanner',
release: 256,
interface: 0 },
{ vendorId: 6700,
productId: 11555,
path: '/dev/hidraw5',
serialNumber: '',
manufacturer: 'USB',
product: 'USB Keyboard',
release: 272,
interface: 0 },
{ vendorId: 6700,
productId: 11555,
path: '/dev/hidraw6',
serialNumber: '',
manufacturer: 'USB',
product: 'USB Keyboard',
release: 272,
interface: 1 },
{ vendorId: 1133,
productId: 49182,
path: '/dev/hidraw1',
serialNumber: '',
manufacturer: 'Logitech',
product: 'USB-PS/2 Optical Mouse',
release: 8704,
interface: 0 } ]
-----------------
Serial no: S/N:90908B7FB888144AB5B24E00CC94329A Rev:PAAASS00-007-R02-3 path: /dev/hidraw0
Serial no: S/N:0A79B01259DBAC408626ACE774F276C5 Rev:PAAASS00-007-R02-3 path: /dev/hidraw2
Serial no: S/N:885A258366CA254081B5D07AC824B796 Rev:PAAASS00-007-R02-3 path: /dev/hidraw3
Serial no: S/N:EAEA0A7167869D4EAED90048FF7C653F Rev:PAAASS00-007-R02-3 path: /dev/hidraw4