AT+CIPRECVMODE=0 在主动模式下无法从服务器接收 TCP 数据

Moderator: ESP_XCGuang

Rainbow
Posts: 26
Joined: Fri May 21, 2021 3:21 am

AT+CIPRECVMODE=0 在主动模式下无法从服务器接收 TCP 数据

Postby Rainbow » Mon Aug 23, 2021 6:43 am

在“ARRIS”和其他一些路由器中,我们面临这个问题。
① 在设置 AT+CIPRECVMODE=0 (Active mode)中,我们无法从服务器接收 TCP 数据。
② 在同一个服务器上,如果我们设置 AT+CIPRECVMODE=1(Passive mode),我们能够从服务器接收 TCP 数据。

请解释为什么在一些路由器(如“Arris”)中使用 ESP32 中的 Active mode无法接收服务器的 TCP 数据呢?

ESP_Alson
Posts: 106
Joined: Mon Mar 22, 2021 3:37 am

Re: AT+CIPRECVMODE=0 在主动模式下无法从服务器接收 TCP 数据

Postby ESP_Alson » Mon Aug 23, 2021 9:54 am

您好,能提供下 AT 的版本号信息及对应执行的 AT 指令序列吗?AT+CIPRECVMODE 只是设置了接收数据的处理方式,不会影响 TCP 数据的传输,所以这个问题可能需要抓包进行进一步的定位问题

ESP_Alson
Posts: 106
Joined: Mon Mar 22, 2021 3:37 am

Re: AT+CIPRECVMODE=0 在主动模式下无法从服务器接收 TCP 数据

Postby ESP_Alson » Mon Aug 23, 2021 10:00 am

另外我想请问下您提出的无法接收服务器的 TCP 数据是完全接收不了吗?还是只接收了一部分?在 mode 为 active mode 的情况下 AT 有没有输出以 "+IPD" 开头的 TCP 数据呢?

Rainbow
Posts: 26
Joined: Fri May 21, 2021 3:21 am

Re: AT+CIPRECVMODE=0 在主动模式下无法从服务器接收 TCP 数据

Postby Rainbow » Tue Aug 24, 2021 7:13 am

1、使用的 AT 固件版本是 AT version:2.2.0.0-dev(s-bcd64d2 - ESP32 - Jun 23 2021 11:43:37)

2、AT 指令序列如下:
下面的指令没有使用"AT+CIPRECVMODE" 命令,默认模式是 “Active” 模式。

AT+CWMODE=0
AT+CWMODE=1
AT+CWAUTOCONN=1
AT+PING="8.8.8.8"
AT+CWDHCP=1,1
AT+CWJAP="username","password"
AT+PING="8.8.8.8"
AT+CIPSNTPCFG=1,0,"ntp.sjtu.edu.cn","us.pool.ntp.org"
AT+CIPSNTPTIME?
AT+CIPSTART="TCP","35.160.190.26",7760
AT+CIPSENDEX=155
AT+CIPCLOSE
AT+GSLP=300000

注:在 CIPCLOSE 之前,我们要等待 30 秒从服务器获取 TCP 数据,然后关闭连接。

3、在“主动模式”下,从服务器完全获取不到 TCP 的数据。在“ 被动模式” 下, 在其他路由器中以“+IPD”方式得到响应。

4、发送给服务器的数据包:

%AXY,A002,XXAA62abfe0328,xxxxxx,190821,092925,270.0,270.0,V,70,01-01-70 00:00:00,800000,0,14,AAAA,6266,AAAA,0,-1:-1:0:-1:72,99,-62,1,+05:30,5,41,4,A.9.43,1,4A#

5、期望设备从服务器获取的报文:

+IPD,41:%XXAA62abfe0328,OKOK,190821,103426+00:00#

ESP_Alson
Posts: 106
Joined: Mon Mar 22, 2021 3:37 am

Re: AT+CIPRECVMODE=0 在主动模式下无法从服务器接收 TCP 数据

Postby ESP_Alson » Tue Aug 24, 2021 11:49 am

您好,能给下发给服务器数据包的二进制么?应为我看数据包有 159Bytes,但通过 AT+CIPSENDEX=155, 数据长度不匹配

我这边复制您的数据包的二进制如下:
00000000: 25 41 58 59 2c 41 30 30 32 2c 58 58 41 41 36 32 %AXY,A002,XXAA62
00000010: 61 62 66 65 30 33 32 38 2c 78 78 78 78 78 78 2c abfe0328,xxxxxx,
00000020: 31 39 30 38 32 31 2c 30 39 32 39 32 35 2c 32 37 190821,092925,27
00000030: 30 2e 30 2c 32 37 30 2e 30 2c 56 2c 37 30 2c 30 0.0,270.0,V,70,0
00000040: 31 2d 30 31 2d 37 30 20 30 30 3a 30 30 3a 30 30 1-01-70 00:00:00
00000050: 2c 38 30 30 30 30 30 2c 30 2c 31 34 2c 41 41 41 ,800000,0,14,AAA
00000060: 41 2c 36 32 36 36 2c 41 41 41 41 2c 30 2c 2d 31 A,6266,AAAA,0,-1
00000070: 3a 2d 31 3a 30 3a 2d 31 3a 37 32 2c 39 39 2c 2d :-1:0:-1:72,99,-
00000080: 36 32 2c 31 2c 2b 30 35 3a 33 30 2c 35 2c 34 31 62,1,+05:30,5,41
00000090: 2c 34 2c 41 2e 39 2e 34 33 2c 31 2c 34 41 23

ESP_Alson
Posts: 106
Joined: Mon Mar 22, 2021 3:37 am

Re: AT+CIPRECVMODE=0 在主动模式下无法从服务器接收 TCP 数据

Postby ESP_Alson » Tue Aug 24, 2021 11:50 am

您好,能给下发给服务器数据包的二进制么?应为我看数据包有 159Bytes,但通过 AT+CIPSENDEX=155, 数据长度不匹配

我这边复制您的数据包的二进制如下:

00000000: 25 41 58 59 2c 41 30 30 32 2c 58 58 41 41 36 32
00000010: 61 62 66 65 30 33 32 38 2c 78 78 78 78 78 78 2c
00000020: 31 39 30 38 32 31 2c 30 39 32 39 32 35 2c 32 37
00000030: 30 2e 30 2c 32 37 30 2e 30 2c 56 2c 37 30 2c 30
00000040: 31 2d 30 31 2d 37 30 20 30 30 3a 30 30 3a 30 30
00000050: 2c 38 30 30 30 30 30 2c 30 2c 31 34 2c 41 41 41
00000060: 41 2c 36 32 36 36 2c 41 41 41 41 2c 30 2c 2d 31
00000070: 3a 2d 31 3a 30 3a 2d 31 3a 37 32 2c 39 39 2c 2d
00000080: 36 32 2c 31 2c 2b 30 35 3a 33 30 2c 35 2c 34 31
00000090: 2c 34 2c 41 2e 39 2e 34 33 2c 31 2c 34 41 23

Rainbow
Posts: 26
Joined: Fri May 21, 2021 3:21 am

Re: AT+CIPRECVMODE=0 在主动模式下无法从服务器接收 TCP 数据

Postby Rainbow » Tue Aug 24, 2021 12:03 pm

Rainbow wrote:
Tue Aug 24, 2021 7:13 am
1、使用的 AT 固件版本是 AT version:2.2.0.0-dev(s-bcd64d2 - ESP32 - Jun 23 2021 11:43:37)

2、AT 指令序列如下:
下面的指令没有使用"AT+CIPRECVMODE" 命令,默认模式是 “Active” 模式。

AT+CWMODE=0
AT+CWMODE=1
AT+CWAUTOCONN=1
AT+PING="8.8.8.8"
AT+CWDHCP=1,1
AT+CWJAP="username","password"
AT+PING="8.8.8.8"
AT+CIPSNTPCFG=1,0,"ntp.sjtu.edu.cn","us.pool.ntp.org"
AT+CIPSNTPTIME?
AT+CIPSTART="TCP","35.160.190.26",7760
AT+CIPSENDEX=155
AT+CIPCLOSE
AT+GSLP=300000

注:在 CIPCLOSE 之前,我们要等待 30 秒从服务器获取 TCP 数据,然后关闭连接。

3、在“主动模式”下,从服务器完全获取不到 TCP 的数据。在“ 被动模式” 下, 在其他路由器中以“+IPD”方式得到响应。

4、发送给服务器的数据包:

%AXY,A002,XXAA62abfe0328,xxxxxx,190821,092925,270.0,270.0,V,70,01-01-70 00:00:00,800000,0,14,AAAA,6266,AAAA,0,-1:-1:0:-1:72,99,-62,1,+05:30,5,41,4,A.9.43,1,4A#

5、期望设备从服务器获取的报文:

+IPD,41:%XXAA62abfe0328,OKOK,190821,103426+00:00#

ESP_Alson
Posts: 106
Joined: Mon Mar 22, 2021 3:37 am

Re: AT+CIPRECVMODE=0 在主动模式下无法从服务器接收 TCP 数据

Postby ESP_Alson » Wed Aug 25, 2021 8:56 am

您好,介于您提供的 AT 版本是去年 8 月份的版本,推荐您可以下载 ESP32 release 的 v2.2.0.0 版本使用

这边我使用 SP32 release 的 v2.2.0.0 版本进行测试。模式为 active mode 的情况下发送您提供的 TCP 数据,服务器在成功接收到 159Bytes 的数据之后就主动发送 FIN 包断开 TCP 连接了。

Who is online

Users browsing this forum: No registered users and 37 guests