Hi3861 WiFi操作,热点连接 精华

连志安
发布于 2020-10-12 15:22
浏览
6收藏

Hi3861 WiFi操作,热点连接

之前我们使用Hi3861的时候,是使用AT指令连接到WiFi热点的。例如:

  Hi3861 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",

    ]

}

 

 

编译烧录,查看串口数据:

  Hi3861 WiFi操作,热点连接-鸿蒙开发者社区

可以看到有打印扫描到的热点名称:

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 结构的定义如下:

  

Hi3861 WiFi操作,热点连接-鸿蒙开发者社区

这里需要注意的是,通常加密方式是:HI_WIFI_SECURITY_WPA2PSK

例如我家的热点的连接方式的代码实现如下:

  Hi3861 WiFi操作,热点连接-鸿蒙开发者社区

 

 

分类
标签
4
收藏 6
回复
举报
2条回复
按时间正序
/
按时间倒序
wx5fc445c6f0850
wx5fc445c6f0850

楼主,请问下执行到hi_wifi_sta_start() 3861会重启是什么原因呢

回复
2021-2-2 09:13:24
重操旧业51
重操旧业51

连老师,你好,求教一个疑问

我在git上clone 了 easy_wifi的demo
一个主要问题:wifi模组为什么ping不通外网?
描述我的测试结果:
用手机连上ap,串口返回的连接正常,然后用at+ping=www.baidu.com,ping不通,但ping局域网ip是正常。
代码我看了,没看出什么问题。
疑惑1:难道sta和ap这2个是不是不能共存?我看网上提到可共存,如果不能共存怎么切换使用?但我们平时用的手机,做热点同时,照样可以连接wifi上网。
疑惑2:我单独使用sta模式连上我的路由器后,怎么向云端数据交互测试一下?


请前辈们帮我解惑,不胜感激!

回复
2021-3-8 16:58:31
回复
    相关推荐