ESP8266在AT指令读模块状态的时候,正好服务器发送数据过来。

2019-12-08 14:39发布

ESP8266在AT指令读模块状态的时候,正好服务器发送数据过来。  会怎样? AT指令的回应消息和服务器发过来的消息混乱的从RX输出?还是有规则排序的输出?  如何在用AT+CIPSEND  发送数据的时候,不丢数据的接收服务端发送过来的数据?  也就是双向可靠防止数据的碰撞。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
wudicgi
1楼-- · 2019-12-09 01:35
另外数据量大的话,要想可靠还要启用 UART 的流控,最少要启用 ESP8266 一侧的 RTS
否则你可以跑个大数据量的测试看看,虽然 ESP8266 的 UART 的 RX FIFO 据说有 96 字节,但有时它貌似在忙于处理其他任务时 UART 接收可能会丢数据
结果就是你发过去的数据它没收全,一直在那等,再发其他指令会被当成数据处理
love_ourdev
2楼-- · 2019-12-09 06:16
直接用MDK最近发布的pack包吧,对于你提出的疑问都处理得很完善。
在此之前,我自己写过类似的AT框架处理这些过程;但现在有现成代码可用了,后来的开发者真的越来越方便了。

2019-12-03_095605.png (32.91 KB, 下载次数: 0)

下载附件

5 天前 上传

wudicgi
3楼-- · 2019-12-09 08:59
 精彩回答 2  元偷偷看……
love_ourdev
4楼-- · 2019-12-09 09:51
wudicgi 发表于 2019-12-3 10:55
这个驱动之前看 Eric2013 的文章有介绍,还看了眼 github 上的代码,貌似没找到被动模式和 smartconfig  ...

这是2019-12-02,昨天刚发布的,你应该是看漏了。
我看了里面的代码(PACKARMCMSIS-Driver2.5.0WiFiESP8266ESP8266.c),里面把被动应答处理的妥妥的。
wudicgi
5楼-- · 2019-12-09 14:08
love_ourdev 发表于 2019-12-3 15:01
这是2019-12-02,昨天刚发布的,你应该是看漏了。
我看了里面的代码(PACKARMCMSIS-Driver2.5.0WiFi ...

我说的被动模式是这个东东,通过 AT+CIPRECVMODE 指令设置的
被动是对于 ESP8266 来说的,它被动接收 MCU 的指令后才返回数据

esp8266_at_recvmode.png (100.31 KB, 下载次数: 0)

下载附件

5 天前 上传



我试过数据量大时,由于 MCU 的 RAM 有限不能把所有接收到的数据都存下来,
只能通过这个被动模式让 ESP8266 在它自己的 buffer 满时对连接进行阻塞,数据才能可靠传输和处理
wudicgi
6楼-- · 2019-12-09 16:59
love_ourdev 发表于 2019-12-3 15:01
这是2019-12-02,昨天刚发布的,你应该是看漏了。
我看了里面的代码(PACKARMCMSIS-Driver2.5.0WiFi ...

我把 Keil 这个 2.5.0 的包下载下来看了,没找到 RECVMODE

一周热门 更多>