首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node.js节点串行端口具有显著的写入延迟

node.js节点串行端口具有显著的写入延迟
EN

Stack Overflow用户
提问于 2014-03-08 08:08:37
回答 1查看 905关注 0票数 1

我有一个由微处理器组成的系统,它通过串口连接到树莓派。raspberry pi使用node-serialport运行node.js,以提供基于web的用户界面。

当我尝试通过web接口写入串口时,在收到微控制器的回复(10秒到几分钟)之前,我经常遇到很长的延迟,这意味着serialport.write不知何故被延迟了。(我没有看到错误,端口也没有关闭。)在第6次串口写入之后,这种情况会持续发生。如果我重新加载浏览器,它将再次正常工作,直到第7个请求。

这是在node.js中打开数据并将数据推送到串口的例程:

代码语言:javascript
复制
var myPort = new SerialPort("/dev/ttyAMA0", { 
  baudrate: 38400,
  parser: serialport.parsers.readline("\n")
});

app.post('/sendtoavr', function(req, res) {
  myPort.write(req.body.cmd);
});

myPort.on('close', function(err) {
  console.log('node-serialport closed!!!');
});

myPort.on('error', function(err) {
  console.log('node-serialport error!!!');
});

此jquery例程用于向rpi发送http post请求:

代码语言:javascript
复制
$("#btnSearchTempSensors").click(function() {
  var strCMD = String.fromCharCode(84) + String.fromCharCode(83) + String.fromCharCode(13);
  $.post('/sendtoavr', {cmd: strCMD});
});

当在chrome中查看网络控制台时,它看起来http post请求立即被发送,并且当通过ssh通过minicom向微控制器发送命令时,没有任何问题。

因此,我怀疑是节点串口还是node.js,但是如何进一步挖掘呢?

有人有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-03-08 17:53:45

找到了一个解决方法..我没有通过http post请求发送命令,而是使用了socket.io/websockets。

node.js:

代码语言:javascript
复制
socket.on('sendcmd', function(data) {
  myPort.write(data);
});

index.html:

代码语言:javascript
复制
$("#btnListTempSensors").click(function() {
  var strCMD = String.fromCharCode(84) + String.fromCharCode(76) + String.fromCharCode(13);
  socket.emit('sendcmd', strCMD);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22263094

复制
相关文章

相似问题

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