修改.pro工程文件,添加串口支持

QT += serialport

#include <QSerialPort>

QSerialPort *serial;
    
serial = new QSerialPort();
connect(serial, SIGNAL(readyRead()),this,SLOT(serial_received_data()));

打开/关闭串口

void MainWindow::on_SerialButton_clicked()
{
    if(serial->isOpen())
    {
       serial->close();
       ui->textBrowser->append("关闭" + serial->portName());
       ui->SerialButton->setText("打开串口");
    }
    else
    {
        serial->setPortName(ui->comboBox->currentText());   // 设置端口
        serial->setBaudRate(QSerialPort::Baud115200);       // 设置波特率
        serial->setDataBits(QSerialPort::Data8);            // 8位数据位
        serial->setFlowControl(QSerialPort::NoFlowControl); // 无流控制
        serial->setParity(QSerialPort::NoParity);           // 无校验位
        serial->setStopBits(QSerialPort::OneStop);          // 1位停止位
        if(serial->open(QIODevice::ReadWrite))
        {
            ui->textBrowser->append("打开" + serial->portName() + "成功");
            ui->SerialButton->setText("关闭串口");
        }
        else
        {
            ui->textBrowser->append("打开" + serial->portName() + "失败");
        }
    }
}

发送数据:

if(serial->isOpen())
{
    serial->write("Hello World\r\n", 12);
}

接收数据:

void MainWindow::serial_received_data()
{
    QByteArray bytes;
    bytes = serial->read(100);
    ui->textBrowser->append(bytes);
 }

查找可用串口列表:

#include <QSerialPortInfo>

foreach (QSerialPortInfo info, QSerialPortInfo::availablePorts())
{
    ui->comboBox->addItem(info.portName());
}