接收首次读取之前发送到串行端口的数据

时间:2014-05-08 17:03:36

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

我正在使用ASIO通过串口读取/写入设备。当我启动程序时,首先需要确保设备配置正确。这是通过initialize_device()函数中的一系列写操作完成的。设备会发回一些在这些呼叫后无关紧要的数据。

完成initialize_device()后,我会调用start_receive()函数,然后调用asio::async_read_until(),我的处理程序再次调用start_receive()

但问题是,initialize_device()期间发送给我的无关数据已被接收"由我的处理程序,即使这是我第一次阅读之前收到的数据。这对我来说意外。

因此我想知道是否有正确的方式来冲洗"完成initialize_device()后asio :: serial_port使用的内部缓冲区?我真的对在明确开始阅读端口之前收到的任何数据感兴趣。

1 个答案:

答案 0 :(得分:2)

该设备将具有文档化的协议。

您必须能够告诉您发送的内容以响应您的初始化命令。

在开始阅读" real"之前,只需使用async_read_until将此信息输入虚拟缓冲区(boost::asio::null_buffer?)数据