鴻蒙 WiFi操作,熱點(diǎn)連接
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
Hi3861 WiFi操作,熱點(diǎn)連接
之前我們使用Hi3861的時(shí)候,是使用AT指令連接到WiFi熱點(diǎn)的。例如:

但是很多時(shí)候,我們需要實(shí)現(xiàn)開機(jī)后自動(dòng)連接到某個(gè)熱點(diǎn),光靠AT指令不行。
Hi3861 為我們提供了WiFi操作的相關(guān)API,方便我們編寫代碼,實(shí)現(xiàn)熱點(diǎn)連接。
1.代碼實(shí)現(xiàn)
先直接上代碼和操作演示。
跟我們最早的hello world代碼一樣,在app下新增業(yè)務(wù)wifi_demo,其中hello_world.c為業(yè)務(wù)代碼,BUILD.gn為編譯腳本,具體規(guī)劃目錄結(jié)構(gòu)如下:
- └── applications
- └── sample
- └── wifi-iot
- └── app
- │── wifi_demo
- │ │── wifi_demo.c
- │ └── BUILD.gn
- └── BUILD.gn
Wifi_demo.c 代碼如下:
見附件doc\05 WiFi操作\sta_demo\sta_demo.c
Wifi_demo目錄下的BUILD.gn文件內(nèi)容如下:
- static_library("wifi_demo") {
- sources = [
- "wifi_demo.c"
- ]
- include_dirs = [
- "//utils/native/lite/include",
- "//kernel/liteos_m/components/cmsis/2.0",
- "//base/iot_hardware/interfaces/kits/wifiiot_lite",
- "//vendor/hisi/hi3861/hi3861/third_party/lwip_sack/include",
- "//foundation/communication/interfaces/kits/wifi_lite/wifiservice",
- ]
- }
app目錄下的BUILD.gn文件內(nèi)容修改如下:
- import("//build/lite/config/component/lite_component.gni")
- lite_component("app") {
- features = [
- "wifi_demo:wifi_demo",
- ]
- }
編譯燒錄,查看串口數(shù)據(jù):

可以看到有打印掃描到的熱點(diǎn)名稱:
SSID: 15919500
SSID: Netcore_FD55A7
同時(shí)最后打?。篧iFi: Connected 成功連接上熱點(diǎn)。
2.wifi api接口說明
Hi3861 提供了非常多的wifi相關(guān)API,主要文件是 hi_wifi_api.h
我們這里只列舉最重要的幾個(gè)API
(1)開啟STA
int hi_wifi_sta_start(char *ifname, int *len);
(2)停止STA
int hi_wifi_sta_stop(void);
(1)掃描附件的熱點(diǎn)
int hi_wifi_sta_scan(void);
(4)連接熱點(diǎn)
int hi_wifi_sta_connect(hi_wifi_assoc_request *req);
其中hi_wifi_assoc_request *req 結(jié)構(gòu)的定義如下:

這里需要注意的是,通常加密方式是:HI_WIFI_SECURITY_WPA2PSK
例如我家的熱點(diǎn)的連接方式的代碼實(shí)現(xiàn)如下:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com/#zz