一、項(xiàng)目需求
用QT開發(fā)一個(gè)串口小助手,要求能實(shí)現(xiàn)串口接收,發(fā)送等基本功能。
二、UI界面設(shè)計(jì)
三、源碼實(shí)現(xiàn)
3.1 mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
#include
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void onClickedButtun();
void readData();
void clearReceiveWindow();
void on_sendButtun_clicked();
void clearSendWindow();
private:
Ui::MainWindow *ui;
QSerialPort *m_serial = nullptr;
};
#endif // MAINWINDOW_H
3.2 mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//自動(dòng)識(shí)別并顯示當(dāng)前存在的串口號(hào)
const auto infos = QSerialPortInfo::availablePorts();
for(const QSerialPortInfo &info:infos)
ui->serialPortNamecomboBox->addItem(info.portName());
//添加波特率下拉菜單
const QString serialBaudrate[9]={"2400","4800","9600","14400","19200","38400","56000","57600","115200"};
for(int i = 0 ; i < 9 ; i++)
{
ui->serialBaudratecomboBox->addItem(serialBaudrate[i]);
}
connect(ui->serialOnClickpushButton,&QPushButton::clicked,this,&MainWindow::onClickedButtun);
connect(ui->serialCleanReceivepushButton,&QPushButton::clicked,this,&MainWindow::clearReceiveWindow);
connect(ui->serialSendpushButton,&QPushButton::clicked,this,&MainWindow::on_sendButtun_clicked);
connect(ui->serialCleanSendpushButton,&QPushButton::clicked,this,&MainWindow::clearSendWindow);
}
MainWindow::~MainWindow()
{
delete ui;
}
/*
*@brief:按鈕控制函數(shù),控制串口的開和關(guān)
*@param:None
*@retval:None
*/
void MainWindow::onClickedButtun()
{
if(ui->serialOnClickpushButton->text() == tr("打開串口"))
{
m_serial = new QSerialPort;
//設(shè)置串口名
m_serial->setPortName(ui->serialPortNamecomboBox->currentText());
//打開串口
m_serial->open(QIODevice::ReadWrite);
//設(shè)置波特率
m_serial->setBaudRate(ui->serialBaudratecomboBox->currentIndex());
//連接信號(hào)槽
connect(m_serial,&QSerialPort::readyRead,this,&MainWindow::readData);
ui->serialPortNamecomboBox->setEnabled(false);
ui->serialBaudratecomboBox->setEnabled(false);
ui->serialOpenradioButton->toggle();
ui->serialOnClickpushButton->setText(tr("關(guān)閉串口"));
}
else
{
//關(guān)閉串口
m_serial->clear();
m_serial->close();
m_serial->deleteLater();
//恢復(fù)設(shè)置使能
ui->serialPortNamecomboBox->setEnabled(true);
ui->serialBaudratecomboBox->setEnabled(true);
ui->serialOpenradioButton->toggle();
ui->serialOnClickpushButton->setText(tr("打開串口"));
}
}
/*
*@brief:讀取數(shù)據(jù)函數(shù)
*@param:None
*@retval:None
*/
void MainWindow::readData()
{
QByteArray data = m_serial->readAll();
if(!data.isLower())
{
QString str = ui->serialReceivetextEdit->toPlainText();
// str += tr(data); //此寫法不支持中文
str += QString::fromLocal8Bit(data); //此寫法支持中文
ui->serialReceivetextEdit->clear();
ui->serialReceivetextEdit->append(str);
}
}
/*
*@brief:清除接收窗口
*@param:None
*@retval:None
*/
void MainWindow::clearReceiveWindow()
{
ui->serialReceivetextEdit->clear();
}
/*
*@brief:發(fā)送函數(shù)
*@param:None
*@retval:None
*/
void MainWindow::on_sendButtun_clicked()
{
// m_serial->write(ui->serialSendtextEdit->toPlainText().toLatin1()); //此寫法不支持中文
m_serial->write(ui->serialSendtextEdit->toPlainText().toLocal8Bit()); //此寫法支持中文
}
/*
*@brief:清除發(fā)送窗口
*@param:None
*@retval:None
*/
void MainWindow::clearSendWindow()
{
ui->serialSendtextEdit->clear();
}
四、測(cè)試運(yùn)行
略
-
串口
+關(guān)注
關(guān)注
15文章
1588瀏覽量
79908 -
源碼
+關(guān)注
關(guān)注
8文章
671瀏覽量
30321 -
Qt
+關(guān)注
關(guān)注
2文章
314瀏覽量
39071 -
界面設(shè)計(jì)
+關(guān)注
關(guān)注
0文章
22瀏覽量
10666
發(fā)布評(píng)論請(qǐng)先 登錄
QT串口通信的簡(jiǎn)單使用

利用QT來制作一個(gè)最基本的串口助手
【米爾MYD-YT507開發(fā)板試用體驗(yàn)】ubuntu下QT串口助手開發(fā)調(diào)試
Qt串口通信專題教程
串口調(diào)試助手怎么用_串口調(diào)試助手使用方法

開源的Qt串口助手的使用方法

QT從零開始作單片機(jī)上位機(jī)-串口調(diào)試助手+波形顯示-設(shè)計(jì)QT串口助手界面,添加主窗口控件

基于QT的安卓手機(jī)藍(lán)牙APP開發(fā)

Qt小項(xiàng)目之串口助手控制LED

QT 串口示波器的串口調(diào)試助手功能
【飛凌OKA40i-C開發(fā)板試用體驗(yàn)】QT實(shí)現(xiàn)串口助手

【米爾MYD-YT507開發(fā)板試用體驗(yàn)】ubuntu下QT串口助手開發(fā)調(diào)試

Qt5實(shí)現(xiàn)上位機(jī)與串口通信

QT上位機(jī)開發(fā)之串口助手(下)

評(píng)論