找回密码
 立即注册
收起左侧

关于串口 如何判断发送缓存区为空

7
回复
8578
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2014-10-13 14:02:08 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如题。
直接照《QT串口调试工具》实现了一个简单的串口程序,硬件上PC与单片机串口连接。
问题描述:
1.自定义串口通讯协议,传输的是数据帧,在应用层保证数据完整性。单片机发送数据有可能会不连续,那么在物理层如何保证接受完整帧(QT程序只要接收到数据就会直接读出来,按字节读取)。
2.在发送数据帧前,要保证缓存区数据已全部发送完成。IO类 有什么方法可以实现?


回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-4-21 17:49:12 显示全部楼层
我最近也在考虑这个问题 有个朋友给的一个思路就是用一个定时器 在readAll之后等待100毫秒在进行显示 或者就是在read之前先等待100毫秒

点评

用read(int),,每次指定读多少个字节不行吗?  详情 回复 发表于 2015-8-27 09:01
回复 支持 反对

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-8-27 09:01:05 显示全部楼层
z55716368 发表于 2015-4-21 17:49
我最近也在考虑这个问题 有个朋友给的一个思路就是用一个定时器 在readAll之后等待100毫秒在进行显示 或者 ...

用read(int),,每次指定读多少个字节不行吗?

点评

如果来的数据少于这个字节数的话、、、会不会一直卡着  详情 回复 发表于 2015-8-27 16:30
回复 支持 反对

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-8-27 16:30:00 显示全部楼层
qq1043068972 发表于 2015-8-27 09:01
用read(int),,每次指定读多少个字节不行吗?

如果来的数据少于这个字节数的话、、、会不会一直卡着

点评

不会啊,我现在写的程序就read(20),,而我测试时,每次发的都是2个!一点问题都没有  详情 回复 发表于 2015-8-27 16:33
回复 支持 反对

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-8-27 16:33:07 显示全部楼层
z55716368 发表于 2015-8-27 16:30
如果来的数据少于这个字节数的话、、、会不会一直卡着

不会啊,我现在写的程序就read(20),,而我测试时,每次发的都是2个!一点问题都没有

点评

你是说用read(number)这样去读串口么,我以为是设定读取串口长度那种,就是达到长度了才读取一次  详情 回复 发表于 2015-8-27 17:06
回复 支持 反对

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-8-27 17:06:40 显示全部楼层
qq1043068972 发表于 2015-8-27 16:33
不会啊,我现在写的程序就read(20),,而我测试时,每次发的都是2个!一点问题都没有 ...

你是说用read(number)这样去读串口么,我以为是设定读取串口长度那种,就是达到长度了才读取一次

点评

如果说"达到长度了才读取一次" 这要不更好办吗???先判断 接收缓存区现在有多少有效数据,得到个数就读取,达不到就不读呗?(感觉很简单啊,可能是还没明白你的具体需求....)  详情 回复 发表于 2015-8-27 20:15
回复 支持 反对

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-8-27 20:15:05 显示全部楼层
z55716368 发表于 2015-8-27 17:06
你是说用read(number)这样去读串口么,我以为是设定读取串口长度那种,就是达到长度了才读取一次 ...

如果说"达到长度了才读取一次"  这要不更好办吗???先判断 接收缓存区现在有多少有效数据,得到个数就读取,达不到就不读呗?(感觉很简单啊,可能是还没明白你的具体需求....)

点评

我没有使用这个,我们这边的要求有数据读出来然后判断结束位就行了  详情 回复 发表于 2015-8-28 09:22
回复 支持 反对

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-8-28 09:22:32 显示全部楼层
qq1043068972 发表于 2015-8-27 20:15
如果说"达到长度了才读取一次"  这要不更好办吗???先判断 接收缓存区现在有多少有效数据,得到个数就读取, ...

我没有使用这个,我们这边的要求有数据读出来然后判断结束位就行了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了