免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5923 | 回复: 3
打印 上一主题 下一主题

[函数] 请问要清空串口的buffer该用什么函数?谢谢! [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
1 [报告]
发表于 2003-02-28 23:37 |显示全部楼层

请问要清空串口的buffer该用什么函数?谢谢!

fflush.

unix上所有设备,都可以当作文件来操作。

所以和操作文件一样的API好了

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2003-03-01 17:17 |显示全部楼层

请问要清空串口的buffer该用什么函数?谢谢!

呵呵,给你个链接,自己看看。可能资料老了一点。
http://www.fanqiang.com/a4/b7/20010502/110712.html

但是基本上不变。要看最新的,可以看看英文的HOWTO。

大概看了一下,和操作终端的方法差不多。

你说的问题,可以用tcflush。

有问题,可以再探讨

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2003-03-03 03:41 |显示全部楼层

请问要清空串口的buffer该用什么函数?谢谢!

关于你清空socket的想法。我觉得是无法做到的。


因为socket的buffer是在内核中,而且都自己的buffer策略,在buffer中存的并不一定都是
你要发送的完整的包,我想这也许是不允许野蛮清空的原因之一。
控制socket的系统调用无非是ioctl和setsockopt,我查了没有这方面的选项。
呵呵,如果有,我想也是没公开的,

给你个链接,也许你就对socket的buffer会有更深的了解。
http://www.developerweb.net/sock-faq/detail.php?id=406

文件的buffer稍有不同,但是到了内核的buffer,原理是一样的。

而且我觉得你的问题完全可以在应用层解决,并不一定要用很底层的方式。


例如,客户端,你每个包,可以设个retry的次数,大于某次,就不重复发送了。如果总的次数超过,某个
上限,就停止发送,将请求放在自己维护的队列中。至于服务端,接收到重复的,就可以忽略。


串口的操作策略也是一样的,总不能发不出去,还发吧?

至于发了多少次,服务器就退出了,我想有几种可能:

1.服务器重试超过上限,自动退出

2.在极限情况下,出现异常退出。

这就得具体分析了。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2003-03-04 12:25 |显示全部楼层

请问要清空串口的buffer该用什么函数?谢谢!

例如,积累的数据多了,自己分配的数据缓冲区不够用,等这一类通常情况正常,但是高峰或者量大时,却有可能出现问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP