ESP32、GPRS A9测试

it2022-05-09  16

测试内容:

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


最新回复(0)