zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    mysql 函数 存储过程 事件(event) job 模板
    protobuf 无proto 解码 decode 语言 java python
    mitmproxy fiddler 抓包 填坑
    android adb 常用命令
    android机器人 模拟 踩坑过程
    RabbitMQ添加新用户并支持远程访问
    Windows下RabbitMQ安装及配置
    Java mybatis mysql 常用数据类型对应关系
    easyExcel 踩坑
    linux防火墙查看状态firewall、iptable
  • 原文地址:https://www.cnblogs.com/HarmonyOS/p/14537445.html
Copyright © 2011-2022 走看看