qt学习:串口

头文件

#include <QSerialPort>
#include <QSerialPortInfo>

模块

QT       += core gui serialport

编程步骤

配置一个ui界面,五个QComboBox和一个按钮和一个QTextEdit

添加一个成员

private:
    QSerialPort *serial;

在构造函数中初始化ui端口列表和串口

    //获取当前主机上所有可用的端口
    QList<QSerialPortInfo> list = QSerialPortInfo::availablePorts();
    //将获取的端口列表设置到ui界面上
    for(int i=0; i<list.size(); i++)
    {
        ui->comboBox_port->addItem(list.at(i).portName());
    }
    //串口对象
    serial = new QSerialPort;
    //关联串口收到数据就会触发QSerialPort::readyRead信号,然后显示出来
    connect(serial,&QSerialPort::readyRead,this,[&](){
        //读取数据
        QByteArray data = serial->readAll();
        //显示
        ui->textEdit->append(data);
    });

连接按钮点击函数

    //设置串口端口
    serial->setPort(QSerialPortInfo(ui->comboBox_port->currentText()));

    //1、设置波特率
    if(ui->comboBox_baud->currentText() == "9600")
    {
        serial->setBaudRate(QSerialPort::Baud9600);
    }
    else if(ui->comboBox_baud->currentText() == "115200")
    {
        serial->setBaudRate(QSerialPort::Baud115200);
    }
    else if(ui->comboBox_baud->currentText() == "38400")
    {
        serial->setBaudRate(QSerialPort::Baud38400);
    }
    //2、设置数据位
    if(ui->comboBox_dataBits->currentText() == "5")
    {
        serial->setDataBits(QSerialPort::Data5);
    }
    else if(ui->comboBox_dataBits->currentText() == "6")
    {
        serial->setDataBits(QSerialPort::Data6);
    }
    else if(ui->comboBox_dataBits->currentText() == "7")
    {
        serial->setDataBits(QSerialPort::Data7);
    }
    else if(ui->comboBox_dataBits->currentText() == "8")
    {
        serial->setDataBits(QSerialPort::Data8);
    }

    //3、设置奇偶校验位
    if(ui->comboBox_parity->currentText() == "None")
    {
        serial->setParity(QSerialPort::NoParity);
    }

    //4、设置停止位
    if(ui->comboBox_stopBits->currentText() == "1.5")
    {
        serial->setStopBits(QSerialPort::OneAndHalfStop);
    }
    else if(ui->comboBox_stopBits->currentText() == "1")
    {
        serial->setStopBits(QSerialPort::OneStop);
    }
    else if(ui->comboBox_stopBits->currentText() == "2")
    {
        serial->setStopBits(QSerialPort::TwoStop);
    }
    //5、打开串口
    serial->open(QIODevice::ReadWrite);
相关推荐
百里与司空12 分钟前
学习CubeIDE——定时器开发
stm32·单片机·嵌入式硬件·学习
天下无贼!14 分钟前
2024年最新版Vue3学习笔记
前端·vue.js·笔记·学习·vue
yunhuibin39 分钟前
ffmpeg面向对象——参数配置秘密探索及其设计模式
学习·设计模式·ffmpeg
玄客)1 小时前
MACCMS 远程命令执行漏洞复现(CVE-2017-17733)
学习·安全
HinsCoder2 小时前
【渗透测试】——Upload靶场实战(1-5关)
笔记·学习·安全·web安全·渗透测试·测试·upload靶场
听风若依2 小时前
排序学习笔记
笔记·学习
Filotimo_2 小时前
【自然语言处理】实验三:新冠病毒的FAQ问答系统
人工智能·经验分享·笔记·python·学习·自然语言处理·pycharm
IM_DALLA2 小时前
【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL21
学习·fpga开发
狐心kitsune2 小时前
erlang学习:Linux常用命令1
linux·学习·erlang
小游鱼KF2 小时前
Spring学习前置知识
java·学习·spring