首页 文章

使NodeJS服务器通过USB自动检测连接的设备

提问于
浏览
1

我使用NodeJS服务器为色度计做了一个Web界面,该服务器使用 serialport npm library 读取USB串行输入并将该信息发送到本地网页 . 色度计基本上是使用微控制器的电路,该微控制器是使用中间USB模块的.1732987_ .

该网页具有以下状态消息: "Device Detected" (如果页面是在设备已插入USB的情况下启动的话), "Device Disconnected" (如果我从USB中拔出设备) . 该消息可以完美地更新,例如从USB端口拔出设备但我无法在将其插回USB时自动检测,而无需刷新浏览器页面 .

是否有任何解决方法在PC中制作节点服务器 detect automatically when the USB device is inserted 并更新状态消息?

服务器代码:https://codepen.io/grazvan/pen/wdLGPZ?editors=0010#0目前,我在Linux上这样做,这就是 boardPort = '/dev/ttyACM0'; 的原因 . 我对Windows或其他编程语言的解决方案也持开放态度 .

2 回答

  • 2

    也许试试 node-usb . 在https://github.com/tessel/node-usb见UsbDetection:

    usb.on('attach', function(device) { ... });
    

    附加回调以插入设备 .

    usb.on('detach', function(device) { ... });
    

    附加回拨以拔出设备 .

  • 0

    由于我想要实现一个可以连接到任何类型串口的服务器,不仅是USB(作为节点-USB库),我成功实现了一个自动检测功能,可以监听并知道相关设备何时已连接 .

    let boardPort = '';
    let boardKeywordIdentifier = 'Arduino'; //my device identifier
    let checkingTimeInterval = 1000;
    let waitForUsb = setInterval(getBoardPortName, checkingTimeInterval);
    
    function getBoardPortName() {
    
        SerialPort.list(function(err,ports) {
            ports.forEach(function(port){
    
                if(port.manufacturer.includes(boardKeywordIdentifier)) {
                    boardPort = port.comName;
                }
    
            })
        });
    
        if(boardPort != '') {
            clearInterval(waitForUsb);
            listenToTheBoard(boardPort); //function to be executed when board is connected
        }
    
    }
    

相关问题