使用node-serialport的NodeJS有时会变得无法响应

我正在使用NodeJS将条形码扫描器连接到Web前端。 条形码扫描器的串行端口通过USB转串口转换器连接到PC(Windows7 pro x64)。 我正在使用node-serialport 。 这个设置在博物馆的一个安装中运行。

计算机每天都会重新启动,有时条形码扫描仪一整天都可以正常工作,但大约有25%的时间停止工作。 停止工作,我的意思是NodeJS不再中继传入的串行stream。 条码扫描器本身似乎是做的很好,它仍然愉快地stream淌,重新启动后,它将正常工作..直到NodeJS停止再次工作。

当扫描器停止工作时,NodeJS窗口不显示任何错误代码,但是到那时它完全没有响应。 那么closuresNodeJS实例似乎是不可能的。 我试过Ctrl-C,通过任务pipe理器结束进程并使用taskkill从CMD窗口中终止NodeJS的PID。 它们都具有零效应。 当使用Taskkill时,CMD窗口会高兴地说这个进程已经被终止了,但是NodeJS窗口不会closures,并且在任务pipe理器中仍然存在。 只有有力的重启才能“解决”这个问题。

我觉得我有很less的信息要继续下去。 我想知道下一步要做什么。

我的代码有问题,serialport.write命令在尝试3次后会失败。 看起来问题是我的serialport.write函数在写入之后等待响应。 然而,我也有一些同步代码..(console.log)不能执行,因为callback响应函数将不会运行,直到由serialport触发的操作运行。 这似乎混淆了nodejs,似乎你不能在同一个例程中混合asynchronouscallback和同步代码

global.serialPort.write("a", function(err, results) { console.log('results ' + results); }); console.log('completed'); 

删除最后一行意味着日常工作。 看看你的代码,看看你是否有这种混合