我发现一个线程在这里似乎有完全相同的问题,但是,在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);
虽然那里仍然没有欢乐。
我想念什么?