串口编程 tcflush()函数
2016-03-01 16:01
411 查看
tcflush函数刷清(扔掉)输入缓存(终端驱动法度已接管到,但用户法度尚未读)或输出缓存(用户法度已经写,但尚未发送).
int tcflush(int filedes,int quene)
quene数该当是下列三个常数之一:
TCIFLUSH 刷清输入队列
TCOFLUSH 刷清输出队列
TCIOFLUSH 刷清输入、输出队列
例如:tcflush(fd,TCIFLUSH);
在打开串口后,串口其实已经可以开始读取 数据了 ,这段时间用户如果没有读取,将保存在缓冲区里,如果用户不想要开始的一段数据,或者发现缓冲区数据有误,可以使用这个函数清空缓冲
tcflush(fdcom, TCIFLUSH);
sleep(2);
RecvLen = PortRecv(fdcom, RecvBuf, 10, portinfo.baudrate);
这样,在sleep之前发的数据都被清空了。
!注意:如果是在任务中,需要不停地写入数据到串口设备,千万不能在每次写入数据到设备前,进行flush以前数据的操作,因为两次写入的间隔是业务控制的,内核不会保证在两次写入之间一定把数据发送成功。flush操作一般在打开或者复位串口设备时进行操作。
int tcflush(int filedes,int quene)
quene数该当是下列三个常数之一:
TCIFLUSH 刷清输入队列
TCOFLUSH 刷清输出队列
TCIOFLUSH 刷清输入、输出队列
例如:tcflush(fd,TCIFLUSH);
在打开串口后,串口其实已经可以开始读取 数据了 ,这段时间用户如果没有读取,将保存在缓冲区里,如果用户不想要开始的一段数据,或者发现缓冲区数据有误,可以使用这个函数清空缓冲
tcflush(fdcom, TCIFLUSH);
sleep(2);
RecvLen = PortRecv(fdcom, RecvBuf, 10, portinfo.baudrate);
这样,在sleep之前发的数据都被清空了。
!注意:如果是在任务中,需要不停地写入数据到串口设备,千万不能在每次写入数据到设备前,进行flush以前数据的操作,因为两次写入的间隔是业务控制的,内核不会保证在两次写入之间一定把数据发送成功。flush操作一般在打开或者复位串口设备时进行操作。
相关文章推荐
- Java进阶07 嵌套类
- C#发送POST,GET,DELETE请求API,并接受返回值
- c++防止客户端多开巧妙代码
- VBA教程初级(一):简单宏
- Ulua_toLua_基本案例(六)_LuaCoroutine2
- 关于数据格式化代码整理
- Eclipse常用的快捷键在AS中的对应
- C++ 虚函数表解析
- Java进阶06 容器
- Java多态性理解
- Raspberry pi raspbain source mirror
- go liteIDE
- mybatis与spring整合案例
- Java多线程(三)——线程挂起、恢复、终止
- struts.xml配置文件中需要注意的地方
- Java字符串String相关2
- Java中final、finally、finalize的区别
- opencv error assertion failed,imread读到的总是空数据,Microsoft C++ 异常: 内存位置 0x0043f888 处的 cv::Exception。
- jqGrid源代码分析(一)
- eclipse.ini问题