一、項(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();
}
四、測試運(yùn)行
略
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報(bào)投訴
-
串口
+關(guān)注
關(guān)注
14文章
1554瀏覽量
76516 -
源碼
+關(guān)注
關(guān)注
8文章
641瀏覽量
29213 -
Qt
+關(guān)注
關(guān)注
1文章
304瀏覽量
37920 -
界面設(shè)計(jì)
+關(guān)注
關(guān)注
0文章
22瀏覽量
10483
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
QT串口通信的簡單使用
QT串口通信是上位機(jī)和下位機(jī)通信常用的通信方式, 也是學(xué)習(xí)QT必須學(xué)會(huì)的基礎(chǔ)知識(shí), 這篇就簡單介紹一下QT串口通信的簡單使用.
利用QT來制作一個(gè)最基本的串口助手
QT制作串口助手為什么要寫串口助手在學(xué)習(xí)單片機(jī)的過程中,經(jīng)常需要使用串口來和電腦進(jìn)行通信,有時(shí)還
發(fā)表于 01-18 08:09
【米爾MYD-YT507開發(fā)板試用體驗(yàn)】ubuntu下QT串口助手開發(fā)調(diào)試
我們還是先體驗(yàn)下QT開發(fā)串口調(diào)試助手,這樣我們能用串口接一些傳感器了。首先使用QT5的
發(fā)表于 08-03 11:05
Qt串口通信專題教程
這是一個(gè)關(guān)于在Qt Creator下進(jìn)行串口通信軟件開發(fā)的專題教程,能夠幫助你快速的開發(fā)有關(guān)的串口應(yīng)用。
發(fā)表于 05-04 14:37
?24次下載
串口調(diào)試助手怎么用_串口調(diào)試助手使用方法
串口是嵌入式開發(fā)和單片機(jī)開發(fā)中不可缺少的外設(shè)設(shè)備,通用也要運(yùn)用于整個(gè)平臺(tái)。所以如何利用串口調(diào)試助手是十分重要的,接下來為大家介紹下如何使用
發(fā)表于 11-28 16:22
?7.3w次閱讀
開源的Qt串口助手的使用方法
串口調(diào)試助手是一款用于串口調(diào)試的工具,目前網(wǎng)上存在很多個(gè)版本,功能都差不多,但穩(wěn)定性有好有壞,如果只用于一般的串口調(diào)試,這些工具夠用了,如果想開發(fā)
QT從零開始作單片機(jī)上位機(jī)-串口調(diào)試助手+波形顯示-設(shè)計(jì)QT串口助手界面,添加主窗口控件
第二章 QT從零開始作單片機(jī)上位機(jī)-串口調(diào)試助手+波形顯示目錄第二章 QT從零開始作單片機(jī)上位機(jī)-串口調(diào)試
發(fā)表于 01-12 19:10
?17次下載
基于QT的安卓手機(jī)藍(lán)牙APP開發(fā)
前段時(shí)間用QT寫了一個(gè)串口調(diào)試助手,感覺還可以。因?yàn)?b class='flag-5'>QT是跨平臺(tái)的,同樣一套代碼可以在windows上面跑,也可以在linux上面跑,也可以在...
發(fā)表于 01-25 18:43
?14次下載
Qt小項(xiàng)目之串口助手控制LED
最近剛學(xué)了一點(diǎn)Qt開發(fā)上位機(jī),嘗試著做個(gè)小軟件練練手。查找了很多資料,做了一個(gè)簡單的串口助手,可以實(shí)現(xiàn)串口基本發(fā)送和接收功能,支...
發(fā)表于 01-26 18:21
?2次下載
QT 串口示波器的串口調(diào)試助手功能
串口調(diào)試助手功能:
支持傳統(tǒng)的串口調(diào)試助手的基本收發(fā)功能,同時(shí)可以刷新大量的數(shù)據(jù)而不卡頓
支持保存接收的數(shù)據(jù)
支持最大200條可編輯指令的設(shè)置,并用于多條發(fā)送
發(fā)表于 07-07 15:26
?2720次閱讀
【飛凌OKA40i-C開發(fā)板試用體驗(yàn)】QT實(shí)現(xiàn)串口助手
本文來源電子發(fā)燒友社區(qū),作者:劉建華, 帖子地址: https://bbs.elecfans.com/jishu_2308758_1_1.html 【目的】用QT實(shí)現(xiàn)一個(gè)串口助手。 因?yàn)槲业捻?xiàng)目
【米爾MYD-YT507開發(fā)板試用體驗(yàn)】ubuntu下QT串口助手開發(fā)調(diào)試
,因?yàn)檫@些都是QT自己本身就帶的功能,如果有3D應(yīng)該還可以跑下QT 3D效果,本開發(fā)板的全志芯片也是帶了GPU的,顯示3D難度應(yīng)該會(huì)好很多。本次的話我們還是先體驗(yàn)下QT
Qt5實(shí)現(xiàn)上位機(jī)與串口通信
Qt助手內(nèi)搜索:Qt Serial Port為串口的相關(guān)函數(shù)? 1.添加串口頭文件: # include //使用
發(fā)表于 05-10 10:46
?0次下載
QT上位機(jī)開發(fā)之串口助手(下)
接著嵌入式QT上位機(jī)開發(fā)之串口助手(上)來完善一下串口助手的功能,上一篇博客已經(jīng)實(shí)現(xiàn)了自動(dòng)獲取的
發(fā)表于 05-29 16:49
?2次下載
評(píng)論