一、项目需求
用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文章
1554浏览量
76499 -
源码
+关注
关注
8文章
640浏览量
29206 -
Qt
+关注
关注
1文章
302浏览量
37910 -
界面设计
+关注
关注
0文章
22浏览量
10483
发布评论请先 登录
相关推荐
串口调试助手怎么用_串口调试助手使用方法
串口是嵌入式开发和单片机开发中不可缺少的外设设备,通用也要运用于整个平台。所以如何利用串口调试助手是十分重要的,接下来为大家介绍下如何使用
发表于 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
•2720次阅读
【飞凌OKA40i-C开发板试用体验】QT实现串口助手
本文来源电子发烧友社区,作者:刘建华, 帖子地址: https://bbs.elecfans.com/jishu_2308758_1_1.html 【目的】用QT实现一个串口助手。 因为我的项目
【米尔MYD-YT507开发板试用体验】ubuntu下QT串口助手开发调试
,因为这些都是QT自己本身就带的功能,如果有3D应该还可以跑下QT 3D效果,本开发板的全志芯片也是带了GPU的,显示3D难度应该会好很多。本次的话我们还是先体验下QT
评论