首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用node-serialport的NodeJS有时会变得无响应

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

Stack Overflow用户
提问于 2013-06-15 00:40:39
回答 1查看 1.8K关注 0票数 2

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

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

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

我觉得我掌握的信息很少。我想要一些关于下一步尝试的小贴士。

EN

回答 1

Stack Overflow用户

发布于 2013-06-20 07:10:59

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

代码语言:javascript
复制
global.serialPort.write("a", function(err, results) {

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

console.log('completed');

删除最后一行意味着例程可以工作。看一看你的代码,看看你有没有这种混合

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17113379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档