我有一个 FTDI 连接到我的 PC 并且 FTDI 连接到一个英特尔爱迪生 Arduino 分线板 0RX 和 1TX 引脚。
串行引脚连接:
Edison TX ------> FTDI RX
Edison RX ------> FTDI TX
要编辑英特尔 Edisons GPIO,我遵循了第一篇文章中的正确答案:
https ://communities.intel.com/message/265411#265411
要查看我执行的 GPIO 配置:
cat /sys/kernel/debug/gpio
然后回响:
节点代码:
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
即使我没有向 Intel Edison
Strange 字符发送字符,我也会收到奇怪的字符:
我不确定我的 nodejs 脚本是否导致任何问题,所以我执行了: cat /dev/ttyMFD1
即使我没有向英特尔爱迪生发送数据,它也会发出相同的奇怪字符。
我不知道为什么当我不向英特尔爱迪生发送数据时会收到奇怪的字符,或者如何阻止这种情况的发生。我不确定我的 GPIO 配置是否正确,或者是噪音还是什么......?我需要做什么来修复/解决此问题?
为了进一步解决这个问题,我在 serialPort on 函数中添加了以下代码片段:
var s = JSON.stringify(data);
console.log ("data: " + s);
该代码产生:
[255,255,255,255]
更新
问题似乎与 setInterval 函数有关。我删除了设置的间隔,并为测试实现了一个 for 循环。该循环进行了 10 轮成功发送字符而没有接收到垃圾字符。