boost asio 串口操作中修改字节超时间隔参数

再用asio编写串口异步读写程序的时候,有时候会出现将一帧报文分几次读的情况,比如对方发过来16个字节,可能消息响应函数被调用了两次,每次读取8字节,为了处理这种情况,必须设置串口字节超时间隔(这里设置为20ms),根据此参数来判断相邻的两个报文是否可视为同一报文,而boost::asio::serial_port 类没有直接提供字节间隔时间的配置,所以要通过native()函数获得本地对象,然后再设置

代码如下:

//xx.h

//boost::asio::serial_port m_serial_port;


//xx.cpp

#ifdef _MSC_VER

COMMTIMEOUTS to;
GetCommTimeouts(m_serial_port.native(),&to);
to.ReadIntervalTimeout = 20;
SetCommTimeouts(m_serial_port.native(),&to);
#endif
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值