没有使用libserial读取数据

时间:2015-10-20 13:28:30

标签: c++ serial-port libserial

我在通过串行连接进行通信时遇到问题。我正在尝试使用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);

无效。这是我第一次进行串行连接,因此我可能会犯一个基本错误。任何有关如何使沟通工作的帮助非常感谢!

0 个答案:

没有答案