Dag*_*ago 7 c++ serial-port boost-asio
我对boost :: asio和boost :: asio :: serial_port设备有一个特殊的问题.代码最终与异步读取和东西很好地工作,但我无法弄清楚如何动态地改变串行端口的速度.
我现在要做的就是告诉连接在我的串口中的设备将串口速度改为38400波特,然后通过以下方式将我的计算机串口设置为相同的速度:
port_.set_option(boost::asio::serial_port_base::baud_rate(rate));
但真正发生的是,如果我执行set_option部分,设备永远不会收到更改速度的命令.如果我没有执行set_option部分,则设备会正确更改速度.从我收集的内容发生的事情是(阻塞,同步)写入将东西放入我的计算机上的硬件缓冲区并返回,然后执行丢弃缓冲区的set_option(在它有时间将数据发送到设备之前).因此,在重新配置计算机串口之前,我需要考虑一些方法来检查硬件缓冲区是否为空,并且设备确实已收到更改速度的命令.如果我必须在端口上执行close()和open()以使速度更改生效,我也找不到任何信息.我也想知道close()是否丢弃缓冲区中的东西......我正在使用USB->串口适配器,如果它有任何区别,我的平台是Ubuntu 10.10.
| 归档时间: |
|
| 查看次数: |
1678 次 |
| 最近记录: |