一、項目需求
用QT開發一個串口小助手,要求能實現串口接收,發送等基本功能。
二、UI界面設計
三、源碼實現
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);
//自動識別并顯示當前存在的串口號
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:按鈕控制函數,控制串口的開和關
*@param:None
*@retval:None
*/
void MainWindow::onClickedButtun()
{
if(ui->serialOnClickpushButton->text() == tr("打開串口"))
{
m_serial = new QSerialPort;
//設置串口名
m_serial->setPortName(ui->serialPortNamecomboBox->currentText());
//打開串口
m_serial->open(QIODevice::ReadWrite);
//設置波特率
m_serial->setBaudRate(ui->serialBaudratecomboBox->currentIndex());
//連接信號槽
connect(m_serial,&QSerialPort::readyRead,this,&MainWindow::readData);
ui->serialPortNamecomboBox->setEnabled(false);
ui->serialBaudratecomboBox->setEnabled(false);
ui->serialOpenradioButton->toggle();
ui->serialOnClickpushButton->setText(tr("關閉串口"));
}
else
{
//關閉串口
m_serial->clear();
m_serial->close();
m_serial->deleteLater();
//恢復設置使能
ui->serialPortNamecomboBox->setEnabled(true);
ui->serialBaudratecomboBox->setEnabled(true);
ui->serialOpenradioButton->toggle();
ui->serialOnClickpushButton->setText(tr("打開串口"));
}
}
/*
*@brief:讀取數據函數
*@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:發送函數
*@param:None
*@retval:None
*/
void MainWindow::on_sendButtun_clicked()
{
// m_serial->write(ui->serialSendtextEdit->toPlainText().toLatin1()); //此寫法不支持中文
m_serial->write(ui->serialSendtextEdit->toPlainText().toLocal8Bit()); //此寫法支持中文
}
/*
*@brief:清除發送窗口
*@param:None
*@retval:None
*/
void MainWindow::clearSendWindow()
{
ui->serialSendtextEdit->clear();
}
四、測試運行
略
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
串口
+關注
關注
14文章
1551瀏覽量
76431 -
源碼
+關注
關注
8文章
639瀏覽量
29185 -
Qt
+關注
關注
1文章
302瀏覽量
37899 -
界面設計
+關注
關注
0文章
22瀏覽量
10480
發布評論請先 登錄
相關推薦
串口調試助手怎么用_串口調試助手使用方法
串口是嵌入式開發和單片機開發中不可缺少的外設設備,通用也要運用于整個平臺。所以如何利用串口調試助手是十分重要的,接下來為大家介紹下如何使用
發表于 11-28 16:22
?7.3w次閱讀
QT從零開始作單片機上位機-串口調試助手+波形顯示-設計QT串口助手界面,添加主窗口控件
第二章 QT從零開始作單片機上位機-串口調試助手+波形顯示目錄第二章 QT從零開始作單片機上位機-串口調試
發表于 01-12 19:10
?17次下載
基于QT的安卓手機藍牙APP開發
前段時間用QT寫了一個串口調試助手,感覺還可以。因為QT是跨平臺的,同樣一套代碼可以在windows上面跑,也可以在linux上面跑,也可以在...
發表于 01-25 18:43
?14次下載
Qt小項目之串口助手控制LED
最近剛學了一點Qt開發上位機,嘗試著做個小軟件練練手。查找了很多資料,做了一個簡單的串口助手,可以實現串口基本發送和接收功能,支...
發表于 01-26 18:21
?2次下載
QT 串口示波器的串口調試助手功能
串口調試助手功能:
支持傳統的串口調試助手的基本收發功能,同時可以刷新大量的數據而不卡頓
支持保存接收的數據
支持最大200條可編輯指令的設置,并用于多條發送
發表于 07-07 15:26
?2715次閱讀
【飛凌OKA40i-C開發板試用體驗】QT實現串口助手
本文來源電子發燒友社區,作者:劉建華, 帖子地址: https://bbs.elecfans.com/jishu_2308758_1_1.html 【目的】用QT實現一個串口助手。 因為我的項目
【米爾MYD-YT507開發板試用體驗】ubuntu下QT串口助手開發調試
,因為這些都是QT自己本身就帶的功能,如果有3D應該還可以跑下QT 3D效果,本開發板的全志芯片也是帶了GPU的,顯示3D難度應該會好很多。本次的話我們還是先體驗下QT
評論