我在XBee收发器和我的电脑之间发送数据。
问题在于,最初(在我的程序中)数据是随机字符。只有在XCTU中打开串行连接后才能正常工作。
因此串行数据正在正确发送,但XCTU会将我的电脑同步到XBee。波特率设置为9600两侧。
有人知道XCTU在做什么吗?或者我如何在我的C ++程序中复制它?
希望下面的图片更清楚地解释发生的事情:
答案 0 :(得分:2)
Windows下的串行端口设置可以通过GetCommState查看,并使用SetCommState进行设置。使用第一个来查看XCTU设置的内容。然后,您的代码可以通过调用SetCommState来使用相同的设置。
答案 1 :(得分:0)
我发现了这个问题。我假设使用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对象。