QT 串口通信笔记

本文详细记录了使用QT进行串口通信的步骤,包括引入必要的头文件,搜索和连接串口,读写数据以及关闭串口的操作。通过源代码实例,深入理解QT串口通信的实现过程。
摘要由CSDN通过智能技术生成

一,头文件

       #include <QSerialPort>           //提供访问串口的功能

       #include <QSerialPortInfo>    //提供系统中存在的串口的信息

二,搜索串口

 //搜索串口,并添加到选项上供使用者选择
    foreach(const QSerialPortInfo &Info,QSerialPortInfo ::availablePorts())
    {
        QSerialPort CurrentPort;
        CurrentPort.setPort(Info);
        if(CurrentPort.open(QIODevice::ReadWrite))
        {
          ui->comboBox_port->addItem(CurrentPort.portName());//插入串口的名字
          CurrentPort.close();   //先开再关,把串口名称先导入
        }

    }

三,连接串口

 CurrentUart->open(QIODevice::ReadWrite);

四,读串口数据

QByteArry ReadBuf = CurrentUart->readAll();

if(!ReadBuf.isEmpty())
{
    str += tr(ReadBuf);//???
    ui->plainTextEdit->appendPlainText(str);
}

ReadBuf.clear();

 

五,写数据

 QByteArray ArraySend = ui->plainTextEdit_2->toPlainText().toLatin1();
 CurrentUart->write(QByteArray::fromHex(ArraySend));

六,关掉串口

CurrentUart->clear();
CurrentUart->close();

七,源代码

#ifndef UARTDISPLAY_H
#define UARTDISPLAY_H
#include <QSerialPort>           //提供访问串口的功能
#include <QSerialPortInfo>    //提供系统中存在的串口的信息
#include <QWidget>
#include <QTimer>
#include <QTextEdit>
#include <QtDebug>
#include "linklist.h"
#include "datahandle.h"

extern uint8_t SerialStatus;

namespace Ui {
class Uartdisplay;
}

class Uartdisplay : public QWidget
{
    Q_OBJECT

public:
    explicit Uartdisplay(QWidget *parent = nullptr);
    ~Uartdisplay();
    void uint8_to_charHex(uint8_t *data,uint16_t len,uint8_t *retbuf);
    void QString_to_charHex(QString *data,uint16_t len,QString *retbuf);
    void QByteArray_to_uint8hex(QByteArray *data,uint8_t *hexdata,uint16_t len);

private slots:
    void on_pushButton_clicked();
    void Read_Data();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

    void on_pushButton_4_clicked();

    void on_pushButton_5_clicked();

private:
    Ui::Uartdisplay *ui;
     QSerialPort *CurrentUart = new QSerialPort();
     QTimer *TimerRead = new QTimer();
     QByteArray ReadBuf;
     QTextEdit *ReceiveInfo;
};

#endif // UARTDISPLAY_H
#include "uartdisplay.h"
#include "ui_uartdisplay.h"

#include <QSerialPort>           //提供访问串口的功能
#include <QSerialPortInfo>    //提供系统中存在的串口的信息
#include <QFileDialog>
#include <QDateTime>
#include <QMessageBox>


uint8_t SerialStatus = 0;
extern Linklist link;


Uartdisplay::Uartdisplay(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Uartdisplay)
{
    ui->setupUi(this);

    ui->pushB
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

试探你的温柔耶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值