其实wpa_supplicant工具不太好用,按顺序执行
1、wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.conf
2、wpa_cli -i wlan0 -p /var/run/wpa_supplicant scan
3、wpa_cli -i wlan0 -p /var/run/wpa_supplicant scan_results (搜索WiFi列表)
4、vi /data/cfg/wpa_supplicant.conf
输入:a
输入:WiFi名称、密码
退出保存:Esc —— Shift:—— wq —— 回车
配置文件最好是下面的格式否则可能不生效,如果你还有还有其他的配置项根据自己的wifi来配置
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
update_config=1
network={
ssid="WiFi名称"
psk="WiFi密码"
key_mgmt=WPA-PSK
}
5、reboot
6、wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.conf (连接)
7、ifconfig (查看wlan0网卡信息IP)
killall wpa_supplicant(结束程序)
头文件wifimanage.h
#ifndef FORMWIFIMANAGE_H
#define FORMWIFIMANAGE_H
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QTableWidgetItem>
class CDialogBox;
namespace Ui {
class FormWifiManage;
}
//bssid / frequency / signal level / flags / ssid
//94:d9:b3:a8:4d:c0 2412 -39 [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS] clefine
typedef struct wifi_info_s{
QString bssid;
int frequency;
int signal_level;
QString flags;
QString ssid;
}wifi_info_t;
class FormWifiManage : public QWidget
{
Q_OBJECT
public:
explicit FormWifiManage(QWidget *parent = nullptr);
~FormWifiManage();
private:
void setLabelText(const QString &);
QString getPassword() const;
void initTabWidget();
void showWifiInfo();
private slots:
void slotScanWifi();
void slotConnectWifi(QTableWidgetItem*);
void slotConnectToWifi();
void wifiPassword(const QString&);
void reconnectWifi();
void slotTimeout();
void disconnectWifi();
private:
Ui::FormWifiManage *ui;
QString m_name;
QString m_password;
CDialogBox *dialog;
QTimer *timer;
bool isscaning;
bool selectIndex;
QModelIndex curindex;
QLabel *label;
QString wpa_state;
QString ssid;
QLineEdit *password;
QList<wifi_info_t> wifi_list;
QTableWidgetItem* m_current_item;
};
#endif // FORMWIFIMANAGE_H
头文件wifimanage.cpp
#include "formwifimanage.h"
#include "ui_formwifimanage.h"
#include <QDebug>
#include <QDialog>
#include <QLineEdit>
#include "CDialogBox.h"
#include "Logger.h"
#include <QFile>
#include <unistd.h>
#include <QTimer>
#include "CMessageBox.h"
#include <QStandardItem>
#define CMD_RESULT_BUF_SIZE 10240
QString characterConversion(const QString& ss)
{
QString string1;
QString string2;
QString string3;
bool ok;
char ch[512] = { 0 };
QString result = "";
int icount = 0;
for (int i = 0; i < ss.length(); )
{
if ((i + 4) <= ss.length()) {
if (ss.at(i) == '\\' && ss.at(i + 1) == 'x') {
QString tmpstring = QString(ss.at(i + 2)) + ss.at(i + 3);
tmpstring = "0x" + tmpstring;

最低0.47元/天 解锁文章
149

被折叠的 条评论
为什么被折叠?



