ourdev.cn 发表于 2012-8-28 10:55:36

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

{:dizzy:}做了个项目,GPRS掉线是不可避免的,可是掉线后总是很久才会连上来,请问有什么办法能快速实时检测GPRS是否掉线呢?谢谢

hellobear 发表于 2012-8-28 11:16:22

程序不是你写的吗?   gprs模块有检测链接状态的at指令

brahen 发表于 2012-8-28 11:18:36

这不是关键。关键是楼主发送at指令后,怎么对返回的数据作区分。特别是在gprs网络正在工作的时候。后续的工作才繁琐。

ourdev.cn 发表于 2012-8-28 11:41:52

发AT检测状态的话,岂不是要频繁退出数传模式?我想1S检测一下链路状态,如果在退出数传模式时刻有数据正常接收和发送,那样就不好了,我也找不到更好的方式

wicy001 发表于 2012-8-28 15:15:09

ourdev.cn 发表于 2012-8-28 11:41 static/image/common/back.gif
发AT检测状态的话,岂不是要频繁退出数传模式?我想1S检测一下链路状态,如果在退出数传模式时刻有数据正 ...

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

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

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

dadongleilei 发表于 2012-8-28 16:31:51

加个心跳确认机制比较可行

ourdev.cn 发表于 2012-8-28 16:46:57

我心跳确认是一分钟一次,检测心跳的话,重连速度还是会很慢

gaoshou5432 发表于 2012-8-28 23:20:57

兄弟.慢是什么意思..是从断电后直到连接到网络.只是断开发服务器,但是模块的IP还在.然后重连到服务器的时候慢.这个要搞清楚.
应该都是加心跳包来检测的.信认模块自身检测的基础上,更要相信自己的心跳程序才好.

ourdev.cn 发表于 2012-8-31 10:30:11

假如我一分钟一次心跳,检测到心跳后,链路断开了,这样如果要重连的话就得等一分钟后的下一次心跳检测了,这样重连比较慢

Appcat 发表于 2012-8-31 10:46:18

5楼正解! 不要过于依赖模块自己的透传。否则享受它带来的便利的同时也要忍受它的毛病。

ourdev.cn 发表于 2012-8-31 16:40:47

苹果猫你好,其实我想问的是,如何实时检测GPRS链路的状态,也就是说如果掉线了,如何马上知道?

dadatou 发表于 2012-8-31 16:47:33

本帖最后由 dadatou 于 2012-8-31 16:51 编辑

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

dadatou 发表于 2012-8-31 16:50:45

Appcat 发表于 2012-8-31 10:46 static/image/common/back.gif
5楼正解! 不要过于依赖模块自己的透传。否则享受它带来的便利的同时也要忍受它的毛病。 ...

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

Appcat 发表于 2012-8-31 16:51:36

ourdev.cn 发表于 2012-8-31 16:40 static/image/common/back.gif
苹果猫你好,其实我想问的是,如何实时检测GPRS链路的状态,也就是说如果掉线了,如何马上知道? ...

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

ourdev.cn 发表于 2012-8-31 18:08:43

晕,不理解{:dizzy:}

Appcat 发表于 2012-9-1 16:01:39

ourdev.cn 发表于 2012-8-31 18:08 static/image/common/back.gif
晕,不理解

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

gdmgb520 发表于 2012-9-27 13:02:47

我们也在用GPRS,SIM900,每10s向服务器汇报一次数据,服务器应答一条数据,如果多次没有收到服务器的应答,就认为掉线,转入重连。如果多次没有收到send ok 也认为掉线,转入重连。

BSMGood 发表于 2013-1-9 11:00:28

可恨的是,我做的项目中GPRS使用心跳包保持与服务器的连接,但是服务器是每隔一个小时才会应答GPRS模块,服务器对于心跳包只是用作下位机的ID号,所以这里如果我掉线了,我得两个小时之后才能知道,我的更慢

happy_andy 发表于 2013-1-9 11:28:05

你详细看看AT命令,里面有状态检测的

xyharm 发表于 2019-4-10 11:49:32

页: [1]
查看完整版本: 请教GPRS高手关于GPRS掉线重连的实时性问题