本文來源電子發燒友社區,作者:jf_53933321, 帖子地址:https://bbs.elecfans.com/jishu_2289291_1_1.html
1. 代碼連接wifi
1.1 相關API
(1)WifiErrorCode EnableWifi(void)打開Wi-Fi設備的STA 模式,可以理解為開啟設備的Wi-Fi功能,使其可以掃描,并且連接到某個接入點。
(2)WifiErrorCode DisableWifi(void)該函數禁用設備的STA模式。在調用該函數之后,設備不能進行掃描、聯網等操作。
(3)int IsWifiActive(void)該函數用于判斷Wi-Fi設備的STA模式是否已經打開。
(4)WifiErrorCode AddDeviceConfig(constWifiDeviceConfig*config,int*result)該函數用于增加設備的 Wi-Fi 配置。
(5)WifiErrorCode GetDeviceConfigs(WifiDeviceConfig*result,unsignedint*size)該函數用于獲取所有有效的Wi-Fi 配置,結果保存在result 中。size 指定可獲取的最大的配置數,為result 的長度。
(6)WifiErrorCode RemoveDevice(int networkId)該函數用于根據net id 刪除一個Wi-Fi 配置。
(7)WifiErrorCode Disconnect(void)該函數用于斷開Wi-Fi連接。
(8)WifiErrorCode GetLinkedInfo(WifiLinkedInfo*result)該函數用于獲取 Wi-Fi 設備客戶端當前連接的接入點的信息。
(9)WifiErrorCode RegisterWifiEvent(WifiEvent*event)該函數用于注冊Wi-Fi事件的回調函數,可用于開發者在自己開發的應用中注冊相應的回調函數,監聽Wi-Fi狀態的變化,根據不同的狀態,做相應的處理。
(10)WifiErrorCode UnRegisterWifiEvent(const WifiEvent*event)該函數用于注銷Wi-Fi事件。
(11)WifiErrorCode GetDeviceMacAddress(unsigned char*result)該函數用于獲取設置的 MAC 地址。
1.2 具體代碼
復制代碼
1.3 實物演示
用串口助手連上去,發現到connect那一步就返回錯誤了,我在代碼里加了嘗試連接輸出信息,依然還是連不上,需要進一步排查問題原因,如果有大佬能知道下就更好了。

2. AT命令連接wifi
AT命令也可以連接wifi,跟api調用順序是一樣的。
WPA2_PSK。
AT+PING這一步后面的是我的PC機器IP地址,可以測試能否能ping通。
復制代碼
3. 總結
這次實驗有個遺憾就是用代碼沒能成功連接我的wifi,需要進一步排查問題原因,如果有大佬能指點迷津不吝賜教就好了。
用代碼操作靈活性更好,因為可以用RegisterWifiEvent進行設置自定義事件。
1. 代碼連接wifi
1.1 相關API
(1)WifiErrorCode EnableWifi(void)打開Wi-Fi設備的STA 模式,可以理解為開啟設備的Wi-Fi功能,使其可以掃描,并且連接到某個接入點。
(2)WifiErrorCode DisableWifi(void)該函數禁用設備的STA模式。在調用該函數之后,設備不能進行掃描、聯網等操作。
(3)int IsWifiActive(void)該函數用于判斷Wi-Fi設備的STA模式是否已經打開。
(4)WifiErrorCode AddDeviceConfig(constWifiDeviceConfig*config,int*result)該函數用于增加設備的 Wi-Fi 配置。
(5)WifiErrorCode GetDeviceConfigs(WifiDeviceConfig*result,unsignedint*size)該函數用于獲取所有有效的Wi-Fi 配置,結果保存在result 中。size 指定可獲取的最大的配置數,為result 的長度。
(6)WifiErrorCode RemoveDevice(int networkId)該函數用于根據net id 刪除一個Wi-Fi 配置。
(7)WifiErrorCode Disconnect(void)該函數用于斷開Wi-Fi連接。
(8)WifiErrorCode GetLinkedInfo(WifiLinkedInfo*result)該函數用于獲取 Wi-Fi 設備客戶端當前連接的接入點的信息。
(9)WifiErrorCode RegisterWifiEvent(WifiEvent*event)該函數用于注冊Wi-Fi事件的回調函數,可用于開發者在自己開發的應用中注冊相應的回調函數,監聽Wi-Fi狀態的變化,根據不同的狀態,做相應的處理。
(10)WifiErrorCode UnRegisterWifiEvent(const WifiEvent*event)該函數用于注銷Wi-Fi事件。
(11)WifiErrorCode GetDeviceMacAddress(unsigned char*result)該函數用于獲取設置的 MAC 地址。
1.2 具體代碼
- int ConnectToHotspot(void)
- {
- WifiDeviceConfig config = {0};
- // 準備AP的配置參數
- strcpy_s(config.ssid, SSID_LEN, PARAM_HOTSPOT_SSID);
- strcpy_s(config.preSharedKey, PSK_LEN, PARAM_HOTSPOT_PSK);
- config.securityType = PARAM_HOTSPOT_TYPE;
- osDelay(10); /* 延時10ms */
- WifiErrorCode errCode;
- int netId = -1;
- errCode = RegisterWifiEvent(&g_defaultWifiEventListener);
- printf("RegisterWifiEvent: %drn", errCode);
- errCode = EnableWifi();
- printf("EnableWifi: %drn", errCode);
- errCode = AddDeviceConfig(&config, &netId);
- printf("AddDeviceConfig: %drn", errCode);
- g_connected = 0;
- errCode = ConnectTo(netId);
- printf("ConnectTo(%d): %drn", netId, errCode);
- while (!g_connected) { // wait until connect to AP
- osDelay(10); /* 持續10ms去連接AP */
- printf("continue connecting");
- }
- printf("g_connected: %drn", g_connected);
- g_iface = netifapi_netif_find("wlan0");
- if (g_iface) {
- char* hostname = "hispark";
- err_t ret = netifapi_set_hostname(g_iface, hostname, strlen(hostname));
- printf("netifapi_set_hostname: %drn", ret);
- ret = netifapi_dhcp_start(g_iface);
- printf("netifapi_dhcp_start: %drn", ret);
- osDelay(100); // wait DHCP server give me IP 100
- #if 1
- ret = netifapi_netif_common(g_iface, dhcp_clients_info_show, NULL);
- printf("netifapi_netif_common: %drn", ret);
- #else
- #endif
- }
- return netId;
- }
用串口助手連上去,發現到connect那一步就返回錯誤了,我在代碼里加了嘗試連接輸出信息,依然還是連不上,需要進一步排查問題原因,如果有大佬能知道下就更好了。

2. AT命令連接wifi
AT命令也可以連接wifi,跟api調用順序是一樣的。
WPA2_PSK。
AT+PING這一步后面的是我的PC機器IP地址,可以測試能否能ping通。
這次實驗有個遺憾就是用代碼沒能成功連接我的wifi,需要進一步排查問題原因,如果有大佬能指點迷津不吝賜教就好了。
用代碼操作靈活性更好,因為可以用RegisterWifiEvent進行設置自定義事件。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
wi-fi
+關注
關注
15文章
2424瀏覽量
129552 -
HarmonyOS
+關注
關注
80文章
2153瀏覽量
36051 -
HiSpark
+關注
關注
1文章
156瀏覽量
7757
發布評論請先 登錄
相關推薦
熱點推薦
技術資訊 I Wi-Fi 模塊設計
。Wi-Fi模塊可實現無縫連接和數據交換,對設備進行遠程控制和監測。Wi-Fi模塊設計旨在打造一套緊湊且高效的軟硬件解決方案,使設備能夠通過Wi-Fi網絡通信。這類模塊常用
Wi-Fi:無線連接的全球通用語
現代生活中不可或缺的無線連接方式。二、Wi-Fi的核心特點1. 高速率,寬帶寬支持從幾十Mbps到數Gbps的傳輸速率,滿足高清視頻、在線游戲等高帶寬應用需求。2. 廣泛兼容,生態成熟幾乎所有智能終端均內置
發表于 01-07 09:49
Nordic發布nRF7002 EBII 開發板, 支持Wi-Fi 6, 解鎖nRF54L新玩法
穩定的連接。板載 nRF7002 協同 IC 兼容 Wi-Fi 6 標準,同時向下兼容 802.11a/b/g/n/ac Wi-Fi 標準。它支持 STA 和 SoftAP 兩種工作模式以實現靈活的網絡
發表于 12-10 11:58
Wi-Fi模塊選型指南 | 低功耗藍牙/Wi-Fi 6模塊推薦 | 物聯網設備集成攻略
:選擇用模塊的理由: 是為了方便電路集成設計,特別是硬件兼容集成設計,這樣只要產品前期做好了綜合設計,后續做產品設計以及應用端的靈活選擇,提供了很大的便利,省得重復設計硬件,縮短開發周,加快將產品推向市場的時間; 二:Wi-Fi模塊選型注意點
淺談Wi-Fi 6E與Wi-Fi 7的關鍵器件——BAW濾波器新技術
作者: Qorvo 亞太區無線連接事業部高級行銷經理林健富 ? 2020年1月,Wi-Fi聯盟正式宣布開放6GHz頻段(5925MHz-7125MHz),并將其命名為Wi-Fi 6E。2020年4月
發表于 09-19 18:29
?2125次閱讀
LitePoint Wi-Fi測試軟件減輕客戶設計負擔
自Wi-Fi 7于一年多前獲得Wi-Fi聯盟認證以來,作為最新一代通信技術,Wi-Fi正逐步成為用戶實現無所不在無線連接的新選擇。隨著每一代Wi-F
有沒有什么修復方法可以確保 AP 模式下的 Wi-Fi 和 BLE 連接同時正常工作?
我正在使用 CYBSYSKIT DEV 01 套件。我嘗試在 AP 模式下打開 Wi-Fi 并宣傳 BLE。我可以宣傳 SoftAP 和 BLE。但是,我無法從中央設備連接到 BLE。它可以立即
發表于 07-17 06:13
BLE代碼示例中Wi-Fi連接重試失敗的原因?
您好,我正在使用 BLE 代碼示例進行 Wi-Fi 接入。我從 modus 工具箱下載了代碼示例。
代碼示例包含所有最新的庫。
當在提供 SSID 和密碼后從手機發送
發表于 07-08 07:42
Wi-Fi 8:開啟極高可靠性 (UHR) 連接的新紀元——1
英國作家狄更斯在《雙城記》的開頭寫道:“這是最好的時代,也是最壞的時代。”
這句話若套用在現今Wi-Fi 的市場現狀,何嘗不是驚人的相似?
怎么說呢?Wi-Fi 從被發明至今已經經過了20多年的迭代
發表于 06-13 11:09
連接到 WPA3_WPA2_PSK 或 WPA3_SAE Wi-Fi 網絡時系統掛起,為什么?
的 Wi-Fi 網絡時,我的系統掛起了。 它與所有其他安全類型連接良好。 我正在使用最新的 WHD 庫。 誰能解釋為什么會發生此問題以及我該如何解決它?
您可以參考 WiFi Onboarding 示例
發表于 06-05 07:23
基于 Wi-Fi 的定位服務
以下捕獲使用 location_wifi_get 函數請求 Wi-Fi 定位服務。該事件的總功耗為 125.85mC,日志顯示精確度為 30.0m。
Got location:
method
發表于 04-17 15:16
Wi-Fi 定位服務流程
變化。
Cellular: Location 示例中最初的 location_wifi_get() 函數可用于請求 Wi-Fi 定位服務。啟用附加日志配置有助于了解請求過程。
Add
發表于 04-17 15:09
nRF Cloud Wi-Fi 定位服務
、Predictive-GPS、Single-Cell、Multi-Cell 和 Wi-Fi 定位。通過利用 nRF Cloud 的優化定位算法,基于 Nordic SoC 和 模組的產品可在定位用例
發表于 04-17 15:07
Wi-Fi 定位服務
Wi-Fi 是一種著名的無線網絡技術,用于設備的局域網和互聯網接入。Wi-Fi 通過 Wi-Fi 網絡為家庭、辦公室和學校等環境提供便捷的無線互聯網接入服務。
Wi-Fi 定位是一種
發表于 04-17 15:01
【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】用代碼和AT命令連接Wifi
評論