ESP32、GPRS A9测试

测试内容:

1、A9作为客户端,在服务器主动断开连接或异常断开的时候,使用网络连接状态查询接口,能否获得准确的网络连接状态。

结果:

TCP: A9开多连接时,成功连接TCP服务器后,发送查询语句AT+CIPSTATUS? 返回内容:

+CIPSTATUS:
0,CONNECT OK  
1,IP INITIAL  
2,IP INITIAL  
3,IP INITIAL  
4,IP INITIAL  
5,IP INITIAL  
6,IP INITIAL  
7,IP INITIAL  

服务器网络调试助手点击断开(或右键直接退出应用),返回内容:

+TCPCLOSED:0




OK

 发送查询语句AT+CIPSTATUS? 返回内容:

+CIPSTATUS:
0,IP INITIAL  
1,IP INITIAL  
2,IP INITIAL  
3,IP INITIAL  
4,IP INITIAL  
5,IP INITIAL  
6,IP INITIAL  
7,IP INITIAL  

网络调试助手版本:网络调试助手(CM精装版V3.7)

UDP:


TCP/UDP socket调试工具V2.3

开启UDP server后,然后UDP client 根据IP+port 连接udp,此时UDP server不能向client发送数据,只有client向server发送一条数据后,server之后才能向client发送数据。而果断时间后server又不能向client发送数据(client 没收到数据)

UDP协议,一样会在物理线路上创建一条“虚拟信道”,否则UDP协议无法传输数据!但是,当UDP协议传完数据后,这条“虚拟信道”就被立即注销了!因此,称UDP是不面向连接的协议! 

HTTP:连接方式IP+PORT  或 网址+port

长连接: http服务器与client 建立连接后,keep-alive  时间到了,服务器主动断开,A9返回内容:

+CME ERROR:52

发送查询语句AT+CIPSTATUS? 返回内容:(多链接)

+CIPSTATUS:
0,IP CLOSE  
1,IP INITIAL  
2,IP INITIAL  
3,IP INITIAL  
4,IP INITIAL  
5,IP INITIAL  
6,IP INITIAL  
7,IP INITIAL 

如果服务器应用停止服务,发送查询语句AT+CIPSTATUS? 返回内容:(多链接)  这种情况下网络查询返回状态是错误的

+CIPSTATUS:
0,CONNECT OK  
1,IP INITIAL  
2,IP INITIAL  


3,IP INITIAL  
4,IP INITIAL  
5,IP INITIAL  
6,IP INITIAL  
7,IP INITIAL  

OK

这个时候如果A9发送连接HTTP server 命令,返回:

+CME ERROR:50

因为A9认为已经连接成功了,再发送连接指令则认为连接无效。

原因可能:服务器关闭服务时,没有通知client, 短连接关闭服务时有通知client;

如果服务器应用直接退出EXIT,发送查询语句AT+CIPSTATUS? 返回内容:(多链接) 正确

+CIPSTATUS:
0,IP CLOSE  
1
,IP INITIAL  
2,IP INITIAL  
3,IP INITIAL  
4,IP INITIAL  
5,IP INITIAL  
6,IP INITIAL  
7,IP INITIAL  

OK

AT+CIPSEND指令:

ESP32S和A9是不一样的,下面是A9的:

"AT+CIPSEND=10"  指令发送成功后返回的内容不是"OK",是" >"  4个十六进制数:0D 0A 3E 20

A9发送 "AT+CIPSEND=100"  随后STM32 通过串口发送不足100个字节的数据,并停止发送, 则目标收到的数据内容为:

STM32数据 + 0D 0A 00 00 00 00 00  

00的个数补足到100 为止;

例子:

AT+CIPSEND=10
//发送内容:6个字节 不足10个字节
41 54 2B 43 49 50 
//收到内容:
41 54 2B 43 49 50 0D 0A 00 00 
原文地址:https://www.cnblogs.com/fyp7077/p/8258203.html