搜索
bottom↓
回复: 15

SIM900A每1分钟发送一个心跳包,接收端收到结合的两个心跳包

[复制链接]

出0入0汤圆

发表于 2014-5-26 16:55:49 | 显示全部楼层 |阅读模式
SIM900A与电脑端之间建立TCP连接,为了维持这条连接,每一分钟发送一个心跳包,心跳包大小为30个字节

但是SIM900A发送包之后有时候要等待2分钟左右才能够回应SEND OK,这时候问题就出现了:

00:00.00 发送一个心跳包,TCP立马接收到了,但是SIM900A一直没有回应SEND OK
00:01.00 继续发送心跳包
00:02.00 继续发送心跳包
00:02.17 TCP端接收到上述两个心跳包的结合体(两个心跳包结合成一个了)

原因猜测:
由于SIM900A 没有接到00:00:00 心跳包的SEND OK,所以后续00:01:00与00:02:00两个心跳包被SIM900A合为一个发送出去了

目前来看,这个现象出现的概率很小,心跳包发送了将近2个小时才出现一次,想利用抓包工具来分析暂时也不可行,后来翻

看AT命令手册,发现了一条命令:AT+CIPTXISS;命令解释为:TCP数据过程中丢弃输入的AT命令,不知道是否跟这个问题有关

由于这种情况复现比较困难,不知道前辈们知道这个问题的根源以及解决方法不?

还有个疑问:SIM900A利用TCP发送数据出去之后,如果一直没有接收到SEND OK, 这时候重新发送是否会出问题??如果会的话

应该怎么解决?

阿莫论坛20周年了!感谢大家的支持与爱护!!

该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981

出0入0汤圆

 楼主| 发表于 2014-5-26 16:57:09 | 显示全部楼层
大牛们速速来顶

出0入0汤圆

发表于 2014-5-26 17:04:30 | 显示全部楼层
问sim900a厂家咨询  他们有不同的固件 应用不一样的 好像有维持连接的固件 当时硬件的同事就是发现我们常连接经常断线

出0入0汤圆

 楼主| 发表于 2014-5-26 17:12:31 | 显示全部楼层
请调试过的大牛们路过指导一下,自己在这个模块上已经花了很多时间了,实在hold不住了

出1070入962汤圆

发表于 2014-5-26 17:17:09 | 显示全部楼层
策略问题。心跳间隔是被当作最大允许无回应时间,那么,过了一个心跳周期,如果还未收到服务器的ACK,我会认为该TCP已经失效,转入自动重连接处理,为什么还要接着发送心跳包呢?

心跳包如果仅仅是让移动的GGSN保持移动端分配端口的话,是不是有点浪费了?

还有TCP/IP的基础就是基于存储转发网络的,这样的网络还要跨越异构的物理网络,楼主确定这个合并拆分的事情一定是发生在模块身上吗?

出0入0汤圆

发表于 2014-5-26 17:18:18 | 显示全部楼层
我们的方案使用外部协议栈,关闭Nagle,可以有效果控制这种延时和粘包情况。

出0入0汤圆

发表于 2014-5-26 17:53:17 | 显示全部楼层
不是双向吗?   

SIM900A发个心跳,服务器回复一下。。   而且两个包连起来也很正常吧。。   要做分包处理的

出0入0汤圆

 楼主| 发表于 2014-5-26 18:08:47 | 显示全部楼层
Appcat 发表于 2014-5-26 17:17
策略问题。心跳间隔是被当作最大允许无回应时间,那么,过了一个心跳周期,如果还未收到服务器的ACK,我会 ...

后来考虑了一下,确实应该更改一下策略了,确实应该开启自动重连。

前辈,我之所以竭力避免重连是因为以下问题:

确认模块已经附着上GSM网络后,执行AT+CGATT=1,经常出错,到现在也不知道是怎么回事

我的连接流程是这样子的:

AT+CPIN?
AT+CSQ
AT+CREG?(一直轮询等到注册上GSM网络)
AT+CIPSHUT
AT+CIPQRCLOSE=1
AT+CGCLASS?(如果是B则不需要设置)
AT+CGDCONT?(如果是“1”,“IP”,“CMNET”,则不需要设置)
AT+CGATT?(如果未连接上GPRS网络,则设置)
AT+CGATT=1(有时候返回ERROR,有时候等很久才回应ERROR,超时时间到了之后我发送重启命令之后模块也没任何响应)



不知道这是什么问题,前辈有何高见?

出0入0汤圆

 楼主| 发表于 2014-5-26 18:10:48 | 显示全部楼层
aozima 发表于 2014-5-26 17:18
我们的方案使用外部协议栈,关闭Nagle,可以有效果控制这种延时和粘包情况。 ...

具体怎么搞哪?

出1070入962汤圆

发表于 2014-5-26 18:40:51 | 显示全部楼层
zcbAzfl 发表于 2014-5-26 18:08
后来考虑了一下,确实应该更改一下策略了,确实应该开启自动重连。

前辈,我之所以竭力避免重连是因为以 ...

无非就是信号低或者该基站拥挤。排除模块因素,如果不是这两个问题,应该就没有问题了。

出0入0汤圆

 楼主| 发表于 2014-5-26 18:57:44 | 显示全部楼层
Appcat 发表于 2014-5-26 18:40
无非就是信号低或者该基站拥挤。排除模块因素,如果不是这两个问题,应该就没有问题了。 ...

前辈,现在AT+CGATT=1可以正确返回OK了,但是AT+CIPSTART一直返回PDP DEACT,CIPSHUT后重连后者是重启重连问题一直依旧,天线我拧下来又拧上去了,信号质量在9左右

出1070入962汤圆

发表于 2014-5-26 19:13:07 | 显示全部楼层
zcbAzfl 发表于 2014-5-26 18:57
前辈,现在AT+CGATT=1可以正确返回OK了,但是AT+CIPSTART一直返回PDP DEACT,CIPSHUT后重连后者是重启重 ...

CSQ一般在20以上会比较稳定,满格是31,10以下基本无法正常使用。

出0入0汤圆

发表于 2014-5-26 19:16:07 | 显示全部楼层
数据连包和GPRS网关策略有关,
信号质量9这个太低,请至少保证信号质量在19以上,最大32。

出0入147汤圆

发表于 2014-5-26 19:26:26 | 显示全部楼层
SIM900A\D系列在弱信号下附着GPRS网络死机是固件BUG,升级到B10以上的版本就好了。

出0入0汤圆

 楼主| 发表于 2014-5-26 20:45:24 | 显示全部楼层
dreampet 发表于 2014-5-26 19:26
SIM900A\D系列在弱信号下附着GPRS网络死机是固件BUG,升级到B10以上的版本就好了。 ...

请问一下SIM900A固件去哪里下载哪?

出0入0汤圆

发表于 2014-5-27 08:34:56 来自手机 | 显示全部楼层
关闭Nagle在公网上传输大量小数据包会造成拥堵么,在应用层处理怎么样啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-9-2 00:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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