Mavlink プロトコルを介して通信する Pixhawk フライト コントローラからシリアル経由でデータを読み取ろうとしています。17 バイトを送信します。最初の 3 つは 0xFE、0x09 で、その後にメッセージごとにインクリメントするカウンターが続きます。これは GtkTerm で確認済みです。
ただし、次のコードを実行すると、0x09 (2 番目のバイト) は常にスキップされるため、17 バイトの各メッセージのうち 16 バイトのみが受信されます。
何か案は?ありがとう、ジェームズ。
LibSerial::SerialStream pixhawkSerial;
pixhawkSerial.Open("/dev/ttyACM0");
pixhawkSerial.SetBaudRate( LibSerial::SerialStreamBuf::BAUD_57600 ) ;
pixhawkSerial.SetCharSize( LibSerial::SerialStreamBuf::CHAR_SIZE_8 );
pixhawkSerial.SetNumOfStopBits(1);
pixhawkSerial.SetParity( LibSerial::SerialStreamBuf::PARITY_NONE ) ;
pixhawkSerial.SetFlowControl( LibSerial::SerialStreamBuf::FLOW_CONTROL_NONE );
char next_byte [100];
int i = 0;
while (i<100){
if( pixhawkSerial.rdbuf()->in_avail() > 0 ){
pixhawkSerial >> next_byte[i];
i++;
}
else cout << "No data" << endl;
}