我无法通过串行连接进行通信。我正在尝试使用 LibSerial 库连接到机器人。我的代码似乎没有正确打开连接,我不知道为什么。机器人每秒通过串行连接自动发送多条消息。消息结构是!number:number,
(感叹号后跟一个数字、一个冒号、另一个数字和一个逗号)。我已经使用 putty 和 HTerm 来验证机器人是否真的在发送数据。接收和发送命令都适用于 HTerm,但接收和发送都不适用于我的代码。这是串行连接的配置:
serial_connector_.Open("/dev/ttyUSB0");
serial_connector_.SetBaudRate(LibSerial::SerialStreamBuf::BAUD_115200);
serial_connector_.SetCharSize(LibSerial::SerialStreamBuf::CHAR_SIZE_8);
serial_connector_.SetNumOfStopBits(1);
serial_connector_.SetParity(LibSerial::SerialStreamBuf::PARITY_NONE);
serial_connector_.SetFlowControl(LibSerial::SerialStreamBuf::FLOW_CONTROL_NONE);
这样做后,serial_connector_.IsOpen()
返回true。然后,我尝试使用以下命令从串行连接中读取:
char read[100] = "";
if(serial_connector_.rdbuf()->in_avail() > 0){
serial_connector_.read(read, 100);
std::cout << "Read: " << read <<std::endl;
}
read
始终保持空字符串并 serial_connector_.rdbuf()->in_avail()
评估为 1,即使考虑到消息结构,这没有多大意义。只读取一个字符也不起作用。
char next_byte;
serial_connector_.get(next_byte);
没有效果。这是我第一次处理串行连接,所以我可能犯了一个基本错误。非常感谢有关如何使通信正常工作的任何帮助!