在頭文件中引入相關(guān)庫:
#include <QMainWindow>
#include <QTcpSocket>
#include <QSerialPort>
然后,在主窗口類中定義相關(guān)變量:
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_connectButton_clicked();
void on_sendButton_clicked();
void readData();
private:
Ui::MainWindow *ui;
QTcpSocket *tcpSocket;
QSerialPort *serialPort;
};
其中,tcpSocket
為 TCP 套接字,serialPort
為串口對象。
在構(gòu)造函數(shù)中初始化 tcpSocket
和 serialPort
:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
tcpSocket = new QTcpSocket(this);
serialPort = new QSerialPort(this);
}
在點(diǎn)擊“連接”按鈕時,我們需要連接 WiFi,并建立 TCP 連接。這里我們需要先輸入 WiFi 的名稱和密碼,然后使用 QProcess
執(zhí)行 netsh
命令來連接 WiFi。如果連接成功,我們再建立 TCP 連接。
void MainWindow::on_connectButton_clicked()
{
QString ssid = ui->ssidLineEdit->text();
QString password = ui->passwordLineEdit->text();
QProcess process;
QString cmd = "netsh wlan connect ssid=\"" + ssid + "\" name=\"" + ssid + "\" keyMaterial=\"" + password + "\"";
process.start(cmd);
process.waitForFinished();
tcpSocket->connectToHost("192.168.1.100", 8888);
connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(readData()));
}
這里假設(shè) WiFi 的 IP 地址為 192.168.1.100,端口為 8888。我們還需要在 readData
函數(shù)中處理接收到的數(shù)據(jù):
void MainWindow::readData()
{
QByteArray data = tcpSocket->readAll();
ui->textEdit->append(data);
}
當(dāng)我們點(diǎn)擊“發(fā)送”按鈕時,我們將需要發(fā)送的數(shù)據(jù)通過串口發(fā)送出去:
void MainWindow::on_sendButton_clicked()
{
QString data = ui->sendLineEdit->text();
serialPort->write(data.toUtf8());
}
需要注意的是,我們需要先打開串口并設(shè)置波特率、數(shù)據(jù)位、校驗位、停止位等參數(shù):
serialPort->setPortName("COM1");
serialPort->setBaudRate(QSerialPort::Baud9600);
serialPort->setDataBits(QSerialPort::Data8);
serialPort->setParity(QSerialPort::NoParity);
serialPort->setStopBits(QSerialPort::OneStop);
serialPort->open(QIODevice::ReadWrite);
最后,我們還需要在析構(gòu)函數(shù)中關(guān)閉 TCP 連接和串口:文章來源:http://www.zghlxwxcb.cn/news/detail-764003.html
MainWindow::~MainWindow()
{
tcpSocket->close();
serialPort->close();
delete ui;
}
這樣,我們就完成了 WiFi 傳輸并顯示數(shù)據(jù)的功能。文章來源地址http://www.zghlxwxcb.cn/news/detail-764003.html
到了這里,關(guān)于Qt 的網(wǎng)絡(luò)模塊和串口模塊來實現(xiàn) WiFi 傳輸和數(shù)據(jù)顯示的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!