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

时间:2015-07-31 15:14:12

标签: c++ windows arduino serial-port xbee

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

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

因此串行数据正在正确发送,但XCTU会将我的电脑同步到XBee。波特率设置为9600两侧。

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

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

enter image description here

2 个答案:

答案 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对象。