连接到QT中的串行端口

Connecting to Serial port in QT

本文关键字:串行端口 QT 连接      更新时间:2023-10-16

我想使用 QSerialPort 连接到微控制器。我已将线路串行端口添加到我的.pro文件中,QSerialPort包含在我的源文件中并运行qmake.我的代码如下:

    serial.setPortName("COM3");
    serial.setBaudRate(QSerialPort::Baud9600);
    serial.setDataBits(QSerialPort::Data8);
    serial.setParity(QSerialPort::NoParity);
    serial.setStopBits(QSerialPort::OneStop);
    serial.setFlowControl(QSerialPort::NoFlowControl);
    serial.open(QIODevice::ReadWrite);
    serial.write("ok*");

当我运行代码时,我收到一条消息,说设备未打开,尽管我已经确认它已打开并带有TeraTerm。我错过了什么?错误消息如下:

QIODevice::write: device not open

首先,您应该检查是否打开返回true。如果否,则告诉用户错误并调用errorString()

if(serial.open(QIODevice::ReadWrite))
    serial.write("ok*");
else
{
    //error
    qDebug() << serial.errorString();
}

您尝试在不同的程序中打开一个端口。在Windows中是被禁止的。所以你不能使用这个。在您的视频作者中,Qt打开com3,但在teraterm中打开com4,这是不同的端口,因此您应该使用相同的端口,而不是一个端口用于少数程序。

注意这个程序: com0com