同时接收 TCP 和 UDP (AVR, ESP8266)

问题描述

我正在试验连接到 ATMEGA88 的 ESP8266,并通过 AT 命令对其进行配置。我已经将它设置为通过 TCP 连接连接到我的 wifi,并且它接收数据正常。现在我希望它也监听 UDP 广播。但我无法让它工作。

这样做的想法(目的)是通过 TCP 接收数据,并通过 UDP 广播进行单独的“时钟同步”。我有一个服务器和多个客户端 (AVR+ESP) 连接。这个时钟同步是一个简单的实验,我希望 AVR 定期(每 0.5 秒或其他时间)重置它们的计时器。我这里不需要高精度。

TCP 的设置是这样的:

description         command                              expected response
==========================================================================
Begin               ATE0 / AT                            OK

WIFIMode            AT+CWMODE=3                          OK 
ConnectionMode      AT+CIPMUX=0                          OK 
ApplicationMode     AT+CIPMODE=0                         OK

connected ?         AT+CIPSTATUS                         STATUS:2 (ESP8266_CONNECTED_TO_AP)

Start               AT+CIPMUX?                           CIPMUX:0
                    AT+CIPSTART="TCP","x.x.x.x",10000    CONNECT
               
                                             STATUS:3 (ESP8266_CREATED_TRANSMISSION)

其中“x.x.x.x”是我的服务器(即同一网络上的 Android 应用)在端口 10000 的 IP。

因此,它将 WIFI mode 设置为“站和接入点”(3); connection mode 到“单”(1); application mode 到“正常”(0);然后建立 TCP 连接(在 IP x.x.x.x:10000 上)。正如我所说,这有效 :) 但是当我尝试关注 this guide to set up UDP "as well", 时,我最终收到错误“CIPMUX 和 CIPSERVER 必须为 0”

基本上,我试图修改(使用 TCP + UDP)是将 connection mode 设置为“multiple”(即 AT+CIPMUX=1),即

AT+CWMODE=3\r\n
AT+CIPMUX=1\r\n
AT+CIPMODE=0\r\n
AT+CIPSTART=0,"TCP",10000\r\n
AT+CIPSTART=0,"UDP","0.0.0.0",4445\r\n

据我所知,第二行将开始侦听端口 4445 上的 UDP 广播——来自任何 IP 地址。有没有人看到这里出了什么问题? CIPMUX 必须设置为 1(多个),对,才能同时使用 TCP UDP?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)