我想在Raspberry Pi 1上使用nodeJs v0.12.6解析串行数据。
数据在cat上是正确的,但在nodeJs(serialPort模块)中却是混乱的
数据OK,猫
stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts
cat /dev/ttyAMA0
给
MOTDETAT 000000 B
ADCO XXXXXXXXXXX>
OPTARIF HC.. <
ISOUSC 30 9
HCHC 042116615
HCHP 034246387 8
PTEC HP..
IINST 001 X
IMAX 009 H
HHPHC C .
MOTDETAT 000000 B
ADCO XXXXXXXXXXXX>
result with CR-ETX-STX-LF
其中块分隔符为CR-ETX-STX-LF
2. nodeJs的数据不正确
我的nodeJs服务器
var serialPort = new serialport.SerialPort('/dev/ttyAMA0', {
baudrate: 1200,
dataBits: 7,
parity: 'even',
stopBits: 1,
flowControl :true,
//CR-ETX-STX-BR
parser: serialport.parsers.readline(String.fromCharCode(13,3,2,10))
});
serialPort.on('data', function(data) {
console.log("data="+data);
});
结果是
ADCO 0PTARIF H 9
2116615
HCHP 031
..
01 X
9 H
.
T 000000
ADCO 0218 >
OC.. <
result with separators
所有数据都被加密,为什么?
好像我收到8个字节,然后丢失8个字节,然后收到8个字节,...
最佳答案
看起来tty配置不正确。
用
stty -F /dev/ttyAMA0 1200 sane parenb -parodd cs7 -isig -icrnl -crtscts -icanon
serialPort现在正在工作。
错误是我依靠在cat / dev / ttyAMA0上看到的内容。但是它仅显示可打印的字符,而不显示实际的数据。