qt下一个检测串口是否可正常访问的测试project案例(不包含ui)

发布时间:2024年01月15日

这次的需求背景是:在麒麟系统中打上QtSerialPort包之后如何确认可以在QT中可以正常访问串口呢?于是在QT中写一个对名为ttyWCH1的自回环串口进行读写操作的测试工程。

先在QT正常创建工程成功后,将编写下面main.cpp内容

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

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
/*
    // 显示可用的串口信息
    qDebug() << "Available serial ports:";
    foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
        qDebug() << "Name: " << info.portName();
        qDebug() << "Description: " << info.description();
        qDebug() << "Manufacturer: " << info.manufacturer();
        qDebug() << "System Location: " << info.systemLocation();
        qDebug() << "Vendor ID: " << info.vendorIdentifier();
        qDebug() << "Product ID: " << info.productIdentifier();
        qDebug() << "Busy: " << info.isBusy();
        qDebug() << "------------------------------------";
    }
*/
    // 设置串口参数
    QSerialPort serial;
    serial.setPortName("ttyWCH1"); // 请替换为实际的串口名称
    serial.setBaudRate(QSerialPort::Baud115200);
    serial.setDataBits(QSerialPort::Data8);
    serial.setParity(QSerialPort::NoParity);
    serial.setStopBits(QSerialPort::OneStop);

    // 打开串口
    if (serial.open(QIODevice::ReadWrite)) {
        qDebug() << "Serial port opened successfully.";

        // 发送数据
        QByteArray dataToWrite = "Hello, Serial Port!";
        qint64 bytesWritten = serial.write(dataToWrite);
        qDebug() << bytesWritten << " bytes written.";

        // 接收数据
        QByteArray dataRead = serial.readAll();
        qDebug() << "Received data: " << dataRead;

        // 关闭串口
        serial.close();
        qDebug() << "Serial port closed.";
    } else {
        qDebug() << "Failed to open serial port.";
    }

    return a.exec();
}

以上获取可用串口信息的获取部分值得一提(当然这部分也可以去除,因为在当前需求中只需要测试一个串口即可)

// 显示可用的串口信息
    qDebug() << "Available serial ports:";
    foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
        qDebug() << "Name: " << info.portName();
        qDebug() << "Description: " << info.description();
        qDebug() << "Manufacturer: " << info.manufacturer();
        qDebug() << "System Location: " << info.systemLocation();
        qDebug() << "Vendor ID: " << info.vendorIdentifier();
        qDebug() << "Product ID: " << info.productIdentifier();
        qDebug() << "Busy: " << info.isBusy();
        qDebug() << "------------------------------------";
    }

foreach是C++中的一个循环结构,用于遍历容器中的元素。在这个代码块中,foreach用于遍历QSerialPortInfo::availablePorts()返回的串行端口信息集合。

QSerialPortInfo::availablePorts()是一个静态成员函数,用于获取系统中可用的串行端口信息。它返回一个QList<QSerialPortInfo>类型的对象,其中包含了系统中所有可用的串行端口信息。

foreach循环中,每次迭代都会取出一个QSerialPortInfo对象,并将其赋值给变量info。然后,可以使用info对象的成员函数来获取该串行端口的各种属性,如名称、描述、制造商等。这些属性通过qDebug()输出到控制台。

文章来源:https://blog.csdn.net/m0_68051251/article/details/135597477
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。