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

2. AT命令連接wifi
AT命令也可以連接wifi,跟api調(diào)用順序是一樣的。
WPA2_PSK。
AT+PING這一步后面的是我的PC機(jī)器IP地址,可以測試能否能ping通。
復(fù)制代碼
3. 總結(jié)
這次實驗有個遺憾就是用代碼沒能成功連接我的wifi,需要進(jìn)一步排查問題原因,如果有大佬能指點迷津不吝賜教就好了。
用代碼操作靈活性更好,因為可以用RegisterWifiEvent進(jìn)行設(shè)置自定義事件。
1. 代碼連接wifi
1.1 相關(guān)API
(1)WifiErrorCode EnableWifi(void)打開Wi-Fi設(shè)備的STA 模式,可以理解為開啟設(shè)備的Wi-Fi功能,使其可以掃描,并且連接到某個接入點。
(2)WifiErrorCode DisableWifi(void)該函數(shù)禁用設(shè)備的STA模式。在調(diào)用該函數(shù)之后,設(shè)備不能進(jìn)行掃描、聯(lián)網(wǎng)等操作。
(3)int IsWifiActive(void)該函數(shù)用于判斷Wi-Fi設(shè)備的STA模式是否已經(jīng)打開。
(4)WifiErrorCode AddDeviceConfig(constWifiDeviceConfig*config,int*result)該函數(shù)用于增加設(shè)備的 Wi-Fi 配置。
(5)WifiErrorCode GetDeviceConfigs(WifiDeviceConfig*result,unsignedint*size)該函數(shù)用于獲取所有有效的Wi-Fi 配置,結(jié)果保存在result 中。size 指定可獲取的最大的配置數(shù),為result 的長度。
(6)WifiErrorCode RemoveDevice(int networkId)該函數(shù)用于根據(jù)net id 刪除一個Wi-Fi 配置。
(7)WifiErrorCode Disconnect(void)該函數(shù)用于斷開Wi-Fi連接。
(8)WifiErrorCode GetLinkedInfo(WifiLinkedInfo*result)該函數(shù)用于獲取 Wi-Fi 設(shè)備客戶端當(dāng)前連接的接入點的信息。
(9)WifiErrorCode RegisterWifiEvent(WifiEvent*event)該函數(shù)用于注冊Wi-Fi事件的回調(diào)函數(shù),可用于開發(fā)者在自己開發(fā)的應(yīng)用中注冊相應(yīng)的回調(diào)函數(shù),監(jiān)聽Wi-Fi狀態(tài)的變化,根據(jù)不同的狀態(tài),做相應(yīng)的處理。
(10)WifiErrorCode UnRegisterWifiEvent(const WifiEvent*event)該函數(shù)用于注銷Wi-Fi事件。
(11)WifiErrorCode GetDeviceMacAddress(unsigned char*result)該函數(shù)用于獲取設(shè)置的 MAC 地址。
1.2 具體代碼
- int ConnectToHotspot(void)
- {
- WifiDeviceConfig config = {0};
- // 準(zhǔn)備AP的配置參數(shù)
- 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); /* 持續(xù)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;
- }
用串口助手連上去,發(fā)現(xiàn)到connect那一步就返回錯誤了,我在代碼里加了嘗試連接輸出信息,依然還是連不上,需要進(jìn)一步排查問題原因,如果有大佬能知道下就更好了。

2. AT命令連接wifi
AT命令也可以連接wifi,跟api調(diào)用順序是一樣的。
WPA2_PSK。
AT+PING這一步后面的是我的PC機(jī)器IP地址,可以測試能否能ping通。
這次實驗有個遺憾就是用代碼沒能成功連接我的wifi,需要進(jìn)一步排查問題原因,如果有大佬能指點迷津不吝賜教就好了。
用代碼操作靈活性更好,因為可以用RegisterWifiEvent進(jìn)行設(shè)置自定義事件。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
wi-fi
+關(guān)注
關(guān)注
14文章
2223瀏覽量
126406 -
HarmonyOS
+關(guān)注
關(guān)注
79文章
2027瀏覽量
32079 -
HiSpark
+關(guān)注
關(guān)注
1文章
156瀏覽量
7296
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
Wi-Fi 8要來了!未來Wi-Fi技術(shù)演進(jìn)方向揭秘
產(chǎn)品銷售中,雖然Wi-Fi 7產(chǎn)品的銷量份額快速從年初的個位數(shù)百分比增長至14%,但Wi-Fi 6產(chǎn)品的銷量份額依然穩(wěn)定在60%左右。如果從存量設(shè)備來看,那么Wi-Fi 7路由器的占比將遠(yuǎn)遠(yuǎn)小于這個數(shù)。 ? 智能手機(jī)等終端設(shè)備已

基于 Wi-Fi 的定位服務(wù)
以下捕獲使用 location_wifi_get 函數(shù)請求 Wi-Fi 定位服務(wù)。該事件的總功耗為 125.85mC,日志顯示精確度為 30.0m。
Got location:
method
發(fā)表于 04-17 15:16
Wi-Fi 定位服務(wù)流程
變化。
Cellular: Location 示例中最初的 location_wifi_get() 函數(shù)可用于請求 Wi-Fi 定位服務(wù)。啟用附加日志配置有助于了解請求過程。
Add
發(fā)表于 04-17 15:09
nRF Cloud Wi-Fi 定位服務(wù)
、Predictive-GPS、Single-Cell、Multi-Cell 和 Wi-Fi 定位。通過利用 nRF Cloud 的優(yōu)化定位算法,基于 Nordic SoC 和 模組的產(chǎn)品可在定位用例
發(fā)表于 04-17 15:07
Wi-Fi 定位服務(wù)
Wi-Fi 是一種著名的無線網(wǎng)絡(luò)技術(shù),用于設(shè)備的局域網(wǎng)和互聯(lián)網(wǎng)接入。Wi-Fi 通過 Wi-Fi 網(wǎng)絡(luò)為家庭、辦公室和學(xué)校等環(huán)境提供便捷的無線互聯(lián)網(wǎng)接入服務(wù)。
Wi-Fi 定位是一種
發(fā)表于 04-17 15:01
華為海思正式進(jìn)入Wi-Fi FEM賽道?
大家都知道了,2018年11 月離開銳迪科(RDA),前往福建晉江創(chuàng)立三伍微,專注于Wi-Fi射頻前端芯片,從路由器Wi-Fi FEM,到手機(jī)Wi-Fi FEM,再到IoT FEM全覆
發(fā)表于 12-11 17:42
從Wi-Fi 4到Wi-Fi 7:網(wǎng)速飆升40倍的無線革命
1 Wi-Fi技術(shù)的快速發(fā)展 每一代新的Wi-Fi協(xié)議發(fā)布,都會帶來更高的無線速率。 ? 從Wi-Fi 4到Wi-Fi 7:無線網(wǎng)絡(luò)技術(shù)顯著提升,實現(xiàn)了網(wǎng)速的巨大飛躍。 ? ?

Wi-Fi 7與Wi-Fi 6E有什么區(qū)別
也許很多人還在考慮是否要將使用的Wi-Fi設(shè)備升級到Wi-Fi 6或Wi-Fi 6E,而這些標(biāo)準(zhǔn)的繼任者卻已經(jīng)開始“登堂入室”了。Wi-Fi 7是新一代
【AI技術(shù)支持】ESP32無線Wi-Fi常用調(diào)試API
。啟明云端/02常見問題ESP32進(jìn)行Wi-Fi連接時,如何判斷失敗原因?在ESP-IDF4.0以上的版本,可以在Wi-Fi斷連事件處理中加入以下代碼,從而通過錯

IR900 Wi-Fi聯(lián)網(wǎng)的配置過程
例如上圖,IR900 通過Wi-Fi接口連接公司辦公無線網(wǎng)絡(luò) inhand-office (SSID為無線網(wǎng)絡(luò)的名稱) 首先將Wi-Fi接口與WLAN接口解綁
登陸IR900后,進(jìn)入
發(fā)表于 07-25 06:09
AT 0.60.0.0看不到我的Wi-Fi網(wǎng)絡(luò),為什么?
我對 AT 0.60.0.0 有一點問題。當(dāng)我通過 AT CWLAP 顯示所有網(wǎng)絡(luò)時,我看不到我的路由器 AP 網(wǎng)絡(luò),但我可以連接到它。當(dāng)我在智能手機(jī)中打開 Wi-Fi 熱點時,我可以看到我的熱點
發(fā)表于 07-18 08:31
如何記住ESP8266中的Wi-Fi憑據(jù)?
如果使用 AT 命令 AT CWSMARTSTART=1 并在執(zhí)行電源重啟后,將記住 Wi-Fi 憑據(jù)。我從舊公司項目中看到了那個命令。實際的AT用戶手冊中沒有提到。
如果使用 AT 命
發(fā)表于 07-15 07:07
為什么ESP8266沒有檢測到Wi-Fi的SSID?
你好,我的ESP8266沒有檢測到我家Wi-Fi的SSID。我嘗試打開我的 iPhone 熱點,我可以正常查看和連接(我也成功連接到 MQTT)。相反,沒有辦法看到我家的Wi-Fi。
發(fā)表于 07-09 06:44
為什么啟用Wi-Fi后,選擇EXT0作為喚醒源功耗會增加1mA?
1、當(dāng)不啟用Wi-Fi,選擇EXT0為喚醒源,系統(tǒng)進(jìn)入deep_sleep,功耗10uA左右;
2、當(dāng)啟用Wi-Fi,選擇EXT0為喚醒源,系統(tǒng)關(guān)閉Wi-Fi后再進(jìn)入deep_sleep,功耗在
發(fā)表于 06-24 07:48
DA16200 超低功耗 Wi-Fi 模塊開發(fā)套件 Pro數(shù)據(jù)手冊
電子發(fā)燒友網(wǎng)站提供《DA16200 超低功耗 Wi-Fi 模塊開發(fā)套件 Pro數(shù)據(jù)手冊.rar》資料免費下載
發(fā)表于 05-30 17:53
?1次下載

評論