打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
QT5串口通信

串口通信在嵌入式设备开发中非常常用,在Qt5之前,要实现串口通信,需要借助第三方串口封装代码,QT5已经自带了类来完成这项工作。

代码如下:

//1. [代码]在pro文件中添加     //QT       += serialport///引入头文件#include <QtSerialPort/QSerialPort>#include <QtSerialPort/QSerialPortInfo>//[代码]初始化         my_serialport->setPortName(ComName);    my_serialport->setBaudRate(9600);    my_serialport->setDataBits(QSerialPort::Data8);    my_serialport->setParity(QSerialPort::NoParity);    my_serialport->setStopBits(QSerialPort::OneStop);    my_serialport->setFlowControl(QSerialPort::NoFlowControl);

附上一段完整的实例代码:

main.cpp

#include "widget.h"#include <QApplication>int main(int argc, char *argv[]){    QApplication a(argc, argv);    Widget w;    w.show();    return a.exec();}

widget.h widget.cpp

#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QtSerialPort/QSerialPort>#include <QtSerialPort/QSerialPortInfo>#include <QTimer>namespace Ui {class Widget;}class Widget : public QWidget{    Q_OBJECTpublic:    explicit Widget(QWidget *parent = 0);    ~Widget();private slots:    void on_pushButton_cmopen_clicked();    void updateAA();    void on_pushButton_send_clicked();private:    Ui::Widget *ui;    QSerialPort *my_serialport;    QByteArray requestData;    QTimer *timer;};#endif // WIDGET_H
#include "widget.h"#include "ui_widget.h"#include <QtSerialPort/QSerialPort>#include <QtSerialPort/QSerialPortInfo>#include <QDebug>#include <QTimer>Widget::Widget(QWidget *parent) :    QWidget(parent),    ui(new Ui::Widget){    ui->setupUi(this);    foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())    {        qDebug() << "Name        : " << info.portName();        qDebug() << "Description : " << info.description();        qDebug() << "Manufacturer: " << info.manufacturer();        // Example use QSerialPort        QSerialPort serial;        serial.setPort(info);        if (serial.open(QIODevice::ReadWrite))        {            ui->comboBox->addItem(info.portName());            serial.close();        }    }}Widget::~Widget(){    delete ui;}void Widget::on_pushButton_cmopen_clicked(){    my_serialport= new QSerialPort();    qDebug()<<ui->comboBox->currentText();    my_serialport->setPortName(ui->comboBox->currentText());    my_serialport->open(QIODevice::ReadWrite);    qDebug()<<ui->lineEdit->text().toInt();    my_serialport->setBaudRate(ui->lineEdit->text().toInt());    my_serialport->setDataBits(QSerialPort::Data8);    my_serialport->setParity(QSerialPort::NoParity);    my_serialport->setStopBits(QSerialPort::OneStop);    my_serialport->setFlowControl(QSerialPort::NoFlowControl);    timer = new QTimer(this);    connect(timer, SIGNAL(timeout()), this, SLOT(updateAA()));    timer->start(1000);}void Widget::updateAA(){    requestData = my_serialport->readAll();    if(requestData!= NULL)    {        ui->textEdit->append(requestData);    }    requestData.clear();}void Widget::on_pushButton_send_clicked(){    QByteArray TxData = "aaaa";    my_serialport->write(TxData);}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Qt遍历串口以及串口操作
使用QColorDialog颜色编辑选取对话框来拾取颜色,来动态改变界面整体的颜色风格,简单实例
Qt中如何针对串口大数据量通信进行流式处理
qt控件的使用
QWidget之Alien与Native小记
06、Qt中的事件处理机制
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服