【问题标题】:QSerialPort error signal on open, but open returns true打开时 QSerialPort 错误信号,但打开返回 true
【发布时间】:2016-01-14 02:08:59
【问题描述】:

我正在使用 Qt 5,当我打开串口时,打开成功,但立即收到错误信号。我这样打开端口:

m_serial->setPortName(m_deviceName);
m_serial->setBaudRate(QSerialPort::Baud9600);
m_serial->setDataBits(QSerialPort::Data8);
m_serial->setParity(QSerialPort::NoParity);
m_serial->setStopBits(QSerialPort::OneStop);
m_serial->setFlowControl(QSerialPort::NoFlowControl);
if (m_serial->open(QIODevice::ReadWrite)) {
    qDebug() << "Opened port";
} else {
    qDebug() << "Port error on open:" << m_serial->errorString();
    return;
}

并且打开工作(说“打开端口”),但错误槽立即报告:

错误编号:0,消息:“没有这样的文件或目录”

为什么会触发此错误?打开后,我可以毫无错误地写入和读取端口(不确定数据是否在流动,只是没有错误)

【问题讨论】:

    标签: c++ qt serial-port


    【解决方案1】:

    QSerialPort 错误枚举表示 0 实际上没有发生错误,可能是在打开端口时触发信号以确认没有错误。 QSerialPort 错误列表在这里:http://doc.qt.io/qt-5/qserialport.html#SerialPortError-enum

    【讨论】:

    • 我同意 - 我只是不明白为什么设计明智。既然端口开放函数返回真,为什么还要发出信号呢? (除非我遗漏了什么)
    • 这似乎是一个奇怪的决定,但我认为他们已经为连接生命周期的所有阶段构建了错误发射,并希望保证他们会得到一些回报。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多