我正在使用ASIO通过串口读取/写入设备。当我启动程序时,首先需要确保设备配置正确。这是通过initialize_device()
函数中的一系列写操作完成的。设备会发回一些在这些呼叫后无关紧要的数据。
完成initialize_device()
后,我会调用start_receive()
函数,然后调用asio::async_read_until()
,我的处理程序再次调用start_receive()
但问题是,initialize_device()
期间发送给我的无关数据已被接收"由我的处理程序,即使这是我第一次阅读之前收到的数据。这对我来说意外。
因此我想知道是否有正确的方式来冲洗"完成initialize_device()
后asio :: serial_port使用的内部缓冲区?我真的对在明确开始阅读端口之前收到的任何数据感兴趣。
答案 0 :(得分:2)
该设备将具有文档化的协议。
您必须能够告诉您发送的内容以响应您的初始化命令。
在开始阅读" real"之前,只需使用async_read_until
将此信息输入虚拟缓冲区(boost::asio::null_buffer
?)数据