Hi3861 WiFi操作,热点连接
之前我们使用Hi3861的时候,是使用AT指令连接到WiFi热点的。例如:
但是很多时候,我们需要实现开机后自动连接到某个热点,光靠AT指令不行。
Hi3861 为我们提供了WiFi操作的相关API,方便我们编写代码,实现热点连接。
1.代码实现
先直接上代码和操作演示。
跟我们最早的hello world代码一样,在app下新增业务wifi_demo,其中hello_world.c为业务代码,BUILD.gn为编译脚本,具体规划目录结构如下:
- └── 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文件内容如下:
- 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文件内容修改如下:
- import("//build/lite/config/component/lite_component.gni")
- lite_component("app") {
- features = [
- "wifi_demo:wifi_demo",
- ]
- }
编译烧录,查看串口数据:
可以看到有打印扫描到的热点名称:
SSID: 15919500
SSID: Netcore_FD55A7
同时最后打印:WiFi: Connected 成功连接上热点。
2.wifi api接口说明
Hi3861 提供了非常多的wifi相关API,主要文件是 hi_wifi_api.h
我们这里只列举最重要的几个API
(1)开启STA
int hi_wifi_sta_start(char *ifname, int *len);
(2)停止STA
int hi_wifi_sta_stop(void);
(1)扫描附件的热点
int hi_wifi_sta_scan(void);
(4)连接热点
int hi_wifi_sta_connect(hi_wifi_assoc_request *req);
其中hi_wifi_assoc_request *req 结构的定义如下:
这里需要注意的是,通常加密方式是:HI_WIFI_SECURITY_WPA2PSK
例如我家的热点的连接方式的代码实现如下:
https://harmonyos.51cto.com/#zz