QT学习 串口

头文件增加
#include <QSerialPort>
pro文件增加
QT += serialport
成员变量
QSerialPort serial
接收槽函数
private slots: void serial_port_ready_read()

初始化

    //连接信号和槽,每次串口接收到数据调用槽函数
    QObject::connect(&serial, &QSerialPort::readyRead, this, &MainWindow::serial_port_ready_read);
    //设置串口名
    serial.setPortName("COM1");
    //设置波特率
    serial.setBaudRate(QSerialPort::Baud9600);
    //设置数据位数
    serial.setDataBits(QSerialPort::Data8);
    //设置奇偶校验
    serial.setParity(QSerialPort::NoParity);
    //设置停止位
    serial.setStopBits(QSerialPort::OneStop);
    //设置流控制
    serial.setFlowControl(QSerialPort::NoFlowControl);
    //打开串口
    if(!serial.open(QIODevice::ReadWrite)) {
        QMessageBox::about(NULL, QStringLiteral("提示"), QStringLiteral("无法打开串口!"));
        QObject::disconnect(&serial, 0, 0, 0);
    }

接收槽函数

void MainWindow::serial_port_ready_read()
{
    //从接收缓冲区中读取数据
    QByteArray buffer = serial.readAll();
    if(buffer.length()) {
    // ……
    }
}

发送函数

void MainWindow::serial_port_send(char *txBuf, quint16 txLen)
{
    QByteArray Data = QByteArray((const char *)txBuf, txLen);
    serial.flush();
    serial.write(Data);
    serial.waitForBytesWritten(5000);
}

关闭

    if(serial.isOpen())
    {
        serial.close();
        QObject::disconnect(&serial, 0, 0, 0);
    }

罗列可用串口

假设界面上有控件
在这里插入图片描述

	ui->comboBox->clear();
    //通过QSerialPortInfo查找可用串口
    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
    {
        ui->comboBox->addItem(info.portName());
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值