QT 简单连接WIFI模块

目录

[1 部分代码](#1 部分代码)

[2 代码解析](#2 代码解析)


1 部分代码
bash 复制代码
bool WIFIRecvThread::linkAP()
{
    //QTcpSocket *tcpSocket;tcpSocket应在头文件中全局变量
    QString ssid = "ssid";
    QString password = "Password";

    QProcess process;

    QString cmd_password = QString("netsh wlan set profileparameter name=%1 keyMaterial=%2").arg(ssid).arg(password);
    QString cmd_connect = QString("netsh wlan connect name=%1 ssid=%2").arg(ssid).arg(ssid);
    QString cmd = "netsh wlan connect ssid=\"" + ssid + "\" name=\"" + ssid + "\" keyMaterial=\"" + password + "\"";
    bool blink = false;
    process.start(cmd_password);
    blink = process.waitForFinished();

    qDebug() << "\blink0:"<<blink;
    process.start(cmd_connect);
    blink = process.waitForFinished();
    qDebug() << "\blink1:"<<blink;
    QThread::msleep(1000);//
    tcpSocket->connectToHost("192.168.1.1", 80);

    if (tcpSocket->waitForConnected(2000)) {
        connect(tcpSocket, &QTcpSocket::readyRead, this,&WIFIRecvThread::run);
        qDebug() << "Connected!";
        bLink = true;
    } else {
        bLink = false;
        QMessageBox::warning(0,"warning","Socket operation timed out!");
        return false;
    }
    return true;
}
void WIFIRecvThread::run()
{
    QByteArray data = tcpSocket->readLine();
    RevDataALL.append(data);
    Calculating(data);

}
2 代码解析

(1)

bash 复制代码
    QString ssid = "ssid";
    QString password = "Password";

    QProcess process;

    QString cmd_password = QString("netsh wlan set profileparameter name=%1 keyMaterial=%2").arg(ssid).arg(password);
    QString cmd_connect = QString("netsh wlan connect name=%1 ssid=%2").arg(ssid).arg(ssid);
    QString cmd = "netsh wlan connect ssid=\"" + ssid + "\" name=\"" + ssid + "\" keyMaterial=\"" + password + "\"";
    bool blink = false;
    process.start(cmd_password);
    blink = process.waitForFinished();

    qDebug() << "\blink0:"<<blink;
    process.start(cmd_connect);
    blink = process.waitForFinished();
    qDebug() << "\blink1:"<<blink;

这一部分是使用命令连接对应的WIFI ,cmd_password 是设置的密码,cmd_connect应是连接相应的WIFI,此处是使用代码连接WIFI 若手动连接 可以将这部分注释掉

(2)

bash 复制代码
QThread::msleep(1000);

经过调试发现 若为代码连接WIFI 此处需要加上1秒的延时 若为手动连接WIFI 可注释掉

(3)

bash 复制代码
    tcpSocket->connectToHost(ip, port);

    if (tcpSocket->waitForConnected(2000)) {
        connect(tcpSocket, &QTcpSocket::readyRead, this,&WIFIRecvThread::run);
        qDebug() << "Connected!";
        bLink = true;
    } else {
        bLink = false;
        QMessageBox::warning(0,"warning","Socket operation timed out!");
        return false;
    }
    return true;

此处进行连接 等待超时时间2秒

相关推荐
Edingbrugh.南空41 分钟前
Aerospike与Redis深度对比:从架构到性能的全方位解析
java·开发语言·spring
CodeCraft Studio1 小时前
借助Aspose.HTML控件,在 Python 中将 HTML 转换为 Markdown
开发语言·python·html·markdown·aspose·html转markdown·asposel.html
QQ_4376643141 小时前
C++11 右值引用 Lambda 表达式
java·开发语言·c++
aramae1 小时前
大话数据结构之<队列>
c语言·开发语言·数据结构·算法
封奚泽优2 小时前
使用Python实现单词记忆软件
开发语言·python·random·qpushbutton·qtwidgets·qtcore·qtgui
liulilittle3 小时前
C++/CLI与标准C++的语法差异(一)
开发语言·c++·.net·cli·clr·托管·原生
daixin88483 小时前
什么是缓存雪崩?缓存击穿?缓存穿透?分别如何解决?什么是缓存预热?
java·开发语言·redis·缓存
程序员编程指南3 小时前
Qt 数据库连接池实现与管理
c语言·数据库·c++·qt·oracle
你我约定有三3 小时前
RabbitMQ--消息丢失问题及解决
java·开发语言·分布式·后端·rabbitmq·ruby
张北北.3 小时前
【深入底层】C++开发简历4+4技能描述6
java·开发语言·c++