一,头文件
#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