我正在使用NodeJS将条形码扫描仪连接到web前端。条形码扫描仪的串行端口通过Windows7转串行转换器连接到PC (Usb x64)。我使用的是node-serialport。这个设置是在博物馆的一个安装上运行的。
计算机每天都会重新启动,有时条形码扫描仪可以全天正常工作,但大约有25%的时间它会全天停止工作。通过停止工作,我的意思是NodeJS不再中继传入的串行流。条形码扫描器本身似乎运行良好,它仍然会发出愉快的嘟嘟声,重新启动后,它将正常工作。直到NodeJS再次停止工作。
当扫描仪停止工作时,NodeJS窗口不会显示任何错误代码,但此时它完全没有响应。到那时,似乎不可能关闭NodeJS实例。我尝试了Ctrl-C,通过任务管理器结束进程,并使用taskkill从CMD窗口终止NodeJS的PID。它们都没有任何影响。当使用Taskkill时,CMD窗口会很高兴地显示进程已被终止,但NodeJS窗口不会关闭,并且仍然存在于任务管理器中。只有强制重启才能“解决”这个问题。
我觉得我掌握的信息很少。我想要一些关于下一步尝试的小贴士。
发布于 2013-06-20 07:10:59
我的代码有一个问题,serialport.write命令在尝试3次后会失败。看起来问题是我的serialport.write函数在写入之后等待响应。但是,我还有一些同步代码..(console.log),它们不能执行,因为回调响应函数在由串口触发的操作运行之前不会运行。这似乎混淆了nodejs,似乎您不能在同一例程中混合使用异步回调和同步代码
global.serialPort.write("a", function(err, results) {
console.log('results ' + results); });
console.log('completed');删除最后一行意味着例程可以工作。看一看你的代码,看看你有没有这种混合
https://stackoverflow.com/questions/17113379
复制相似问题