乐鑫技术交流
直播中

文甘翀

8年用户 1037经验值
私信 关注
[问答]

在esp8266启动时,它会尝试连接到接入点,为什么?

在esp8266启动时,它会尝试连接到接入点。

uint8_t UDP_Start(char* ssid, char* pass, uint16_t loc_port)
{
    uint32_t timeout = 0;

    if (WiFi.status() != WL_CONNECTED)
    {
        rt_parameters.wifi_mode = WIFI_STA;
        
        WiFi.mode(WIFI_STA);
        WiFi.begin(ssid, pass);

        if (sys_parameters.debug)
            Serial.println("Waiting for connection");
            
        while (WiFi.status() != WL_CONNECTED)
        {
            delay(DELAY_TICK);
            
            if (sys_parameters.debug)
                Serial.print('.');
            
            timeout++;
            if (timeout >= sys_parameters.ap_con_timeout)
            {
              if (sys_parameters.debug)
                Serial.println();
               
                return UDP_WIFI_ERR;
            }
        }
        Serial.print("nConnection time (ms) ");
        Serial.println(DELAY_TICK * timeout);
    }
   
    rt_parameters.wifi_status = WiFi.status();
   
    IPAddress ip_addr = WiFi.localIP();

    memcpy(sys_parameters.loc_ip, ip_addr, 4);
   
    if (sys_parameters.debug)
    {
        Serial.print("Connected! IP address: ");
        Serial.println(ip_addr);
        Serial.printf("UDP server on port %dn", loc_port);
    }
   
    if (udp.begin(loc_port) == 0)
        return UDP_CONNECT_ERR;

    return UDP_OK;
}


有时需要合理的时间 - 6-10 秒。有时需要 30-60 秒。有时它会在超时状态超时
wl_connect_failed
wl_no_ssid_avail
当它wl_no_ssid_avail时,我执行 WiFi.scanNetworks() 并查看我的接入点。

我怎样才能改善这种情况?
              

回帖(1)

李微波

2024-7-19 17:34:27
在ESP8266启动时,它会尝试连接到接入点,原因如下:

1. 设备初始化:当ESP8266启动时,它需要进行一系列的初始化操作,包括硬件和软件的配置。连接到接入点是其中一个重要的步骤,因为接入点是设备与外部网络通信的桥梁。

2. 网络连接:ESP8266需要连接到一个无线网络(接入点)以实现与其他设备或服务器的通信。连接到接入点后,ESP8266可以发送和接收数据,实现各种网络功能。

3. 设备配置:在连接到接入点的过程中,ESP8266会根据提供的SSID(网络名称)和密码(网络密码)进行身份验证,以确保连接到正确的网络。

4. 网络服务:连接到接入点后,ESP8266可以利用网络提供的服务,如DNS解析、DHCP分配等,进一步实现网络通信和数据传输。

在提供的代码片段中,`UDP_Start`函数的主要作用是启动UDP通信并尝试连接到指定的接入点。以下是代码的逐步解释:

1. 定义一个名为`timeout`的变量,用于设置连接超时时间。

2. 检查ESP8266当前的WiFi状态,如果状态不是`WL_CONNECTED`(已连接),则执行以下操作:

   a. 设置WiFi模式为`WIFI_STA`(客户端模式),表示ESP8266将作为客户端连接到接入点。
   
   b. 调用`WiFi.mode(WIFI_STA)`,将ESP8266的WiFi模式设置为客户端模式。
   
   c. 调用`WiFi.begin(ssid, pass)`,使用提供的SSID和密码初始化WiFi连接。

3. 如果ESP8266成功连接到接入点,它将开始监听指定的本地端口(`loc_port`),并准备接收UDP数据包。

通过这个过程,ESP8266在启动时尝试连接到接入点,以实现网络通信和数据传输。
举报

更多回帖

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