串行数据最初错误 C++

Serial data initially wrong C++

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

问题是,最初(在我的程序中)数据是随机字符。只有在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));

其中端口是一个 asio::serial_port 对象。