所有
我使用node-hid将命令发送到USB转I2C适配器。在我的程序运行时拔出并重新插入设备时,该适配器上的固件可能会被锁定。我已经能够确定我的程序挂在我的hid write的调用上,这是一个同步调用。当固件锁定时,我的程序变得没有响应。如果我重新插入设备并让固件恢复,那么我可以捕获写入失败并正确处理。我尝试做的是提醒用户该设备似乎已被锁定,他们需要拔下并重新插上它。
我尝试执行类似下面的操作来设置写入调用的超时时间,如果没有完成并在2秒内清除超时,则告诉用户重置设备。
function alertUser() {
alert("It appears that the USB2ANY has had an error\nPlease disconnect and reconnect the device and clear this alert");
}
try {
//TODO: Gets stuck here when USB2ANY goes south. Need a way to stop this or alert user to reset the USB2ANY
// write is a synchronous call
var timer = setInterval(alertUser, 2000);
console.log("Calling hid write for " + command);
this.hid.write(temp);
clearInterval(timer);
console.log("Finished hid write for " + command);
} catch(err) {
console.log("HID write failed = " + err);
u2aFlushCallbacks();
}
不幸的是,由于写命令是同步的,因此定时器不会触发。我不知道如何解决这个问题。我可以以某种方式包装此调用以使其异步吗?