重新启动后,Boost Asio串行连接无法正确发送

时间:2018-10-02 19:22:06

标签: c++ boost serial-port boost-asio

我发现一个线程在这里似乎有完全相同的问题,但是,在OP用他的更正对其进行更新后,该线程再也没有得到回复:

Boost asio serial port initially sending bad data

基本上,当我在计算机重新启动后尝试用程序连接到串行设备时,boost :: asio写入似乎无法发送正确的数据。但是,如果我使用其他程序打开端口并发送一些数据,然后运行我的程序,它将正确发送所有内容。

我正在Windows的VS 2015上运行。

这是我的代码(在此示例中,我简化了send中发送的数据量,因此忽略多余的步骤):

 boost::asio::io_service io;
 boost::asio::serial_port serial;

 Serial::Serial(char * port, unsigned int baud): io(), serial(io, port)
 {
     serial.set_option(boost::asio::serial_port_base::baud_rate(baud));
 }

 void Serial::send(int cmd)
 {
     int cmU[] = {cmd};
     boost::asio::write(serial, boost::asio::buffer(cmU, 1));
 }

 void Serial::doStuff()
 {
     send(123);
 }

我也尝试过在构造函数中添加此行:

 PurgeComm(serial.lowest_layer().native_handle(), PURGE_RXABORT | PURGE_TXABORT | PURGE_RXCLEAR | PURGE_TXCLEAR);

虽然那里仍然没有欢乐。

我想念什么?

0 个答案:

没有答案