开发板通过Qt程序连接wifi(一)

最近因为项目需要,我的文件系统是移植好wifi驱动的,所以前面的部分就不描述了,在界面添加wifi的连接,所以记录一下自己在探索中的经验和误区

一、无线路由器常见加密方式有WPA-PSK、WPA2-PSK,wpa加密需要用wpa_supplicant工具连接,连接又可以用wpa_cli和wpa_supplicant.conf两种方式,这里选择wpa_supplicant.conf的方式。 

二、wpa_supplicant.conf的编写(该脚本适用于WPA-PSK/TKIP, WPA-PSK/AES WPA2-PSK/TKIP WPA2-PSK/AES 加密认证方式): 
ctrl_interface=DIR=/var/run/wpa_supplicant 
ctrl_interface_group=wheel 
ap_scan=1 
update_config=1
//开始无线接入点的具体配置
network={ 
//接入点名称
ssid="aaa" 
//接入点密码
psk="12345678" 
//如果你的无线接入点是隐藏的,那么这个就是必须的
scan_ssid=1
//支持的协议列表,不设置就默认
proto=WPA2 WPA 
//认证密钥管理协议,不设置就默认支持WPA-EAP WPA-PSK
key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE 
//加密方式CCMP就是AES,不设置的话是CCMP TKIP,但是有的路由器会无法识别,最好设置
pairwise=CCMP TKIP 
group=CCMP TKIP WEP104 WEP40 
eap=PEAP TTLS TLS 
priority=2 

将以上内容保存为/etc/wpa_supplicant.conf (路径不唯一)

三、
ifconfig –a        //如果出现wlan0,则说明初始化成功;  
ifconfig eth0 down    //先关闭eth0,不然wlan0可能会有小问题
ifconfig wlan0 up     //启用wlan0 
wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -d //(-i 指定网络节点 –B 后台运行 –c指定配置文件路径) 
iwconfig wlan0         //出现:ESSID:”aaa” 说明成功连接
udhcpc –i wlan0  //自动获取ip ,和添加dns,不然可能会连不上网或者ping不通,但是每个人都不一样   
route  //获取路由 

四、完成上面的操作,你会发现你的wifi已经连接成功了

五、但是,你会有想切换热点的时候,你会发现添加失败,它会提示你

ctrl_iface bind(PF_UNIX) failed: Address already in use
ctrl_iface exists and seems to be in use - cannot override it
Delete '/var/run/wpa_supplicant/wlan0' manually if it is not used anymore
Failed to initialize control interface 'DIR=/var/run/wpa_supplicant'.
You may have another wpa_supplicant process already running or the file was
left by an unclean termination of wpa_supplicant in which case you will need
to manually remove this file before starting wpa_supplicant again.
Failed to add interface wlan0

你千万不要听到的手动删除'/var/run/wpa_supplicant/wlan0',删除之后你将会一直提示缺少/dev/xxx。

其实你仔细看看,它只是提示你,您可能已经运行了另一个wpa_supplicant进程,或者文件已经运行,这只是你上一个进程没有完全关闭,因为在切换wifi中,你上一个还占用着,这个时候你ps一下,你会看到

 932 root     wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -d

正是你之前运行的,但是没有关闭,此时你可以运行killall命令,不要运行kill,(可以看我之前的博客)因为每次pid号肯定不一样,我们运行

killall  wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -d就可以了

然后你再运行wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -d,你会发现你已经连接上了新wifi

六、在这里只能提供大概的思路,qt界面的就是将这些步骤依次执行而已,如果有需要可以去下载

https://download.csdn.net/download/qq_41399894/10950658

此外,还有一些常用的wlan0命令

iwconfig wlan0        查看是否连接wifi,已经信息

udhcpc –i wlan0     自动获取ip和添加dns

route     获取路由表

iwlist wlan0 scan 扫描wlan0

wpa_cli status  查看连接状态

#杀死以前配置进程
killall wpa_supplicant

#杀死以前的dhcp进程
killall udhcpc

//添加默认网关

route add default gw 192.168.1.1

//删除默认网关

route del default

一般有了这些就足够了,如果有别的需求可以自行查找

你可能感兴趣的:(Qt,linux)