英特尔Edison和NodeJS串口通信:我收到了奇怪的字符

时间:2014-12-22 04:49:30

标签: node.js serial-port intel-edison

我的PC连接到FTDI,FTDI连接到英特尔Edison Arduino分线板0RX和1TX引脚。

串行引脚连接:
爱迪生TX ------> FTDI RX
爱迪生RX ------> FTDI TX

要编辑英特尔Edisons GPIO,请按照第一篇文章中的正确答案进行操作:
https://communities.intel.com/message/265411#265411

要查看我执行的GPIO配置:
cat / sys / kernel / debug / gpio

然后回应出来:
GPIO

Nodejs代码:

var SerialPort = require("serialport").SerialPort;  
var port = "/dev/ttyMFD1";  
var serialPort = new SerialPort(port, {  
  baudrate: 9600  
}, false);  

console.log("Open port: "+ port);  
serialPort.open(function (error) {  
  if (error) {  
    console.log('Failed to open: '+error);  
  } else {  
    console.log('open');  
    serialPort.on('data', function(data) {  
      console.log('data received: ' + data);  
    });  
    //write data to serial port every second  
    var counter = 90;  
    setInterval(function () {  
      serialPort.write(String(counter)+ "\r\n", function(err) {  
        if(err) {  
          console.log('err ' + err);  
        }else{  
          console.log('Writing data ');  
        }  
      });  
      counter++;  
      if(counter>100)  
        counter =90;  
    }, 1000);  
  }  
});
然后我执行了:
node uart.js

即使我没有向英特尔爱迪生发送字符,我也会收到奇怪的字符 奇怪的人物:
enter image description here

我不确定我的nodejs脚本是否导致任何问题所以我执行了: cat / dev / ttyMFD1
即使我没有向英特尔爱迪生发送数据,这也反映了相同的奇怪角色 cat command

当我不向英特尔爱迪生发送数据或者如何阻止这种情况发生时,我不知道为什么我会收到奇怪的字符。我不确定我的GPIO配置是否正确,或者它是噪音还是什么......?我需要做些什么来修复/解决此问题?

为了进一步解决这个问题,我在serialPort函数中添加了以下代码片段:

var s = JSON.stringify(data);
console.log ("data: " + s);

该代码产生:
[255,255,255,255]

更新
问题似乎与setInterval函数有关。我删除了设置间隔,对于测试,我实现了for循环。循环成功发送了10轮而没有收到垃圾字符的字符。

2 个答案:

答案 0 :(得分:1)

要增强代码,您可以使用MRAA为UART使用(TX / RX)启用PIN0 / PIN1,而无需从命令shell设置

 var m = require('mraa');
 var uart = new m.Uart(0);

答案 1 :(得分:0)

奇怪的角色是由于我的一个非常愚蠢的错误。我忘了将FTDI板上的GND连接到英特尔爱迪生的GND。一旦我将GND连接在一起,奇怪的字符停止了。