• Hi3516如何连接Wifi(一)


    目录:
    一、编译
    二、测试
    三、下一篇文章预告

    Hi3516 AI Camera开发板是带有Wifi模块的,可以工作在AP和STA模式。我们通过系统自带的setting APP就可以实现连接Wifi热点的功能。但我在开发过程中发现,在setting中连接Wifi热点然后退出setting,Wifi就断开了!通过串口日志看到,在退出setting时输出有这样一行字:

    [plat_pm]wifi need always on,do not close!!

    那基本上这个setting里的wifi连接功能就没法用了,那还有没有办法持久连接wifi呢?

    答案是有的:方法1,使用自带的wpa_supplicant;方法2,在app中调用wifi接口。

    一、编译

    Wifi相关示例代码在//applications/sample/camera/communication目录下,有如下三个目录:

    hostapd提供AP模式示例
    wpa_cli提供监听事件和控制wpa的示例
    wpa_supplicant提供STA模式示例
    

    观察一下这三个目录,除了有.c源码文件外,还有几个.conf文件,是AP和STA模式的配置文件

    ..../communication/hostapd/config/hostapd.conf,AP模式的配置文件,我们关心的主要是ssid:

    interface=wlan0
    driver=hdf wifi
    ctrl_interface=udp
    ssid=testap
    hw_mode=g
    channel=1
    ignore_broadcast_ssid=0
    

    如果要给AP设置密码,需要增加几行配置:

    auth_algs=1
    wpa=2
    wpa_passphrase=12345678
    rsn_pairwise=CCMP
    

    ..../communication/wpa_supplicant/config/wpa_supplicant.conf,STA模式的配置文件:

    country=GB
    ctrl_interface=udp
    network={
        ssid="your ssid"
        psk="your pwd"
    }
    

    其中network节初始是空的,自己添加ssid和psk,即热点的ssid和密码。这些conf文件在编译烧录后会存放在/etc目录下

    默认情况下,这些是不参与编译的。我们需要修改//applications/sample/camera/communication/BUILD.gn文件,添加相关feature:

    lite_component("sample") {
        features = [
            "wpa_supplicant:wpa_sample",
            "hostapd:hostapd_sample",
            "wpa_cli:wpa_cli_sample"
        ]
    }
    

    然后编译代码

    python build.py ipcamera_hi3516dv300 -b debug

    二、测试

    烧录到Hi3516开发板,不再赘述。

    启动后用串口连接,查看bin目录下的文件:

    OHOS # ls /bin
    Directory /bin:
    -rwxrwxrwx 13488    u:0     g:0     wpa_supplicant
    -rwxrwxrwx 50484    u:0     g:0     bundle_daemon
    -rwxrwxrwx 13488    u:0     g:0     hostapd
    -rwxrwxrwx 13440    u:0     g:0     foundation
    -rwxrwxrwx 25924    u:0     g:0     wms_server
    -rwxrwxrwx 21724    u:0     g:0     appspawn
    -rwxrwxrwx 13540    u:0     g:0     query.bin
    -rwxrwxrwx 13540    u:0     g:0     abilityMain
    -rwxrwxrwx 13488    u:0     g:0     apphilogcat
    -rwxrwxrwx 13504    u:0     g:0     led_app
    -rwxrwxrwx 13540    u:0     g:0     media_server
    -rwxrwxrwx 25828    u:0     g:0     init
    -rwxrwxrwx 13792    u:0     g:0     hilogcat
    -rwxrwxrwx 13488    u:0     g:0     camera_app
    -rwxrwxrwx 25824    u:0     g:0     shell
    -rwxrwxrwx 13488    u:0     g:0     wpa_cli
    

    可以看到比之前多了几个文件:wpa_supplicant,hostapd,wpa_cli

    再查看etc目录,

    OHOS # ls /etc
    Directory /etc:
    -rwxrwxrwx 61       u:0     g:0     os-release
    -rwxrwxrwx 107      u:0     g:0     hostapd.conf
    -rwxrwxrwx 3473     u:0     g:0     init.cfg
    -rwxrwxrwx 82       u:0     g:0     wpa_supplicant.conf
    

    可以看到比之前多了几个文件,hostapd.conf,wpa_supplicant.conf

    这里简要介绍wpa_supplicant的使用方法,详细命令格式请参考命令自带的help

    这里以连接热点为例,命令格式:

    cd /bin
    ./wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
    
        -i参数指定网卡名称
        -c参数指定配置文件
    

    /etc/wpa_supplicant.conf文件中保存有我们要连接的热点的ssid和密码。

    用手机做热点进行测试,看到连接设备从0变为1,说明Wifi连接成功了。

    下一篇文章将介绍如何用代码调用的方式连接wifi。

    作者:老船夫
    想了解更多内容,请访问51CTO和华为合作共建的鸿蒙社区:https://harmonyos.51cto.com/

  • 相关阅读:
    Struts学习注册与登录
    AJAX练习
    多线程下WinForm开发应该注意哪些问题?
    .NET下跨线程访问Control。
    配置IIS使用ASP.NET 2.0
    让你的Firefox使用Google.CN进行搜索
    Live Messenger 邀请,再次放送
    也谈博客园的商业化
    【点滴】向Sql Express数据库文件中注册Asp.NET 2.0用户管理模块
    Re: EnterLib ObjectBuild vs Castle WindsorContainer, part 1
  • 原文地址:https://www.cnblogs.com/HarmonyOS/p/14537445.html
Copyright © 2020-2023  润新知