在Linux上使用npm serialport库从微控制器接收的数据除了所有正确的字节外,还有一些垃圾字节

时间:2019-03-31 09:43:48

标签: node.js linux npm serial-port uart

我有两个相似的设置,但两者都存在相同的问题。

在第一个设置中,我将TI的MSP342连接到称重传感器和编码器,并使用串行端口将6个字节的数据发送到RPi 3B(带有树莓派)。它直接连接到微控制器和RPi之间的Tx和Rx引脚。

在第二种设置中,我将MSP432连接到压力传感器,并使用FTDI TTL到USB电缆将3字节的传感器数据发送到运行Ubuntu 18.04的计算机。

在两种情况下,我都使用npm serialport node.js库接收数据,然后将其打包为6个字节或3个字节的块。稍后绘制该数据。

运行系统时,它可以在90%的时间内正常运行。但是,有时我在接收端看到1或2个虚假字节,这使我的3或6字节分组脱离了。发送到微控制器的命令总是正确的。

为确保不怪微控制器,我将微控制器Tx连接到另一台运行风车的计算机,并比较了那里接收到的字节。风车没有显示虚假字节。我尝试重置有时可以使用的端口。

// The node.js code on the RPi and computer side 

var dataArray = [];
var SerialPort = require('serialport');
var port = new SerialPort("/dev/ttyUSB0", {
baudRate: 115200,
});

const ByteLength = SerialPort.parsers.ByteLength;
const parser = new ByteLength({length: 3});

var data = [0x21];
var counter = 0;

console.log("Starting test : " + data)
port.write(data);

port.pipe(parser);
parser.on('data', readdata);
//port.on('data', readdata);

function readdata(data) {
/*for (var i = 0; data[i] != null ; i++) {
    dataArray[i] = data[i];
}*/
counter =counter + 1;
dataArray1 = getHexString(data);
//console.log(data);
//console.log(dataArray);
console.log(counter+" "+dataArray1);
}

function getHexString(buffer) {
var newbuf = Buffer.from([buffer[0], buffer[1], buffer[2]])
var hexString = newbuf.toString('hex')
return hexString
}

从微控制器发送的数据 CA 83 AE 在计算机上收到的数据 00 CA 83 AE

0 个答案:

没有答案