QT 简单连接WIFI模块

目录

1 部分代码

2 代码解析


 

1 部分代码
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)

    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)

QThread::msleep(1000);

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

(3)

    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秒

相关推荐

  1. QT 简单连接WIFI模块

    2024-01-10 15:52:02       56 阅读
  2. windows平台Qt5连接wifi

    2024-01-10 15:52:02       34 阅读
  3. android WiFI连接,socket连接

    2024-01-10 15:52:02       36 阅读
  4. 鸿蒙 WiFi 连接 流程

    2024-01-10 15:52:02       93 阅读
  5. android wifi连接

    2024-01-10 15:52:02       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-10 15:52:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-10 15:52:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-10 15:52:02       82 阅读
  4. Python语言-面向对象

    2024-01-10 15:52:02       91 阅读

热门阅读

  1. 帕金森病的原因是什么?

    2024-01-10 15:52:02       61 阅读
  2. Linux进阶命令使用

    2024-01-10 15:52:02       58 阅读
  3. 计算机网络专栏目录

    2024-01-10 15:52:02       66 阅读
  4. C++ 字符串哈希 || 字符串前缀哈希法

    2024-01-10 15:52:02       47 阅读
  5. Android studio ListView应用设计

    2024-01-10 15:52:02       57 阅读
  6. Flutter GetX 之 状态管理

    2024-01-10 15:52:02       56 阅读
  7. 如何彻底卸除Microsoft Edge浏览器

    2024-01-10 15:52:02       66 阅读