我们在使用模块访问网络时一般有两种做法,一种是通过ppp拨号的方式,将设备挂载到主CPU上,这种对linux系统方案的外接比较方便;另一种是直接使用AT交换的方式,通过AT进行发送和接收数据。

对于AT方式的TCPIP接口一般都是各个厂家自己封装的指令,下面以移远和simcom公司的为例进行说明。

移远模块(AT+QI***)

1.连接TCP

TCP的建立可以是IP也可以是域名,不过需要在连接之前设置

设置为域名连接:AT+QIDNSIP=1

建立TCP连接:AT+QIOPEN=“TCP”,“121.201.34.111”,“1234”

AT+QIOPEN="TCP","121.201.34.111","1234"
OK

CONNECT OK

QIOPEN返回的结果的时间跟网络有关系,所以有时候为了避免等待会主动查询当前的网络状态。

查询TCP连接状态:AT+QISTAT

AT+QISTAT

OK
STATE: CONNECT OK

2.发送

发送数据:AT+QISEND=195

AT+QISEND=61
> HJDSJFHLKDSJFH...
SEND OK

查询发送结果:AT+QISACK

AT+QISACK

+QISACK: 61, 0, 61  //表示已经发送0个字节,还有61个字节未发送
OK

AT+QISACK

+QISACK: 61, 61, 0  //表示61个字节全部发生完成
OK

3.接收

数据的接收有两种情况,一种是模块将接收到的数据直接返回给AT发送者,一种是模块将接收到的数据存在缓存里面,有用户自行调用接口去读取数据。

要在TCP连接之前就设置为缓存模式

AT+QINDI=1

数据的接收可以不一次性接收完成,可能分段接收。
查询接收结果:AT+QIRD

AT+QIRD=0,1,0,12

+QIRD: 121.201.34.190:20016,TCP,12
!姂

OK

4.断开TCP

断开TCP连接:AT+QICLOSE

AT+QICLOSE

CLOSE OK

5.其他

断开GPRS:AT+QIDEACT

AT+QIDEACT

DEACT OK

激活GPRS:AT+QIACT

AT+QIACT

OK
SimCom模块(AT+CIP***)

1.连接TCP

建立TCP连接:AT+CIPSTART=“TCP”,“121.201.34.111”,“1234”

AT+CIPSTART="TCP","121.201.34.111","1234"
OK

CONNECT OK

CIPSTART返回的结果的时间跟网络有关系,所以有时候为了避免等待会主动查询当前的网络状态。

查询TCP连接状态:AT+CIPSTATUS

AT+CIPSTATUS
OK

STATE: CONNECT OK

2.发送

发送数据:AT+CIPSEND=12

AT+CIPSEND=12
> HJDSJFHLKDSJFH
SEND OK

CIPSEND返回的结果的时间也跟网络有关系,所以有时候为了避免等待会主动查询当前的发送状态。

查询发送结果:AT+CIPACK

AT+CIPACK
+CIPACK: 12,4,8   //表示已经发送4个字节,还有8个字节未发送

OK

AT+CIPACK
+CIPACK: 12,12,0  //表示12个字节均已发生完成

OK

3.接收

数据的接收有两种情况,一种是模块将接收到的数据直接返回给AT发送者,一种是模块将接收到的数据存在缓存里面,有用户自行调用接口去读取数据。

要在TCP连接之前就设置为缓存模式

AT+CIPRXGET=1

数据的接收可以不一次性接收完成,可能分段接收。
查询接收结果:AT+CIPRXGET=2,69

AT+CIPRXGET=2,12   //接收头部12个字节

+CIPRXGET: 2,12,64 //接收到12个字节,剩余64个字节

OK

AT+CIPRXGET=2,64  //接收剩余的64个字节

+CIPRXGET: 2,64,0 //接收到64个字节,剩余0个字节

OK

4.断开TCP

断开TCP连接:AT+CIPCLOSE

AT+CIPCLOSE
CLOSE OK

AT+CIPSTATUS
OK

STATE: TCP CLOSED

5.其他

断开GPRS:AT+CIPSHUT

RIL_SetQIDeact(ChannelID, pWrlChannelCtl->gb_hCallRIL, NULL);

激活GPRS:AT+CIICR

RIL_SetQIAct(ChannelID, pWrlChannelCtl->gb_hCallRIL, NULL);
Logo

更多推荐