• Lv1
    粉丝0

积分0 / 贡献0

提问1答案被采纳0文章0

作者动态

    esp32 移植openharmony wifi模式只能连接没密码的热点,带密码的热点连接不上

    zlx0606 显示全部楼层 发表于 2026-1-21 19:12:54

    【问题描述】

    1. 介绍问题现象和发生的背景 (1)参考拓维信息的niobeu4开发板,在esp32上移植了openharmony5.0.2,编译烧录测试简单程序,系统正常运行,串口正常输出。 (2)测试wifi功能,按照openharmony wifi sta功能api开发wifi程序,结果发现只能连接上没有密码的热点,无法连接有密码的热点。 (3)使用esp-idf原生的api开发wifi(系统环境是openharmony,只更换api),结果也是只能连接没有密码的热点,无法连接带密码的热点。

    2. 相关的代码(请勿使用截图)

      int WifiConnect(void)
      {
          WifiScanInfo *info = NULL;
          unsigned int size = WIFI_SCAN_HOTSPOT_LIMIT;
          static struct netif *g_lwip_netif = NULL;
          WifiDeviceConfig select_ap_config = {0};
          int result;
          osDelay(OD_DELAY_200);
          printf("<--System Init-->\r\n");
          WiFiInit();
          printf(" Wifi Init succeed! \r\n");
          if (EnableWifi() != WIFI_SUCCESS) {
              printf("EnableWifi failed, wifi_error = %d\n", wifi_error);
              return -1;
          }
          printf(" EnableWifi succeed! \r\n");
          if (IsWifiActive() == 0) {
              printf("Wifi station is not actived.\n");
              return -1;
          }
          printf(" Wifi station is actived! \r\n");
          info = malloc(sizeof(WifiScanInfo) * WIFI_SCAN_HOTSPOT_LIMIT);
          if (info == NULL) {
              printf("faild to create wifiscanInfo.\n");
              return -1;
          }
          printf(" Wifi Scan start! \r\n");
          do {
              ssid_count = 0;
              g_staScanSuccess = 0;
              Scan();
              WaitScanResult();
              wifi_error = GetScanInfoList(info, &size);
          } while (g_staScanSuccess != 1);
          printf(" Wifi Scan end! \r\n");
      
          //连接指定的WiFi热点
          strcpy(select_ap_config.ssid, SELECT_WIFI_SSID);
          strcpy(select_ap_config.preSharedKey, SELECT_WIFI_PASSWORD);
          printf("[%s][%s] \r\n", select_ap_config.ssid, select_ap_config.preSharedKey);
          select_ap_config.securityType = WIFI_SEC_TYPE_PSK;
      
          if (AddDeviceConfig(&select_ap_config, &result) == WIFI_SUCCESS)
          {
              int ret = ConnectTo(result);
              printf("\r\n ConnectTo: %d \r\n", ret);
              if ( ret == WIFI_SUCCESS && WaitConnectResult() == 1)
              {
                  printf("WiFi connect succeed!\r\n");
              }else
              {
                  printf("WiFi connect failed!\r\n");
              }
          }
      
          for(;;)
          {
              osDelay(100);
          }
      }
    3. 运行结果、错误截图

      连接有密码的热点(连接失败),串口输出如下内容:

      image.png

      连接没有密码的热点(连接成功),串口输出如下内容:

      image.png

    4. 我尝试过的解决方法和结果

      尝试使用esp-idf的api,结果还是一样。

    5. 我想要达到的结果

      看网上资料有人说是鸿蒙的安全管理导致。

    【运行环境】

    硬件:esp32 ROM版本: DevEvoStudio版本: SDK版本:openharmony v5.0.2

    您尚未登录,无法参与评论,登录后可以:
    参与开源共建问题交流
    认同或收藏高质量问答
    获取积分成为开源共建先驱

    Copyright   ©2025  OpenHarmony开发者论坛  京ICP备2020036654号-3 | 京公网安备11030102011662号 |技术支持 Discuz!

    返回顶部