您的位置:首页 > 编程语言 > Qt开发

QT5 串口操作

2016-03-05 20:36 423 查看
Qt5 提供了两个类用于串口操作,分别是:QSerialPort和QSerialPortInfo。

最基本的操作示例代码如下:

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

#include <QDebug>
#include <QSerialPort>
#include <QSerialPortInfo>

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
Q_OBJECT

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

QSerialPort m_Serail;

private slots:
void myRecvData();

private:
Ui::Dialog *ui;
};

#endif // DIALOG_H


#include "dialog.h"
#include "ui_dialog.h"

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

QSerialPortInfo serPortInfo;
foreach(const QSerialPortInfo &serInfo,QSerialPortInfo::availablePorts())
{
qDebug() << "Name: " << serInfo.portName();
qDebug() << "Description: " << serInfo.description();
qDebug() << "Manufacturer: " << serInfo.manufacturer();
qDebug() << "Serial Number: " << serInfo.serialNumber();
qDebug() << "System Location: " << serInfo.systemLocation();
serPortInfo = serInfo;
}
m_Serail.setPort(serPortInfo);
if(m_Serail.open(QIODevice::ReadWrite))
{
qDebug() << "m_Serail.open(QIODevice::ReadWrite)";
m_Serail.setBaudRate(QSerialPort::Baud115200);
m_Serail.setParity(QSerialPort::NoParity);
m_Serail.setDataBits(QSerialPort::Data8);
m_Serail.setStopBits(QSerialPort::OneStop);
m_Serail.setFlowControl(QSerialPort::NoFlowControl);

m_Serail.clearError();
m_Serail.clear();
connect(&m_Serail, SIGNAL(readyRead()), this, SLOT(myRecvData()));
}
}

Dialog::~Dialog()
{
delete ui;
}

void Dialog::myRecvData()
{
QByteArray arr = m_Serail.readAll();
if(NULL != arr)
{
ui->logEdit->append(tr(arr));
arr.clear();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: