node-hid: получить устройство по серийному номеру - PullRequest
0 голосов
/ 20 апреля 2020

Есть ли способ определить скрытое устройство, используя его серийный номер? У меня есть несколько читателей кода с тем же поставщиком и идентификатором продукта. Сейчас я использую путь к устройству, но это также не лучший способ (путь не статичен c, иногда он изменяется при запуске системы).

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'});
.
.
.

1 Ответ

0 голосов
/ 27 апреля 2020

Нет способа определить скрытые устройства напрямую по его серийному номеру, но это может быть сделано другой рукой.

В соответствии с документацией 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
...