下面是一个用Qt编写的串口通信示例代码,包括打开串口、关闭串口、搜索串口和串口收发数据的功能:

#include <QCoreApplication>
#include <QtSerialPort/QSerialPort>
#include <QDebug>

QSerialPort serial;

// 打开串口
bool openSerialPort(const QString& portName)
{
    serial.setPortName(portName);
    serial.setBaudRate(QSerialPort::Baud9600);
    serial.setDataBits(QSerialPort::Data8);
    serial.setParity(QSerialPort::NoParity);
    serial.setStopBits(QSerialPort::OneStop);

    if (serial.open(QIODevice::ReadWrite))
    {
        qDebug() << "Serial port opened: " << portName;
        return true;
    }
    else
    {
        qDebug() << "Failed to open serial port: " << portName;
        return false;
    }
}

// 关闭串口
void closeSerialPort()
{
    if (serial.isOpen())
    {
        serial.close();
        qDebug() << "Serial port closed";
    }
}

// 搜索串口
QStringList getAvailableSerialPorts()
{
    QStringList ports;
    foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
    {
        ports << info.portName();
    }
    return ports;
}

// 串口收发数据
void sendData(const QByteArray& data)
{
    if (serial.isOpen())
    {
        serial.write(data);
        qDebug() << "Data sent: " << data;
    }
    else
    {
        qDebug() << "Serial port is not opened";
    }
}

void readData()
{
    QByteArray data = serial.readAll();
    qDebug() << "Data received: " << data;
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 搜索串口
    QStringList ports = getAvailableSerialPorts();
    foreach (const QString &port, ports)
    {
        qDebug() << "Serial port found: " << port;
    }

    // 打开串口(示例中使用第一个搜索到的串口)
    if (!ports.isEmpty())
    {
        QString portName = ports.first();
        if (openSerialPort(portName))
        {
            // 读取串口数据
            QObject::connect(&serial, &QSerialPort::readyRead, readData);

            // 发送数据
            QByteArray data("Hello, Serial Port!");
            sendData(data);
        }
    }

    return a.exec();
}

请注意,为了使用Qt串口库,你需要在.pro文件中添加以下内容:

QT += serialport
``

原文地址: https://www.cveoy.top/t/topic/iZ0v 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录