chenl0519 发表于 2012-8-2 15:24:30

MG323模块使用内置TCPIP的3种数据传输方式

最近开始研究GPRS模块,之前没有接触过,还好这里有appcat大虾发的很多资料,再次感谢appcat的分享。
现在对三种传输方式做下总结,其中也还有很多问题需要得到大家的帮助。
1、使用AT^IPENTRANS透传模式
   该模式与GTM900C的透传模式类似,提供定时发送和定长发送两种模式。进入该模式后串口接收到的任何数据都会通过GPRS发送,没有任何返回确认信息。
   缺点:该模式下,来电和短信不会主动上报,只能通过RING脚获知。在被叫等待过程中数据会有阻塞,使用ATH命令需要退出该模式。虽然链接断开后会有ERROR
             提示,但是从数据发出到返回ERROR需要等待大约70秒时间,这段时间内仍旧会不断向模块发送用户数据。
2、使用AT^SISW命令发送数据
   这种发送方式只有在接到串口数据时才使用AT^SISW命令发送,没有数据发送时处于AT命令模式,可以做相应的监控,比如监测信号强度之类。
   缺点:方式1相同,当数据链路断开后,数据发出到返回ERROR也需要等待大约70秒时间。
3、使用AT%IPSEND命令(这要感谢appcat大虾对MG323的挖掘,发现了GTM900的兼容指令)
   这种发送方式使用了发送窗,MG323一共9个窗口,每当发完一次会显示剩余的发送窗口,这个方式能够一定程度上反映链路的状况。同时也处于AT命令模式,
   可以对GPRS进行信号等情况的监测。
   缺点(可能不是,只是我没能解决):就如appcat大虾说的,当发送窗口用完后就会返回ERROR 29,之后重新建立连接后,发送窗口仍然存在。appcat大虾说需要
   断开PDP后重新建立,然后进行TCP连接,发送窗会清除,但是我没能实现,只有当模块重启后发射窗消除。

上面是我对MG323模块调试过程中的一点总结,应该说属于门外汉,很多问题都没能解决好。有几个问题想请大家帮忙:
1、在使用AT^IPENTRANS或者AT^SISW命令时,如何能够尽快知道我的数据是否已经发送出去
2、使用AT%IPSEND命令时如何在链接断开后有效的清除占用的发送窗,最好能有详细的过程
3、有没哪位有linux下的上位机程序,有的话能否给我一份,我们的服务器是linux系统,目前只能使用nc -l 命令监听,
   但是发现不稳定,经常有假链接,发送端显示已链接但是数据无法发送,而且只能监听不能下发数据。

QQ1013182577 发表于 2012-9-21 22:08:47

华为建议MG323用户注意,不推荐使用AT%ETCPIP等AT指令。
MG323确实兼容了部分EM310模块的GPRS指令,但是不推荐使用。因为这部分兼容指令是为了部分客户替换EM310时候的临时措施。为了发挥MG323模块的优势,以及后续版本升级优化,请使用MG323 AT命令手册中的指令:
例如:
at^sics=0,passwd,gprs
OK
at^sics=0,user,cm
OK
at^sics=0,apn,cmnet
OK

/////////////////////////////
at^siss=0,srvType,socket
OK
AT^SISS=0,conId,0
OK
at^siss=0,address,"socktcp://bbs.tsinghua.edu.cn:23"
OK
AT^SISO=0
OK

^SISW: 0, 1

/////////////////////////////===============================
at^siss=1,srvType,socket
OK
AT^SISS=1,conId,0
OK
at^siss=1,address,"socktcp://218.108.114.138:21002"
OK
AT^SISO=1
OK
/////////////////////////////===============================


AT^SISW=0,15
^SISW: 0, 15, 15


OK

^SISW: 0, 1

^SISR: 0, 1
AT^SISR=0,150   
^SISR: 0, 15
123456789012345

OK
AT^SISR=0,150
^SISR: 0, 0

OK
AT^sisc=0
OK

maohuhua123 发表于 2012-9-25 12:02:27

总结很不错 顶你~

chenl0519 发表于 2012-9-27 15:56:14

QQ1013182577 发表于 2012-9-21 22:08 static/image/common/back.gif
华为建议MG323用户注意,不推荐使用AT%ETCPIP等AT指令。
MG323确实兼容了部分EM310模块的GPRS指令,但是不 ...

综合了各种利弊,最后还是选用了MG323的SISW模式发送数据。经过测试其缓冲区的大小为5840字节。但是最近测试的时候发现网络信号在16-19的时候会出现MG323无法写入的情况,也就是提示^SISW:0,0,这时MG323的缓冲数据根本没有达到5840字节。请教在这种情况下,有没有什么好的解决方法,保证数据不丢失?

QQ1013182577 发表于 2012-12-29 20:39:31

MG323 数据缓存大小是动态分配的

Julius20110 发表于 2013-1-14 21:22:02

{:loveliness:}MARK

breming 发表于 2013-1-24 09:15:35

为什么我的模块直接通过域名地址发送数据不行 at^siss=0,address,"socktcp://bbs.tsinghua.edu.cn:23" ,只能通过其IP

breming 发表于 2013-1-24 09:19:38

{:cry:},哪位能帮忙分析一下

breming 发表于 2013-1-24 09:33:54

错误如下:
at^siss=0,address,"socktcp://beijingchijiu.gicp.net:80"

OK
AT^SISO=0
ERROR

magtempo 发表于 2013-4-23 16:50:16

学习了,不错!我现在也在搞MG323,不过发现MG323不如900C在数据发送时候灵活,900C一条AT%IPSEND就可以了,
MG323使用

AT^SISW=0,15
^SISW: 0, 15, 15


OK
然后才能发送数据,当然发送AT^SISW=0,15也可直接发送数据,
但是这样的话我还的计算发送数据的长度,然后在转化成字符类型,显得不如900C好用。可惜的是900C华为停产了。{:huffy:}

windrarara 发表于 2013-8-12 23:16:05

本帖最后由 windrarara 于 2013-8-12 23:17 编辑

QQ1013182577 发表于 2012-9-21 22:08 static/image/common/back.gif
华为建议MG323用户注意,不推荐使用AT%ETCPIP等AT指令。
MG323确实兼容了部分EM310模块的GPRS指令,但是不 ...

请问使用mg323的内嵌tcpip栈,支持同时存在多个tcp连接吗?

我看手册是说支持,但是按照at命令手册实际测试,如果打开了一个tcp连接再去配置并打开另一个就会返回error……

xranger 发表于 2014-2-27 23:58:16

好好研究一下

yangzi8000 发表于 2015-4-27 11:28:28

楼主 我也想用透传模式 发现这个模式下出现假链接以后 发送数据补返回ERROR和正常发送一模一样如何知道数据已经发送出去 解决了吗
页: [1]
查看完整版本: MG323模块使用内置TCPIP的3种数据传输方式