中移物联ML302 4G Cat1 模组TCP/UDP 实现流程
注意:下文种的□表示“\r\n”
一,首先AT
[00:57:34.794]发→◇AT
□
[00:57:35.756]发→◇AT
□
[00:57:35.760]收←◆AT
OK
二,查询卡CIMI 和 ICCID
[00:57:57.834]发→◇AT+CIMI
□
[00:57:57.838]收←◆AT+CIMI
460081237003326
OK
[11:59:17.096]发→◇AT+ICCID
□
[11:59:17.101]收←◆AT+ICCID
+ICCID: 89860492192070603326
OK
三,查询信号值
[00:58:15.770]发→◇AT+CSQ
□
[00:58:15.774]收←◆AT+CSQ
+CSQ: 20,99
OK
四,查询是否附着网络(GPRS?)
[00:58:29.236]发→◇AT+CGATT?
□
[00:58:29.242]收←◆AT+CGATT?
+CGATT:1
OK
五,激活PDP上下文(第一个’1’表示active,最后一个’1’表示cid=1)
[01:00:15.810]发→◇AT+CGACT=1,1
□
[01:00:15.814]收←◆AT+CGACT=1,1
[01:00:16.115]收←◆
+CGACT: 1,1
OK
六,建立TCP/UDP连接(倒数第二个参数’1’对应上面一条CGACT的最后一个’1’,即cid)
TCP:
[01:01:21.248]发→◇AT+MIPOPEN=1,“TCP”,“47.92.146.210”,8888,100,0,0,1,11002
□
[01:01:21.257]收←◆AT+MIPOPEN=1,“TCP”,“47.92.146.210”,8888,100,0,0,1,11002
OK
如果TCP连接失败或超时,则会紧接着(会等一会,大概几十秒)返回如下消息:
+MIPURC: “STATE”,1,2
1,CONNECT FAIL
1,CLOSED
AT+MIPOPEN=1,“TCP”,“48.92.146.210”,8888,100,0,0,1,11002
OK
如果TCP连接成功,则会紧接着返回如下消息:
[01:01:21.421]收←◆
1,CONNECT OK
UDP:
[01:08:14.976]发→◇AT+MIPOPEN=1,“UDP”,“47.92.146.210”,9999,100,0,0,1,11002
□
[01:08:14.984]收←◆AT+MIPOPEN=1,“UDP”,“47.92.146.210”,9999,100,0,0,1,11002
OK
1,CONNECT OK
七,发送数据和接收数据
[01:04:05.291]发→◇AT+MIPSEND=1,10
□
[01:04:05.297]收←◆AT+MIPSEND=1,10
[01:04:07.687]发→◇1234567890
□
[01:04:07.691]收←◆1234567890
[01:04:07.877]收←◆
1,SEND OK
[01:04:07.968]收←◆
+MIPURC: “recv”,1,10
1234567890
有时接收数据还有可能是下面这样:
[00:54:51.322]收←◆
+MIPURC: “recv”,1,10
12345678
[00:54:51.346]收←◆90
八、注意!!!
有种情况,在接收TCP/UDP数据的同时,我们发送了获取GPS数据的指令,会导致接收不到服务端下发的数据,例子如下:
[02:01:10.290]发→◇AT+MIPSEND=1,10
□
[02:01:10.296]收←◆AT+MIPSEND=1,10
[02:01:10.811]发→◇AT+MGNSSLOC
□
[02:01:10.821]收←◆AT+MGNSSLOC
[02:01:10.946]发→◇1234567890
□
[02:01:10.950]收←◆1234567890
1,SEND OK
[02:01:11.034]收←◆
+MIPURC: “recv”,1,10
AT+MGNSSLO //--------------------重点在这里,“1234567890”被换成同样长度的“AT+MGNSSLO”了
-------可能是因为过早的发送了上面的“AT+MGNSSLOC”导致把本该发送的“1234567890”覆盖了
[02:01:11.811]发→◇AT+MGNSSLOC
□
[02:01:11.821]收←◆AT+MGNSSLOC
+MGNSSLOC: 180111.00,2242.8158N,11431.8045E,1.70,96.8,3,2.582,1.394,190421,11
OK
九、TCP连接状态(第一个’1’表示上面已经出现过的connect_id)
当模组突然返回 +MIPURC: “STATE”,1,1 时,表示 server closed the connection
当模组突然返回 +MIPURC: “STATE”,1,2 时,表示 connecting exception