QT 简单连接WIFI模块

3 篇文章 0 订阅

目录

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秒

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一个跨平台的C++应用程序开发框架,它提供了丰富的功能和工具来简化应用程序的开发过程。Qt中包含了许多模块,其中也包括了用于处理WiFi的模块。 在Qt中,处理WiFi的模块是Qt Network模块。该模块提供了一组类和函数,用于实现网络通信功能,包括WiFi连接和数据传输等。 下面是一个简单的示例代码,演示了如何使用Qt Network模块来连接WiFi: ```cpp #include <QCoreApplication> #include <QNetworkConfigurationManager> #include <QNetworkSession> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 创建网络配置管理器 QNetworkConfigurationManager manager; // 获取可用的网络配置 QNetworkConfiguration config = manager.defaultConfiguration(); // 创建网络会话 QNetworkSession session(config); // 开启网络会话 session.open(); // 等待会话建立完成 session.waitForOpened(); // 检查网络连接状态 if (session.state() == QNetworkSession::Connected) { qDebug() << "WiFi连接"; } else { qDebug() << "WiFi连接失败"; } return a.exec(); } ``` 上述代码中,首先创建了一个QNetworkConfigurationManager对象,用于管理网络配置。然后通过调用`defaultConfiguration()`函数获取默认的网络配置。接下来,创建了一个QNetworkSession对象,并将获取到的网络配置传递给它。然后,调用`open()`函数开启网络会话,并使用`waitForOpened()`函数等待会话建立完成。最后,通过检查会话的状态,可以判断WiFi连接是否成功。 请注意,上述代码只是一个简单的示例,实际使用时可能需要更多的代码来处理WiFi连接的细节和错误情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值