乐鑫技术交流
直播中

张龙祥

9年用户 1314经验值
擅长:连接器
私信 关注
[问答]

在UDP模式下将ESP8266-01与AT接口一起使用遇到的疑问求解

我在 UDP 模式下将 ESP8266-01 与 AT 接口一起使用。
(1)
连接到我的局域网后,我跳入直通模式并使用 ESP
作为 UART-Bridge。目前为止,一切都好。
有时我想从我的应用程序中检查,如果连接到
接入点已存在。为此,我没有找到任何其他方法,除了
- 停止直通 ( )
- 索取 CIPStatus
- 解析状态的答案
- (如果可以:)再次启动直通。

这肯定不是最干净的解决方案。但它是唯一的吗?有人有没有
是否有更好的解决方案?

(2)
通常,我通过将短电报发送到 uart 来发送它们。停止时,
ESP 创建一个 WLAN UDP 报文并将其发送到我的服务器。
当我发送大量字节时,我意识到在直通中,ESP
在大约 65 毫秒后从自身发送 UDP-Telegram。 (我的程序没有停止发送)
正如我所看到的,在 19200 波特率处,在大约 130 字节之后,有一个 100 字节的电报由 发送
ESP 本身,而应用程序不会停止发送。

因为我的本地 Telegram 比这更长,而服务器期望更长(且完整)的 Telegram,
我在服务器应用程序中遇到错误。为此,我不得不超出我的协议来重建
整个电报由零件组成......
波特率越慢,本身发送的字节就越少,所以我估计这是一个时间阈值......?
我在文档中找不到有关此行为的任何信息。我错过了吗?

回帖(1)

ronga245

2024-7-16 16:56:30
在这种情况下,我们可以采取以下步骤来解决问题:

1. 首先,确保ESP8266-01模块已经正确连接到您的设备,并配置为使用AT接口。

2. 对于问题(1),检查是否连接到接入点,我们可以使用以下方法,而无需停止直通模式:

   a. 发送AT命令:`AT+CWJAP_CUR?` 这将返回当前连接的Wi-Fi接入点的详细信息。
   b. 解析返回的信息,检查是否包含正确的接入点名称和密码。

3. 对于问题(2),发送UDP数据包,我们可以按照以下步骤操作:

   a. 首先,确保ESP8266-01已经连接到Wi-Fi网络。可以使用`AT+CWJAP`命令连接到指定的Wi-Fi接入点。
   b. 使用`AT+CIPSTART`命令创建一个UDP连接。例如:`AT+CIPSTART="UDP","your_server_ip",your_server_port`。这将创建一个指向服务器的UDP连接。
   c. 使用`AT+CIPSEND`命令发送数据。例如:`AT+CIPSEND=数据长度`,然后发送实际的数据。
   d. 发送数据后,使用`AT+CIPCLOSE`命令关闭UDP连接。

4. 如果您希望在发送数据时保持UART-Bridge模式,可以考虑使用多线程或异步操作。这样,您可以在不中断UART-Bridge模式的情况下发送UDP数据包。

5. 另外,您还可以考虑使用ESP8266的非阻塞I/O功能,这样您可以在发送数据时继续接收和处理其他任务。

6. 最后,确保您的应用程序能够正确处理ESP8266返回的AT命令响应。这将帮助您更好地了解模块的状态和操作结果。

通过以上步骤,您应该能够在UDP模式下更有效地使用ESP8266-01与AT接口。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分