0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于QT的串口小助手开发

CHANBAEK 来源:BingoMCU 作者:BingoMCU 2023-04-04 15:07 次阅读

一、项目需求

用QT开发一个串口小助手,要求能实现串口接收,发送等基本功能。

二、UI界面设计

1ed12f0aa46e450796a29525058fca45.jpeg

三、源码实现

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

    文章

    1540

    浏览量

    75992
  • 源码
    +关注

    关注

    8

    文章

    632

    浏览量

    29092
  • Qt
    Qt
    +关注

    关注

    1

    文章

    301

    浏览量

    37761
  • 界面设计
    +关注

    关注

    0

    文章

    22

    浏览量

    10464
收藏 人收藏

    评论

    相关推荐

    QT串口通信的简单使用

    QT串口通信是上位机和下位机通信常用的通信方式, 也是学习QT必须学会的基础知识, 这篇就简单介绍一下QT串口通信的简单使用.
    的头像 发表于 01-15 09:27 1728次阅读
    <b class='flag-5'>QT</b><b class='flag-5'>串口</b>通信的简单使用

    利用QT来制作一个最基本的串口助手

    QT制作串口助手为什么要写串口助手在学习单片机的过程中,经常需要使用串口来和电脑进行通信,有时还
    发表于 01-18 08:09

    【米尔MYD-YT507开发板试用体验】ubuntu下QT串口助手开发调试

    我们还是先体验下QT开发串口调试助手,这样我们能用串口接一些传感器了。首先使用QT5的
    发表于 08-03 11:05

    Qt串口通信专题教程

    这是一个关于在Qt Creator下进行串口通信软件开发的专题教程,能够帮助你快速的开发有关的串口应用。
    发表于 05-04 14:37 24次下载

    串口调试助手怎么用_串口调试助手使用方法

    串口是嵌入式开发和单片机开发中不可缺少的外设设备,通用也要运用于整个平台。所以如何利用串口调试助手是十分重要的,接下来为大家介绍下如何使用
    发表于 11-28 16:22 7.2w次阅读
    <b class='flag-5'>串口</b>调试<b class='flag-5'>助手</b>怎么用_<b class='flag-5'>串口</b>调试<b class='flag-5'>助手</b>使用方法

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

    串口调试助手是一款用于串口调试的工具,目前网上存在很多个版本,功能都差不多,但稳定性有好有坏,如果只用于一般的串口调试,这些工具够用了,如果想开发
    的头像 发表于 02-02 10:37 4792次阅读
    开源的<b class='flag-5'>Qt</b><b class='flag-5'>串口</b><b class='flag-5'>助手</b>的使用方法

    QT从零开始作单片机上位机-串口调试助手+波形显示-设计QT串口助手界面,添加主窗口控件

    第二章 QT从零开始作单片机上位机-串口调试助手+波形显示目录第二章 QT从零开始作单片机上位机-串口调试
    发表于 01-12 19:10 15次下载
    <b class='flag-5'>QT</b>从零开始作单片机上位机-<b class='flag-5'>串口</b>调试<b class='flag-5'>助手</b>+波形显示-设计<b class='flag-5'>QT</b><b class='flag-5'>串口</b><b class='flag-5'>助手</b>界面,添加主窗口控件

    基于QT的安卓手机蓝牙APP开发

    前段时间用QT写了一个串口调试助手,感觉还可以。因为QT是跨平台的,同样一套代码可以在windows上面跑,也可以在linux上面跑,也可以在...
    发表于 01-25 18:43 14次下载
    基于<b class='flag-5'>QT</b>的安卓手机蓝牙APP<b class='flag-5'>开发</b>

    Qt小项目之串口助手控制LED

    最近刚学了一点Qt开发上位机,尝试着做个小软件练练手。查找了很多资料,做了一个简单的串口助手,可以实现串口基本发送和接收功能,支...
    发表于 01-26 18:21 2次下载
    <b class='flag-5'>Qt</b>小项目之<b class='flag-5'>串口</b><b class='flag-5'>助手</b>控制LED

    QT 串口示波器的串口调试助手功能

    串口调试助手功能: 支持传统的串口调试助手的基本收发功能,同时可以刷新大量的数据而不卡顿 支持保存接收的数据 支持最大200条可编辑指令的设置,并用于多条发送
    发表于 07-07 15:26 2660次阅读

    QT设计的网络助手源码

    QT设计的网络助手源码
    发表于 09-27 11:46 2次下载

    【飞凌OKA40i-C开发板试用体验】QT实现串口助手

    本文来源电子发烧友社区,作者:刘建华, 帖子地址: https://bbs.elecfans.com/jishu_2308758_1_1.html 【目的】用QT实现一个串口助手。 因为我的项目
    的头像 发表于 10-19 11:21 1005次阅读
    【飞凌OKA40i-C<b class='flag-5'>开发</b>板试用体验】<b class='flag-5'>QT</b>实现<b class='flag-5'>串口</b><b class='flag-5'>助手</b>

    【米尔MYD-YT507开发板试用体验】ubuntu下QT串口助手开发调试

    ,因为这些都是QT自己本身就带的功能,如果有3D应该还可以跑下QT 3D效果,本开发板的全志芯片也是带了GPU的,显示3D难度应该会好很多。本次的话我们还是先体验下QT
    的头像 发表于 10-26 15:04 1256次阅读
    【米尔MYD-YT507<b class='flag-5'>开发</b>板试用体验】ubuntu下<b class='flag-5'>QT</b><b class='flag-5'>串口</b><b class='flag-5'>助手</b><b class='flag-5'>开发</b>调试

    Qt5实现上位机与串口通信

    Qt助手内搜索:Qt Serial Port为串口的相关函数  1.添加串口头文件: # include //使用
    发表于 05-10 10:46 0次下载
    <b class='flag-5'>Qt</b>5实现上位机与<b class='flag-5'>串口</b>通信

    QT上位机开发串口助手(下)

    接着嵌入式QT上位机开发串口助手(上)来完善一下串口助手的功能,上一篇博客已经实现了自动获取的
    发表于 05-29 16:49 2次下载
    <b class='flag-5'>QT</b>上位机<b class='flag-5'>开发</b>之<b class='flag-5'>串口</b><b class='flag-5'>助手</b>(下)