2

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>

結果は 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.. <

セパレータ付きの結果

すべてのデータがスクランブルされています。なぜですか?

8 バイトを受信し、次に 8 バイトが失われ、次に 8 バイトが受信されたようです...

4

2 に答える 2

1

tty が適切に構成されていないようです。と

stty -F /dev/ttyAMA0 1200 sane parenb -parodd cs7 -isig -icrnl -crtscts -icanon

serialPort が動作するようになりました。

エラーは、cat /dev/ttyAMA0 で見たものに依存していたことです。しかし、それは実際に来るデータではなく、印刷可能な文字のみを示しています。

于 2016-01-10T14:34:18.977 に答える