串行数据最初是错误的C ++

我正在XBee收发器和我的电脑之间发送数据。

问题是, 最初(在我的程序中)数据是随机字符。 只有在XCTU打开串行连接后才能正常工作。

所以串行数据被正确的发送,但XCTU做了一些事情,我的电脑同步到XBee。 波特率设置在9600两边。

有人知道XCTU在做什么吗? 或者我可以如何在我的C ++程序中复制它?

希望下面的图片更清楚地解释发生的事情:

在这里输入图像说明

Windows下的串口设置可以通过GetCommState查看,并通过SetCommState设置。 使用第一个看XCTU设置。 您的代码然后可以通过调用SetCommState使用相同的设置。

我发现这个问题。 我假设boost serial_port对象的默认选项。 在设置更多的选项之后,串行通信可以可靠地工作。 以下是我最终设置的选项:

port.set_option(asio::serial_port_base::baud_rate(9600)); port.set_option(asio::serial_port_base::character_size(8)); port.set_option(asio::serial_port_base::flow_control(asio::serial_port_base::flow_control::none)); port.set_option(asio::serial_port_base::parity(asio::serial_port_base::parity::none)); port.set_option(asio::serial_port_base::stop_bits(asio::serial_port_base::stop_bits::one)); 

其中port是一个asio :: serial_port对象。