gizProtocolGetOnePacket函数写的不好
本帖最后由 Genius 于 2017-1-9 10:01 编辑看了gizProtocolGetOnePacket 代码,感觉写的不好。
其实就是利用队列串口读,并解析(可能我理解有误)。
我认为最简单思路,延时+读队列+解析。没必要按字符读,可能读的不是完整包
1,延时,大致可以根据波特率设置延时,在延时一段时间之后,进行读队列
2,读队列,延时时间到,此时队列若有数据,直接读出;没有数据,退出。干净利落!
3,解析,若读到数据,解析一包数据即可!
关于完整包的问题,我也在论坛提出过,没人理,自己修改了一下这个函数,先保存环形缓冲区读指针,如果能取到完整包,就解析包,如果取不到完整包,恢复读指针,这样处理应该就解决了完整包的问题。不过不太倾向于延时处理,因为是iot应用,本身网络就有延时,再加上无线模块和STM32直接串口通信速度也不快,所以还是能快处理就尽快,这样能减小响应时间,使操作更灵敏。
页:
[1]