QT实现串口调试助手(一)

10 篇文章 37 订阅

工程源码:https://github.com/zhangfls/QT_UartAnalysisTool


QT实现串口工具相关文章链接

一、安装QTCreator
官网自行安装即可,community版的就够用了


二、编译器

如果如果没有特殊编译器要求,可以直接使用自带的MinGW的32位编译器,也可以安装Visual Studio配置使用它的编译器,可以编译64位的。编译器会自动检测的,建议先安装Visual Studio,QT安装时会自动识别到

三、创建一个新工程

设置项目名称和路径

设置编译器

设置基本类和UI

上面这些可以先不动,用默认的即可。

最后生成的项目文件如下图:

.pro文件描述了cpp和h文件的引入关系和模块的加载

mainwindow.h及mainwindow.cpp是UI程序入口

mianwindow.ui是个xml,描述了主窗口的UI样式和内容,可以用设计器来编辑

简单分析一下生成UI界面的流程:

通过编译,QT会将mianwindow.ui的xml内容转换为ui_mainwindow.h文件,这样C++编译器才能识别并实例化图形。

通过MainWindow的构造函数,调用UI_mianwindow里面的setupUi来实例化主窗体

mian.cpp中则实例化了MainWindow,并调用了show函数

程序通过main函数入口开始执行,于是UI界面就显示出来了

最后

return a.exec();

程序进入消息等待,等待消息事件发生并产生响应

下一篇:

QT实现串口调试助手(二)

  • 11
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
QT提供了对串口通信的支持,可以方便地实现串口调试助手。下面是一个简单的QT串口调试助手的设计思路和功能描述: 1. 创建一个串口类,用来发送和接收数据; 2. 创建两个文本框和几个按钮来实现数据的接收和发送,并且设置串口通信的参数; 3. 实现针对串口数据的解析; 4. 实现波形数据绘制和文件操作。 具体实现步骤如下: 1. 创建一个QT工程,使用widget作为默认控件; 2. 在widget.h中添加相关的函数和变量,指针申明; 3. 在widget.cpp中实现具体的函数功能; 4. 实现定时接收串口数据的功能。 以下是一个简单的QT串口调试助手的示例代码,其中使用QSerialPort类实现串口通信功能,并使用QTimer类实现了定时接收串口数据的功能: ```cpp #include "widget.h" #include "ui_widget.h" #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo> #include <QTimer> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); // 初始化串口 serialPort = new QSerialPort(this); serialPort->setBaudRate(QSerialPort::Baud9600); serialPort->setDataBits(QSerialPort::Data8); serialPort->setParity(QSerialPort::NoParity); serialPort->setStopBits(QSerialPort::OneStop); serialPort->setFlowControl(QSerialPort::NoFlowControl); // 显示可用串口列表 foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) { ui->comboBox_serialPort->addItem(info.portName() + " : " + info.description()); } // 连接信号槽 connect(ui->pushButton_openSerial, SIGNAL(clicked()), this, SLOT(openSerialPort())); connect(ui->pushButton_closeSerial, SIGNAL(clicked()), this, SLOT(closeSerialPort())); connect(ui->pushButton_sendData, SIGNAL(clicked()), this, SLOT(sendData())); connect(serialPort, SIGNAL(readyRead()), this, SLOT(readData())); connect(&timer, SIGNAL(timeout()), this, SLOT(timeout())); // 设置定时器 timer.start(100); } Widget::~Widget() { delete ui; } void Widget::openSerialPort() { // 打开串口 serialPort->setPortName(ui->comboBox_serialPort->currentText().split(" : ").first()); if (serialPort->open(QIODevice::ReadWrite)) { ui->label_status->setText("串口已打开"); } else { ui->label_status->setText("打开串口失败"); } } void Widget::closeSerialPort() { // 关闭串口 if (serialPort->isOpen()) { serialPort->close(); ui->label_status->setText("串口已关闭"); } } void Widget::sendData() { // 发送数据 serialPort->write(ui->lineEdit_sendData->text().toUtf8()); } void Widget::readData() { // 读取数据 QByteArray data = serialPort->readAll(); ui->textEdit_receiveData->append(data); } void Widget::timeout() { // 定时读取数据 readData(); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值