ATD*99***1 命令的问题, 新手,请各位多帮帮忙
ATD*99***1#的含义就是从Modem内存中选择1#位置的接入点配置, 那么我通过什么命令把IP地址配置信息写到 1#位置啊?? 请各位大侠帮帮忙!! 这个命令只是拨号,使用1#的接入点,并不是IP地址配置信息 该方式是协议自建 1#的接入点,实际代表的是什么阿?? CMNET 另外,还有一个问题,请各位帮帮忙,那个指令是检测TCP连接是否断线的?? AT+CIPSTATUS AT+CIPSTATUS仅仅能处理一小部分情况,主要是正常的网络连接与挂断之类的,对于出现网络异常,这个指令一点用处也没有。如果在产品中就依靠这个指令来做网络状态的判断,后面哭都来不及。 多谢 Appcat 苹果猫 指教,能否详细说说,或者给个链接,我去查查,
现在我还是真的就靠这个来判断的,呵呵.只是产品还没有批量销售. 你现在的产品是在办公室,实验室里边测试的,一般的网络状态都是固定的,就是那么个基站,就是那么个平均负载,平均延迟时间,你的程序只要正确了,很容易稳定工作,等你的设备离开了这个环境,很多网络上的问题就来了:信号不好、信道拥挤、移动变态随机踢终端、移动内部GGSN不稳定、设备在传输过程中遇到基站切换...... 类似的情况太多了。
虽然GPRS模块内置了TCPIP协议,使用命令调用也很容易,但是TCP协议是复杂的,在不同网络设备上的处理会有差异的,在没有理解TCP的本质时,很容易忽略这个问题。最突出的例子就是,GPRS模块连接服务器,收发正常,这时突然将服务器的网线拔掉,如果自己不做处理,GPRS模块会在随后的十几分钟里边一直认为这个链接是正常的,直到内部缓冲区耗尽(很多模块对付内部缓冲区耗尽的办法就是自己重启,完全不管用户数据的可靠性,更狠的是某些国产山寨模块干脆就死机)。拔掉网线仅仅是一个测试用例,实际上能代表网络中很多未知因素的作用。所以TCP信道是要自己监控的,不是靠某个指令能解决的。
1%的工作量在实现数据传输功能,99%的工作量在实现故障处理以及不同网络条件的适应以确保产品稳定。这些东西,才是真正做GPRS传输费劲的地方。这些互联网上都不会有链接的,顶多在某个厂商论坛中来个神秘兮兮的“假连接”的说法,根本不知所谓。也正是这个原因,所以我们会在这个论坛直接开源了一个完全能用的透明传输DTU,数据传输功能都已经实现了,实际上这个才是我们工作量的1%不到。 明白了,谢谢猫哥../emotion/em011.gif Appcat 发表于 2010-3-5 17:54
你现在的产品是在办公室,实验室里边测试的,一般的网络状态都是固定的,就是那么个基站,就是那么个平均负 ...
猫大侠说的很对啊,遇到过信号不好的环境下,链接断了,但是设备检测不到链接断开,请问还需要哪些指令和方法来判断模块和服务器的链接断没断开啊! lklhzu 发表于 2014-7-23 14:30
猫大侠说的很对啊,遇到过信号不好的环境下,链接断了,但是设备检测不到链接断开,请问还需要哪些指令和 ...
靠应用层协议的保障,比如心跳超时机制,或者是和服务器的交互协议超时重发等等。
不要指望模块还有什么指令可以监测这个情况,只要模块能监测这个情况,那么这个问题就不存在了,而它是确确实实存在的。 Appcat 发表于 2014-7-23 16:08
靠应用层协议的保障,比如心跳超时机制,或者是和服务器的交互协议超时重发等等。
不要指望模块还有什么 ...
谢谢猫大侠,这里说的“心跳超时机制”是对服务器端(比如SOCKET调试工具等)来说的吧,就是它对每个链接相邻两次上报心跳的时间间隔进行判断,超出一定时间就把链接断开。我看大部分DTU在没有数据的情况下,会往服务器端每隔一定时间发个心跳包,我用SOCKET工具接收心跳数据,并没给它握手,此时如果我把SOCKET链接断开,它能检测出来并立即重新建立链接,感觉DTU里面有某种判断方法在不停地监测连接状态一样,就是不清楚它是通过什么方法那么快检测出来链接断开的。难道不是通过AT指令查询模块状态吗?还请指教!
页:
[1]