2

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

计算机每天都会重新启动,有时条码扫描器会整天正常工作,但大约 25% 的时间会在一天中停止工作。随着停止工作,我的意思是 NodeJS 不再中继传入的串行流。条形码扫描仪本身似乎运行良好,它仍然会发出愉快的哔哔声,重新启动后它会正常运行......直到 NodeJS 再次停止工作。

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

我觉得我没有太多的信息可以继续。我很想知道接下来要尝试什么的一些提示。

4

1 回答 1

0

我的代码存在问题,因为 serialport.write 命令在 3 次尝试后会失败。看起来问题是我的 serialport.write 函数在 write 之后等待响应。但是我也有一些同步代码..(console.log) 无法执行,因为回调响应函数在串行端口触发的操作运行之前不会运行。这似乎使 nodejs 感到困惑,似乎您不能在同一个例程中混合异步回调和同步代码

global.serialPort.write("a", function(err, results) {

   console.log('results ' + results);  });

console.log('completed');

删除最后一行意味着该例程有效。看看你的代码,看看你是否有这种混合物

于 2013-06-19T23:10:58.910 回答