2017-09-21 1 views
1

NodeJS에있는이 풋 페달의 키를 다시 매핑하는 애플리케이션을 작성하고 싶습니다. 내 발 페달에 대한 비슷한 라이브러리를 발견했다. 그러나 OSX가 아닌 Linux 용 장치의 USB 경로를 하드 코드합니다. 오류가 발생하는 :osx에서 USB 장치의 "경로"를 식별하고 노드에서 데이터를 작성하는 방법은 무엇입니까?

failed to open file { Error: ENOENT: no such file or directory, open '/dev/usb/hiddev0' 
    errno: -2, 
    code: 'ENOENT', 
    syscall: 'open', 
    path: '/dev/usb/hiddev0' 

질문 : 내 장치의 USB 경로를 식별 할 수있는 방법 내가 createReadStream USB 장치에서 데이터를 할 수 있도록.

터미널 명령을

system_profiler SPUSBDataType 

출력 :

https://www.npmjs.com/package/node-hid

: 여기
VEC USB Footpedal: 

       Product ID: 0x00ff 
       Vendor ID: 0x05f3 (PI Engineering, Inc) 
       Version: 1.20 
       Speed: Up to 1.5 Mb/sec 
       Manufacturer: VEC 
       Location ID: 0x1d112000/9 
       Current Available (mA): 500 
       Current Required (mA): 100 
       Extra Operating Current (mA): 0 


#! /usr/bin/env node 
'use strict'; 

const fs = require('fs'); 
const robot = require('robotjs'); 

const DEFAULT_DEVICE_PATH = '/dev/usb/hiddev0'; // this path needs to change 
const DEFAULT_KEYS = ['a', 'b', 'c']; 
const RETRY_INTERVAL = 5 * 1000; 

const argv = require('yargs') 
      .array('k') 
      .alias('k', 'keys') 
      .alias('p', 'path') 
      .default('path', DEFAULT_DEVICE_PATH) 
      .default('k', []) 
      .argv; 

const keyMap = DEFAULT_KEYS.map((key, i) => (argv.keys[i] || key)); 
const state = [ false, false, false ]; 

function updateState(index, value) { 
    const previousState = state[index]; 
    const currentState = (value === 0x01); 

    if (previousState !== currentState) { 
    const key = keyMap[index]; 
    robot.keyToggle(key, currentState ? 'down' : 'up'); 
    } 

    state[index] = currentState; 
} 

function openFile() { 
    const stream = fs.createReadStream(argv.path); // so that I can read the stream here. 
    const size = 8; 
    const offset = 4; 

    stream.on('data', function(chunk) { 
    for (var i=0; i<chunk.length/size; i++) { 
     updateState(i, chunk[i * size + offset]); 
    } 
    }); 

    stream.on('error', function(err) { 
    console.log('failed to open file', err); 
    setTimeout(openFile, RETRY_INTERVAL); 
    }); 
} 

openFile(); 

답변

0

는 OSX의 모든 HID USB 장치 당신에게 경로를 제공하는 라이브러리입니다
관련 문제