会不会出现以下这种情况:
假如,A时刻你给SIM900A模块发出查询命令后,正常情况下SIM900A至少在A+5时刻,才能给到你查询命令的回复,如果此时刚好服务器有TCP数据要发给你,会出现在A+5时刻之前,你就收到了服务器的TCP包的情形吗?
举个简单的例子:
建立TCP连接后,loop循环中需要做:
1.每隔10ms检查一下有没有来自服务器的TCP数据包
2.每隔5秒,给SIM900A发送查询信号强度的AT指令,并等待SIM900A的AT回复
会不会在我发完AT指令后,先收到TCP数据包,然后再收到AT回复吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
网络模块,现在我的接收数据中,除了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包)
可能我描述的比较乱,也不知道怎么做才最好,也不知道其他人都是怎么做的
一周热门 更多>