中级会员
 
- 积分
- 465
- 金钱
- 465
- 注册时间
- 2016-4-29
- 在线时间
- 137 小时
|

楼主 |
发表于 2019-1-14 10:01:48
|
显示全部楼层
网络模块,现在我的接收数据中,除了AT指令的回复(比如定时查询RSSI和GPS),还有TCP包,有时还要从HTTP下载固件和MP3文件。
目前我用的就是原子哥sim900a.c的那种接收方式。
这种方式,可能会出现在我期待RSSI的AT回复时,却来了一帧TCP包,这样我在等待AT回复的地方,要增加检查是否是TCP包并解析的代码,本来是在主循环中来处理TCP包的,又额外加了一处,感觉怪怪的。
我曾想用环形buffer,但是又觉得如果里面同时存了多帧尚未处理的数据,帧与帧之间不太好分割
另外我想做成,开辟N个BUF,每来一帧就轮流/循环存到这N个BUF中,处理完做个特殊标记,这样即使同时存在RSSI的AT回复和TCP包两帧数据,我也可以遍历N个BUF,有选择的挑着处理
以上,我主要想解决的问题是:
1.担心处理慢时,会丢掉某帧数据
2.期待RSSI的AT回复前,却来了一帧TCP包
3.方便数据帧的分割(AT回复 / TCP包 / HTTP包)
可能我描述的比较乱,也不知道怎么做才最好,也不知道其他人都是怎么做的 |
|