node-hid:通过序列号获取设备

问题描述 投票:0回答:1

有什么方法可以通过使用其序列号来定义隐藏设备?我有几个具有相同供应商和产品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.js raspberry-pi hid
1个回答
0
投票

无法通过其序列号直接定义隐藏设备,但可以从另一方面进行定义。

根据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
© www.soinside.com 2019 - 2024. All rights reserved.