0

我无法通过串行连接进行通信。我正在尝试使用 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);

没有效果。这是我第一次处理串行连接,所以我可能犯了一个基本错误。非常感谢有关如何使通信正常工作的任何帮助!

4

0 回答 0