Serial port 使用boost从串行端口读取超时数据

Serial port 使用boost从串行端口读取超时数据,serial-port,boost-asio,access-violation,Serial Port,Boost Asio,Access Violation,我想写一个串行设备。每次写入后,我都从设备中读取数据。如果设备没有响应,我希望读取操作有一个超时 我找到了一个相当优雅的解决方案。但是,在我的应用程序中,端口和io_服务都是成员变量,但是当我尝试使用io_服务成员设置截止时间计时器时,我会遇到访问冲突。使用作为成员变量的io_服务创建截止时间计时器应该没有问题 如果deadline_timer是与io_服务属于同一类的成员,则必须确保在io_服务之后声明deadline_timer,以便在构造deadline_timer时构造io_服务。按正确

我想写一个串行设备。每次写入后,我都从设备中读取数据。如果设备没有响应,我希望读取操作有一个超时


我找到了一个相当优雅的解决方案。但是,在我的应用程序中,端口和io_服务都是成员变量,但是当我尝试使用io_服务成员设置截止时间计时器时,我会遇到访问冲突。

使用作为成员变量的io_服务创建截止时间计时器应该没有问题


如果deadline_timer是与io_服务属于同一类的成员,则必须确保在io_服务之后声明deadline_timer,以便在构造deadline_timer时构造io_服务。

按正确顺序构造确实解决了此问题,但发生了下一次访问冲突,使用bind()调用async_read()时,导致第二次访问冲突,因为io_服务不是第一个成员变量。