QT C++ 多线程多串口界面设计

本文介绍了使用QT C++进行多线程多串口界面设计的过程,包括在QT Designer创建UI,自定义串口线程类,主窗口类的构建,以及信号与槽的连接。通过此设计,可以实现与DSP28335设备的通信,发送指令并接收响应。目前的工程文件提供了一个基本框架,未来将继续扩展和完善。
摘要由CSDN通过智能技术生成

忙了两三天了,总算得空记录一下QT串口,文末会有总的工程文件上传,多谢大家捧场。
之前博文写过PyQT,目前我逐渐偏向C++了,但主要代码思想没有变,如下:

第一,在QTdesigner下,建立好UI,如下图:
这里写图片描述
UI细节就不详细说了,具体可以看文末连接的工程文件

第二,新建串口线程类,这里要说明一下,QT本身已有串口类,我这里继承了QThread后,在类内添加串口类成员,代码如下:

#ifndef TASERIALTHREAD_H
#define TASERIALTHREAD_H

#include <QThread>
#include <QtSerialPort>
#include <QSerialPortInfo>
#include <QString>

class TA_SerialThread:public QThread
{
   
public:
    TA_SerialThread();
    ~TA_SerialThread();

public:
    uint8_t portCnt;
    QSerialPort *m_arrSerial;//ptr point to an array,maxium port num is 5

public:
    void SearchPort(void);
    void InitPortName(uint8_t portIndex,const QString &portName);
    void InitPortBaudRate(uint8_t portIndex,qint32 baudRate);
    void InitPortDataBits(uint8_t portIndex,QSerialPort::DataBits dataBits);
    void InitPortParity(uint8_t portIndex,QSerialPort::Parity parity);
    void InitPortStopBits(uint8_t portIndex,QSerialPort::StopBits stopBits);
    void OpenPort(uint8_t portIndex);
    void ClosePort(uint8_t portIndex);
    void SendDataBuf(uint8_t portIndex,const QByteArray &str);
    QByteArray GetDataBuf(uint8_t portIndex);

private slots:
    void run();
};
#endif // TASERIALTHREAD_H

有几处说明,

QSerialPort *m_arrSerial;

指针用于存储多个串口,当串口数组用了

uint8_t portCnt;

用于标记当前串口的总个数
portIndex用于明确对哪个串口操作

第三,新建主窗口类,目的是将ui与底层连接起来,把二者融合在一个类里,类如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "taserialthread.h"

namespace Ui {
   
class MainWindow;
}

class MainWindow : public QMainWindow
{
   
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

public slots:
    void MWOnoffPort(void);
    void MWSendCmd(void);
    void MWReadData(void);
    void MWClearRecv(void);
    void MWRSNumDisplay(void);

private:
    Ui::MainWindow *ui;
    TA_SerialThread *sPortThread;
    volatile uint32_t m_recvNum;
    volatile uint32_t m_sendNum;
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值