node-hid:通过序列号获取设备
node-hid: get Device by serial number
有没有办法通过序列号来定义隐藏设备?
我有几个具有相同供应商和产品 ID 的读码器。现在我正在使用设备路径,但这也不是最好的方法(路径不是静态的,它有时会在系统启动期间发生变化)。
var KeyboardCharacters = require('node-hid-stream').KeyboardCharacters;
var CReaderD1 = new KeyboardCharacters({path: '/dev/hidraw0'});
var CReaderD2 = new KeyboardCharacters({path: '/dev/hidraw1'});
var CReaderD3 = new KeyboardCharacters({path: '/dev/hidraw3'});
var CReaderD4 = new KeyboardCharacters({path: '/dev/hidraw2'});
.
.
.
无法通过序列号直接定义隐藏设备,但可以通过其他方式完成。
根据 node-hid- 文档:
Picking a device from the device list
If you need to filter down the HID.devices() list, you can use standard Javascript array techniques:
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
有没有办法通过序列号来定义隐藏设备? 我有几个具有相同供应商和产品 ID 的读码器。现在我正在使用设备路径,但这也不是最好的方法(路径不是静态的,它有时会在系统启动期间发生变化)。
var KeyboardCharacters = require('node-hid-stream').KeyboardCharacters;
var CReaderD1 = new KeyboardCharacters({path: '/dev/hidraw0'});
var CReaderD2 = new KeyboardCharacters({path: '/dev/hidraw1'});
var CReaderD3 = new KeyboardCharacters({path: '/dev/hidraw3'});
var CReaderD4 = new KeyboardCharacters({path: '/dev/hidraw2'});
.
.
.
无法通过序列号直接定义隐藏设备,但可以通过其他方式完成。
根据 node-hid- 文档:
Picking a device from the device list
If you need to filter down the HID.devices() list, you can use standard Javascript array techniques:
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