我在通过串行连接进行通信时遇到问题。我正在尝试使用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);
无效。这是我第一次进行串行连接,因此我可能会犯一个基本错误。任何有关如何使沟通工作的帮助非常感谢!