boost asio 串口操作中修改字节超时间隔参数
2014-06-23 20:38
267 查看
再用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
代码如下:
//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
相关文章推荐
- Spring实现动态修改时间参数并手动开启关停操作
- Linux用户和组的操作(九) 修改用户账号密码时间参数 chage
- sql中时间日期操作(时间日期函数,时间日期格式,时间日期转换参数,时间日期比较,时间日期计算)
- [转]linux 修改时间 - [命令操作]
- 查看历史操作记录(.bash_history)、修改文件时间
- IBM小型机没有显卡,用串口登录需要修改tty,加clocal参数
- 深复制和参数传递方式来完成数据修改操作
- linux中touch命令参数修改文件的时间戳
- boost asio serial_port 读写串口
- 解决SQLServer中变更海量数据表结构时产生【无法修改表. Timeout 时间已到. 在操作完成之前超时时间已过或服务器未响应. 】
- boost日期、时间操作
- linux date命令参数及用法详解--linux查看修改系统时间
- 给页面路径加上或修改某参数(js操作)
- sql server2005 无法修改表,超时时间已到 在操作完成之前超时
- sql中时间日期操作(时间日期函数,时间日期格式,时间日期转换参数,时间日期比较,时间日期计算)
- [Boost]boost的时间和日期处理-(2)时间的操作
- VC++ 关于串口操作的配置参数的设置
- boost asio serial_port 读写串口
- linux date命令参数及用法详解(linux查看修改系统时间)
- 如何修改右键菜单新建文档的参数--注册表操作