鸿蒙Hi3516如何连接WiFi(一)

系统
Hi3516 AI Camera开发板是带有Wifi模块的,可以工作在AP和STA模式。我们通过系统自带的setting APP就可以实现连接Wifi热点的功能。但我在开发过程中发现,在setting中连接Wifi热点然后退出setting,Wifi就断开了!

[[387736]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

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

  1. [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:

  1. interface=wlan0 
  2. driver=hdf wifi 
  3. ctrl_interface=udp 
  4. ssid=testap 
  5. hw_mode=g 
  6. channel=1 
  7. ignore_broadcast_ssid=0 

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

  1. auth_algs=1 
  2. wpa=2 
  3. wpa_passphrase=12345678 
  4. rsn_pairwise=CCMP 

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

  1. country=GB 
  2. ctrl_interface=udp 
  3. network={ 
  4.     ssid="your ssid" 
  5.     psk="your pwd" 

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

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

  1. lite_component("sample") { 
  2.     features = [ 
  3.         "wpa_supplicant:wpa_sample"
  4.         "hostapd:hostapd_sample"
  5.         "wpa_cli:wpa_cli_sample" 
  6.     ] 

然后编译代码:

  1. python build.py ipcamera_hi3516dv300 -b debug 

二、测试

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

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

  1. OHOS # ls /bin 
  2. Directory /bin: 
  3. -rwxrwxrwx 13488    u:0     g:0     wpa_supplicant 
  4. -rwxrwxrwx 50484    u:0     g:0     bundle_daemon 
  5. -rwxrwxrwx 13488    u:0     g:0     hostapd 
  6. -rwxrwxrwx 13440    u:0     g:0     foundation 
  7. -rwxrwxrwx 25924    u:0     g:0     wms_server 
  8. -rwxrwxrwx 21724    u:0     g:0     appspawn 
  9. -rwxrwxrwx 13540    u:0     g:0     query.bin 
  10. -rwxrwxrwx 13540    u:0     g:0     abilityMain 
  11. -rwxrwxrwx 13488    u:0     g:0     apphilogcat 
  12. -rwxrwxrwx 13504    u:0     g:0     led_app 
  13. -rwxrwxrwx 13540    u:0     g:0     media_server 
  14. -rwxrwxrwx 25828    u:0     g:0     init 
  15. -rwxrwxrwx 13792    u:0     g:0     hilogcat 
  16. -rwxrwxrwx 13488    u:0     g:0     camera_app 
  17. -rwxrwxrwx 25824    u:0     g:0     shell 
  18. -rwxrwxrwx 13488    u:0     g:0     wpa_cli 

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

再查看etc目录,

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

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

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

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

  1. cd /bin 
  2. ./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

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2021-03-29 15:36:46

鸿蒙HarmonyOS应用

2021-04-09 09:45:21

鸿蒙HarmonyOS应用

2021-07-09 14:20:23

鸿蒙HarmonyOS应用

2022-04-15 14:45:49

Hi3516系统类型烧录鸿蒙

2021-11-09 15:28:41

鸿蒙HarmonyOS应用

2021-05-25 14:47:43

鸿蒙HarmonyOS应用

2021-03-02 14:30:20

鸿蒙HarmonyOS应用

2021-06-25 09:28:46

鸿蒙HarmonyOS应用

2021-12-03 09:50:39

鸿蒙HarmonyOS应用

2021-08-06 15:09:22

鸿蒙HarmonyOS应用

2021-09-24 10:20:42

鸿蒙HarmonyOS应用

2021-07-19 15:34:05

鸿蒙HarmonyOS应用

2021-07-21 09:58:50

鸿蒙HarmonyOS应用

2022-02-16 16:01:02

Hi3516开发板鸿蒙

2021-10-09 10:12:39

鸿蒙HarmonyOS应用

2020-11-02 11:56:57

鸿蒙 WiFi操作

2021-02-02 15:52:17

鸿蒙HarmonyOS应用开发

2020-10-16 09:50:37

Hi3861WiFi热点

2021-07-07 09:45:20

鸿蒙HarmonyOS应用

2021-07-05 09:35:36

鸿蒙HarmonyOS应用
点赞
收藏

51CTO技术栈公众号