搜索
bottom↓
回复: 18

GPRS每10秒发送一次数据,求判断每次数据是否发送成功方法

[复制链接]

出0入10汤圆

发表于 2015-8-13 11:41:48 | 显示全部楼层 |阅读模式
采用SIM900A TCP协议每10秒向服务器发送一次数据,对于判断每次数据是否发送成功,想到了以下两种方法:
1、每次数据发送完毕,判断有无SEND OK返回,等待时间小于10S;
2、采用握手协议,每次数据发送完毕,判断是否收到握手信号,等待时间小于10S;

数据发送不成功就本地存储,由于发送时间间隔太短,存储的数据又该什么时候发送呢?
在10S内等待返回值或应答,感觉这个时间也短了点,可能会误判断?
对于采用GPRS模块频繁发送数据,时间间隔很短这种情况,发送状态的判断,数据的存储发送等问题,朋友们是怎么处理的呢?恳请指教!


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

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出10入120汤圆

发表于 2015-8-13 11:55:24 | 显示全部楼层
每次发送加流水号,返回包将流水返回便于检查。

出0入0汤圆

发表于 2015-8-13 11:55:24 | 显示全部楼层
本帖最后由 jdh99 于 2015-8-13 11:56 编辑

最近也在做相关项目,处理方式如下:
1.SEND OK判断是否发送成功
2.超时未返回则认为发送失败,重新连接发送
3.超过若干次则舍弃本帧

出0入10汤圆

 楼主| 发表于 2015-8-13 12:44:27 | 显示全部楼层
jdh99 发表于 2015-8-13 11:55
最近也在做相关项目,处理方式如下:
1.SEND OK判断是否发送成功
2.超时未返回则认为发送失败,重新连接发 ...

请教下:
1、你的超时时间定的多少?
2、超过若干次,数据发送不成功,要舍掉不存储起来吗?

出0入10汤圆

 楼主| 发表于 2015-8-13 12:45:34 | 显示全部楼层
makesoft 发表于 2015-8-13 11:55
每次发送加流水号,返回包将流水返回便于检查。

比如第一次发送完数据,返回包还没有到来,就到达第二次发送数据时间了,该怎么处理?

出0入0汤圆

发表于 2015-8-13 13:04:18 | 显示全部楼层
如果上位机/服务器端的程序做的好,可以保证你这边出现send ok,服务器端的应用程序一定能收到数据。你可以简单的根据send ok来认为已经发送成功了。

出0入0汤圆

发表于 2015-8-13 13:05:48 | 显示全部楼层
如果你的设备是在移动,如装在车上,那么10秒钟的等待时间太短了。我实际观察到的,有50秒钟才发送成功的。

出0入0汤圆

发表于 2015-8-13 13:08:45 | 显示全部楼层
你发送失败时,可以close一下TCP连接,然后重新connect服务器。connect ok之后,再启动发送。

出0入75汤圆

发表于 2015-8-13 13:09:35 | 显示全部楼层
lklhzu 发表于 2015-8-13 12:45
比如第一次发送完数据,返回包还没有到来,就到达第二次发送数据时间了,该怎么处理? ...

如果对实时要求不高,几次的数据放到一起,本地暂存,然后一起发出去,实时性要求高的话,想办法解决信号问题吧。

出0入0汤圆

发表于 2015-8-13 14:02:18 | 显示全部楼层
发送的数据中包含序号,服务器未确认的需要本地缓存,gprs有可能信号不好导致发送失败,甚至比较长时间内都连接不成功,当然,如果数据不重要,丢失也无所谓啦

出0入0汤圆

发表于 2015-8-13 14:39:33 | 显示全部楼层
SEND OK 不代表已经把数据发送到服务器,只能说明数据已经到你所属的基站,SIMCOM模块比较少用,QUECTEL的模块我记得可以判断事是否发送到目标服务器上。
记忆中貌似是这样

出0入0汤圆

发表于 2015-8-13 22:35:58 | 显示全部楼层
让服务器回传一个数据表明已收到

出10入120汤圆

发表于 2015-8-14 09:57:11 | 显示全部楼层
lklhzu 发表于 2015-8-13 12:45
比如第一次发送完数据,返回包还没有到来,就到达第二次发送数据时间了,该怎么处理? ...

当然直接发送了,超时数据在本地做标记,比如说60S收不到返回的流水号OK,补发就是了。

出0入0汤圆

发表于 2016-9-4 23:16:30 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2016-9-5 19:46:32 | 显示全部楼层
如果不适用PPP协议的话,很难做到可靠传出,PPP可以捕获TCP ACK报文

出0入10汤圆

 楼主| 发表于 2016-9-5 22:18:53 | 显示全部楼层
easyio 发表于 2016-9-5 19:46
如果不适用PPP协议的话,很难做到可靠传出,PPP可以捕获TCP ACK报文

请问你有PPP拨号建立SOCKET连接的例程吗?

出0入0汤圆

发表于 2016-9-5 22:27:57 | 显示全部楼层
lklhzu 发表于 2016-9-5 22:18
请问你有PPP拨号建立SOCKET连接的例程吗?

http://www.amobbs.com/forum.php? ... p;page=1#pid9422419

出0入10汤圆

 楼主| 发表于 2016-9-5 22:34:01 | 显示全部楼层
easyio 发表于 2016-9-5 22:27
http://www.amobbs.com/forum.php?mod=viewthread&tid=5659069&page=1#pid9422419

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

本版积分规则

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

GMT+8, 2024-8-25 20:17

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

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