【问题标题】:Read from serial port with timeout using boost使用boost从串口读取超时
【发布时间】:2012-12-13 03:34:05
【问题描述】:

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

我找到了一个非常优雅的解决方案here on SO。但是,在我的应用程序中,port 和 io_service 是成员变量,但是当我尝试使用 io_service 成员来设置deadline_timer 时,我遇到了访问冲突。

【问题讨论】:

    标签: serial-port boost-asio access-violation


    【解决方案1】:

    使用作为成员变量的 io_service 创建deadline_timer 应该没有问题。

    如果deadline_timer和io_service是同一个类的成员,你必须确保deadline_timer声明在io_service之后,这样在构建deadline_timer的时候已经构建了io_service。

    【讨论】:

    • 按正确的顺序构造确实解决了这个问题,但是在使用 bind() 调用 async_read() 时发生了下一次访问冲突
    • 导致第二次访问冲突,因为 io_service 不是第一个成员变量。
    猜你喜欢
    • 2011-02-17
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    相关资源
    最近更新 更多