收藏官网首页
查看: 34875|回复: 1

[讨论] gizProtocolGetOnePacket函数写的不好

1

主题

3

帖子

38

积分

新手上路

Rank: 1

积分
38
跳转到指定楼层
楼主
发表于 2017-1-8 20:55:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
本帖最后由 Genius 于 2017-1-9 10:01 编辑

看了gizProtocolGetOnePacket 代码,感觉写的不好。
其实就是利用队列串口读,并解析(可能我理解有误)。
我认为最简单思路,延时+读队列+解析。没必要按字符读,可能读的不是完整包
1,延时,大致可以根据波特率设置延时,在延时一段时间之后,进行读队列
2,读队列,延时时间到,此时队列若有数据,直接读出;没有数据,退出。干净利落!
3,解析,若读到数据,解析一包数据即可!

3

主题

31

帖子

2767

积分

金牌会员

Rank: 6Rank: 6

积分
2767
沙发
发表于 2017-1-9 10:33:57 | 只看该作者
关于完整包的问题,我也在论坛提出过,没人理,自己修改了一下这个函数,先保存环形缓冲区读指针,如果能取到完整包,就解析包,如果取不到完整包,恢复读指针,这样处理应该就解决了完整包的问题。不过不太倾向于延时处理,因为是iot应用,本身网络就有延时,再加上无线模块和STM32直接串口通信速度也不快,所以还是能快处理就尽快,这样能减小响应时间,使操作更灵敏。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表