Hi3516如何连接Wifi(一) 原创 精华

老船夫
发布于 2021-3-15 13:53
浏览
5收藏

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。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
已于2021-4-2 11:21:03修改
5
收藏 5
回复
举报
5条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

之前开发就对wifi这块有疑问,感谢分享。

已于2021-3-15 13:58:41修改
1
回复
2021-3-15 13:58:31
软通田可辉
软通田可辉

期待下一篇

回复
2021-3-15 14:30:03
longlong899
longlong899

好文,感谢分享!!

回复
2021-3-16 11:49:01
鸿蒙张荣超
鸿蒙张荣超

👍👍👍

回复
2021-4-1 23:39:41
zxwin10
zxwin10

标准版本是不支持的吗?

回复
2021-10-22 10:56:18
回复
    相关推荐