我想在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上看到的内容。但是它仅显示可打印的字符,而不显示实际的数据。

07-28 01:57
查看更多