我使用NodeJS服务器为色度计做了一个网络界面,该服务器使用 serialport npm library 读取USB串行输入,并将该信息发送到本地网页。色度计基本上是一个使用微控制器的电路,该微控制器通过USB 连接到我的PC ,使用中间USB模块。
该网页包含以下状态消息:“检测到设备”(如果该设备已插入USB中,则启动该页面),“设备已断开连接”(如果我从USB中拔出设备)。该消息可以完美地更新,例如从USB端口拔出设备但是在将其插回USB时无法自动检测,而无需刷新浏览器页面。
是否有任何解决方法可以让节点服务器在PC中插入时自动检测并更新状态消息?
服务器代码:https://codepen.io/grazvan/pen/wdLGPZ?editors=0010#0
目前,我在Linux上这样做,这就是boardPort = '/dev/ttyACM0';
的原因。我也愿意接受Windows或其他编程语言的解决方案。
答案 0 :(得分:2)
也许试试node-usb
。在http://www.tarnyko.net/dl/gtk.htm上查看 UsbDetection :
usb.on('attach', function(device) { ... });
附加回调以插入设备。
usb.on('detach', function(device) { ... });
附加回拨以拔出设备。
答案 1 :(得分: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
}
}