搜索
bottom↓
回复: 19

请教GPRS高手关于GPRS掉线重连的实时性问题

[复制链接]

出0入0汤圆

发表于 2012-8-28 10:55:36 | 显示全部楼层 |阅读模式
做了个项目,GPRS掉线是不可避免的,可是掉线后总是很久才会连上来,请问有什么办法能快速实时检测GPRS是否掉线呢?谢谢

出0入0汤圆

发表于 2012-8-28 11:16:22 | 显示全部楼层
程序不是你写的吗?   gprs模块有检测链接状态的at指令

出0入0汤圆

发表于 2012-8-28 11:18:36 | 显示全部楼层
这不是关键。关键是楼主发送at指令后,怎么对返回的数据作区分。特别是在gprs网络正在工作的时候。后续的工作才繁琐。

出0入0汤圆

 楼主| 发表于 2012-8-28 11:41:52 | 显示全部楼层
发AT检测状态的话,岂不是要频繁退出数传模式?  我想1S检测一下链路状态,如果在退出数传模式时刻有数据正常接收和发送,那样就不好了,我也找不到更好的方式

出0入17汤圆

发表于 2012-8-28 15:15:09 | 显示全部楼层
ourdev.cn 发表于 2012-8-28 11:41
发AT检测状态的话,岂不是要频繁退出数传模式?  我想1S检测一下链路状态,如果在退出数传模式时刻有数据正 ...

在透传的基础上,通信双方遵守一定的约定,也就是添一种协议。

比如,DTU发出信息,上位机需要给个应答,没有应答,或应答错误,就判断链路不正常,转入错误处理

这个协议,可以参考I2C,xmodem,modbus等等,自己规定就好了。

出0入0汤圆

发表于 2012-8-28 16:31:51 | 显示全部楼层
加个心跳确认机制比较可行

出0入0汤圆

 楼主| 发表于 2012-8-28 16:46:57 | 显示全部楼层
我心跳确认是一分钟一次,检测心跳的话,重连速度还是会很慢

出0入0汤圆

发表于 2012-8-28 23:20:57 | 显示全部楼层
兄弟.慢是什么意思..是从断电后直到连接到网络.只是断开发服务器,但是模块的IP还在.然后重连到服务器的时候慢.这个要搞清楚.
应该都是加心跳包来检测的.信认模块自身检测的基础上,更要相信自己的心跳程序才好.

出0入0汤圆

 楼主| 发表于 2012-8-31 10:30:11 | 显示全部楼层
假如我一分钟一次心跳,检测到心跳后,链路断开了,这样如果要重连的话就得等一分钟后的下一次心跳检测了,这样重连比较慢

出1070入962汤圆

发表于 2012-8-31 10:46:18 | 显示全部楼层
5楼正解! 不要过于依赖模块自己的透传。否则享受它带来的便利的同时也要忍受它的毛病。

出0入0汤圆

 楼主| 发表于 2012-8-31 16:40:47 | 显示全部楼层
苹果猫你好,其实我想问的是,如何实时检测GPRS链路的状态,也就是说如果掉线了,如何马上知道?

出0入0汤圆

发表于 2012-8-31 16:47:33 | 显示全部楼层
本帖最后由 dadatou 于 2012-8-31 16:51 编辑

我认为,一分钟内检测到链路断开,应该算是响应比较快的了.
我用过有方的模块,每次发送数据后,通过检测模块内可用缓冲区的大小,如果缓冲区大小会变化并最终到达最大值,则消息发送成功,如果缓冲区大小没有到最大值,并且没有变化,则判断掉线,重联并重新发送.
要做一个比较大的环形缓冲区,避免在数据发送失败或掉线的情况下,出现数据丢失的情况.

出0入0汤圆

发表于 2012-8-31 16:50:45 | 显示全部楼层
Appcat 发表于 2012-8-31 10:46
5楼正解! 不要过于依赖模块自己的透传。否则享受它带来的便利的同时也要忍受它的毛病。 ...

5楼确实是一种不错的方法,在DTU端主动发送信息的情况下,服务器必须要有应答,根据应答来判断GPRS是否掉线,但在有些应用场合,是服务器主动查询DTU端的数据,DTU为从机,这种情况下,用上述方法就显得繁了.

出1070入962汤圆

发表于 2012-8-31 16:51:36 | 显示全部楼层
ourdev.cn 发表于 2012-8-31 16:40
苹果猫你好,其实我想问的是,如何实时检测GPRS链路的状态,也就是说如果掉线了,如何马上知道? ...

5楼说的不是很清楚了吗?

出0入0汤圆

 楼主| 发表于 2012-8-31 18:08:43 | 显示全部楼层
晕,不理解

出1070入962汤圆

发表于 2012-9-1 16:01:39 | 显示全部楼层
ourdev.cn 发表于 2012-8-31 18:08
晕,不理解

不要依赖模块,模块是傻的,它没办法知道链路中间环节的情况,他只有在协议规定的时间内没有收到响应才会报错,TCPIP协议的各版本这个时间不是确定的,但是一般也要将近10分钟。
在应用协议层做文章,有发送有应答,超过10秒应答不到就认为出错,重新进行连接,这不是很好嘛?

出0入0汤圆

发表于 2012-9-27 13:02:47 | 显示全部楼层
我们也在用GPRS,SIM900,每10s向服务器汇报一次数据,服务器应答一条数据,如果多次没有收到服务器的应答,就认为掉线,转入重连。如果多次没有收到send ok 也认为掉线,转入重连。

出0入0汤圆

发表于 2013-1-9 11:00:28 | 显示全部楼层
可恨的是,我做的项目中GPRS使用心跳包保持与服务器的连接,但是服务器是每隔一个小时才会应答GPRS模块,服务器对于心跳包只是用作下位机的ID号,所以这里如果我掉线了,我得两个小时之后才能知道,我的更慢

出0入0汤圆

发表于 2013-1-9 11:28:05 | 显示全部楼层
你详细看看AT命令,里面有状态检测的
头像被屏蔽

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-20 13:00

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

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