本文來源電子發燒友社區,作者: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
+關注
關注
14文章
2147瀏覽量
124612 -
HarmonyOS
+關注
關注
79文章
1979瀏覽量
30274 -
HiSpark
+關注
關注
1文章
156瀏覽量
6938
發布評論請先 登錄
相關推薦
Wi-Fi 8要來了!未來Wi-Fi技術演進方向揭秘
產品銷售中,雖然Wi-Fi 7產品的銷量份額快速從年初的個位數百分比增長至14%,但Wi-Fi 6產品的銷量份額依然穩定在60%左右。如果從存量設備來看,那么Wi-Fi 7路由器的占比將遠遠小于這個數。 ? 智能手機等終端設備已
華為海思正式進入Wi-Fi FEM賽道?
大家都知道了,2018年11 月離開銳迪科(RDA),前往福建晉江創立三伍微,專注于Wi-Fi射頻前端芯片,從路由器Wi-Fi FEM,到手機Wi-Fi FEM,再到IoT FEM全覆
發表于 12-11 17:42
從Wi-Fi 4到Wi-Fi 7:網速飆升40倍的無線革命
1 Wi-Fi技術的快速發展 每一代新的Wi-Fi協議發布,都會帶來更高的無線速率。 ? 從Wi-Fi 4到Wi-Fi 7:無線網絡技術顯著提升,實現了網速的巨大飛躍。 ? ?
Wi-Fi 7與Wi-Fi 6E有什么區別
也許很多人還在考慮是否要將使用的Wi-Fi設備升級到Wi-Fi 6或Wi-Fi 6E,而這些標準的繼任者卻已經開始“登堂入室”了。Wi-Fi 7是新一代
AT 0.60.0.0看不到我的Wi-Fi網絡,為什么?
我對 AT 0.60.0.0 有一點問題。當我通過 AT CWLAP 顯示所有網絡時,我看不到我的路由器 AP 網絡,但我可以連接到它。當我在智能手機中打開 Wi-Fi 熱點時,我可以看到我的熱點
發表于 07-18 08:31
如何記住ESP8266中的Wi-Fi憑據?
如果使用 AT 命令 AT CWSMARTSTART=1 并在執行電源重啟后,將記住 Wi-Fi 憑據。我從舊公司項目中看到了那個命令。實際的AT用戶手冊中沒有提到。
如果使用 AT 命
發表于 07-15 07:07
AIROC? Wi-Fi和藍牙組合連接掉線的原因?怎么解決?
我最近購買了一臺配備 AIROC? Wi-Fi 和藍牙組合模塊的筆記本電腦。 大多數時候,Wi-Fi 連接都能正常使用圖書館創世紀網站ePUB 轉換工具、在線書店和學術出版物,但我注意到藍牙連
發表于 05-24 07:48
驗證物聯網Wi-Fi HaLow用例的MM6108-EKH08開發套件來啦
驗證物聯網Wi-Fi HaLow用例的MM6108-EKH08開發套件來啦 MM6108-EKH08開發套件專為驗證物聯網Wi-Fi HaL
Wi-Fi的誕生與發展
短距離無線通信技術有Wi-Fi、ZigBee、藍牙以及Z-Wave,今天我們先揭開Wi-Fi的神秘面紗。Chrent短距離無線通信技術——Wi-Fi過去的20多年,Wi-Fi靠著僅有的
WI-FI基礎知識及飛易通SOC模塊
“WiFi”或“Wifi”,但是這些寫法并沒有被Wi-Fi聯盟認可。 一、通常說的WI-FI幾: 第一代:以IEEE 802.11為準,工作頻段為2.4GHz, 最高速率半雙工2Mbi
Wi-Fi HaLow和傳統Wi-Fi的區別
Wi-Fi HaLow和傳統Wi-Fi的區別? Wi-Fi是一種無線網絡技術,可以連接到互聯網或局域網,為用戶提供無線上網的便利。隨著科技的發展和互聯網的普及,
康普攜手Wi-Fi聯盟,RUCKUS Wi-Fi 7系列接入點成Wi-Fi
康普高級副總裁兼網絡、智能蜂窩和安全解決方案總裁Bart Giordano對此表示: “我們非常榮幸能與Wi-Fi Alliance形成長期合作伙伴關系,將我們的RUCKUS Wi-Fi 7 接入點平臺作為Wi-Fi CERT
PSoC6 Wi-Fi示例無法調試FreeRTOS任務級代碼怎么解決?
你好,
我在 Ubuntu 18.04.6 中運行 MTB 3.1 GUI LTS 并為原型開發套件 (CY8CPROTO-062-4343W) 構建 PSoC6 示例。
在調試最新的 Wi-Fi
發表于 01-22 07:50
BT Wi-Fi模式是否可以通過ModustoolBox對套件進行編程來實現?
想配置用于分析 CYW43439 的 CY8CPROTO-062S2-43439 原型開發套件。
瀏覽文檔我無法弄清楚如何在不同的 Wi-Fi 和藍牙模式(電源模式、連接模式等)下配置套件
發表于 01-22 06:19
評論