QT上位机串口实时温湿度显示
本文最后更新于1135 天前,其中的信息可能已经过时,如有错误请发送邮件到17671220626@139.com

STM32与上位机通信协议——UART协议:
串行通讯需要有通信协议
通信协议:规定发送与接收方,通信的方式与要求,数据的格式
由RXD和TXD两条线,由于没有时钟线,所以需要规定波特率
数据传输速率就是波特率
UART(串行异步全双工)
采用的是串行通信,也就是一条传输线,一位一位的顺序发送(可以远距离传输,传输较慢)
异步通信是以一个字符为传输单位,每个字符为10位(1个起始位,7个数据位,1个校验位,1个停止位)
通信中两个字符之间的时间间隔不固定,但是同一个字符相邻位之间时间间隔是固定的:
数据通信格式
1、起始位
2、数据位
3、校验位
4、停止位
5、空闲位
STM32需要通过串口向上位机完成数据上传,然后完成实时显示。
所以需要先完成上位机的一个开发,上位机开发工具选择QT
创建QT工程:

在这里插入图片描述

选择QT Widgets 修改名称为:serialdisplay,路径自己选择

在这里插入图片描述

直接点击下一步,到这个界面:

在这里插入图片描述

修改一下类名为:SerialDisplay
在这里插入图片描述

直接点击下一步,直到点击完成 创建工程就成功了,创建完成可以运行一下;
接下来就是添加空间,找到设计界面,点击ui

在这里插入图片描述

就转到这个界面,可以开始添加控件,左边就是控件栏:
在这里插入图片描述

添加完控件如下:
在这里插入图片描述

修改右边对应控件的名字,便于代码里使用;
在这里插入图片描述

然后就是代码部分:
右击你要实现功能的控件,比如说打开串口按钮如下:
在这里插入图片描述

点击转到槽函数:
在这里插入图片描述

选择点击触发,点击ok,就会跳转到以下界面:
在这里插入图片描述

对应实现该函数即可。其他我就不一一介绍了:
直接上源码:
serialdisplay.cpp文件

#include "serialdisplay.h"
#include "ui_serialdisplay.h"
#include <QDebug>
#include <QMessageBox>
#include <QFontDialog>

#include <QJsonObject>
#include <QJsonDocument>

SerialDisplay::SerialDisplay(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::SerialDisplay)
{
   
   
    ui->setupUi(this); 
    serialflag = 0;//表示串口关闭
    setWindowFlags(windowFlags()&~Qt::WindowMaximizeButtonHint);// 禁止最大化按钮
    serialport = new QSerialPort();//分配内存
    ui->dateTimeEdit->setDisabled(true);//
    timerid = startTimer(1000);//开启定时器,每隔1秒
}

SerialDisplay::~SerialDisplay()
{
   
   
    killTimer(timerid);//关闭
    delete ui;
    delete serialport;
}

//串口获取
void SerialGetData::Serial_read()
{
   
   
    int temp = 0;//
    int humi = 0;
    QByteArray recvData;
    try {
   
   
        recvData = SerialGetData::serial_recv_Data();//从串口接收数据
    } catch (MyExcption &err) {
   
   
        QMessageBox::warning(NULL , "提示", err.what());
        return;
    }
    QString receive = QString::fromLocal8Bit(recvData.constData());
    //json格式数据解析 比如:{"温度":"10℃","湿度":"20%"}
    QJsonParseError err;
    QByteArray arr ;
    arr.append(receive);
    QJsonDocument doc = QJsonDocument::fromJson(arr,&err);
    if(err.error != QJsonParseError::NoError){
   
   
        qDebug() << "转换失败";
        return;
    }
    QJsonObject obj = doc.object();
    temp = SerialGetData::getNumsFromStr(obj.value("温度").toString());
    humi = SerialGetData
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇