我正在尝试从通过 Mavlink 协议通信的 Pixhawk 飞行控制器通过串行方式读取数据。它发送 17 个字节,前三个字节是 0xFE、0x09,后跟一个计数器,每条消息都会递增。我已经用 GtkTerm 确认了这一点。
但是,当我运行以下代码时,总是会跳过 0x09(第二个字节),因此每条 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;
}