0

シリアルポートプリンターに書き込もうとしています。Qt5.4 と以下のコードを使用します。

bool SerialPortWriter::openPort(QString portName, QSerialPort::BaudRate actualBaudRate)
{
    qDebug() << Q_FUNC_INFO << "Invoked";
    bool open = false;

    if (NULL != m_pSerialPort)
    {
        qDebug() << Q_FUNC_INFO << "set name & params";
        m_pSerialPort->setPortName(portName);
        qDebug() << Q_FUNC_INFO << "set baudrate:" <<
                    m_pSerialPort->setBaudRate(actualBaudRate);
        qDebug() << Q_FUNC_INFO << "set databits:" <<
                    m_pSerialPort->setDataBits(QSerialPort::Data8);
        qDebug() << Q_FUNC_INFO << "set parity:" <<
                    m_pSerialPort->setParity(QSerialPort::NoParity);
        qDebug() << Q_FUNC_INFO << "set stopbits:" <<
                    m_pSerialPort->setStopBits(QSerialPort::OneStop);
        qDebug() << Q_FUNC_INFO << "set flow contrl:" <<
                    m_pSerialPort->setFlowControl(QSerialPort::HardwareControl);
        open = m_pSerialPort->open(QIODevice::WriteOnly);
    }

    qDebug() << Q_FUNC_INFO << "Exits" << open;
    return open;
}

void SerialPortWriter::handleErrorOccurance(QSerialPort::SerialPortError error)
{
    qDebug() << Q_FUNC_INFO << "Invoked";

    qDebug() << Q_FUNC_INFO << m_pSerialPort->errorString();
    qDebug() << Q_FUNC_INFO << m_pSerialPort->error();

    if (error == QSerialPort::WriteError)
    {
        qDebug(qPrintable(m_pSerialPort->errorString()));
        qDebug() << Q_FUNC_INFO << m_pSerialPort->error();
    }
}

エラーが発生します:

void SerialPortWriter::handleErrorOccurance(QSerialPort::SerialPortError) Invoked
void SerialPortWriter::handleErrorOccurance(QSerialPort::SerialPortError) "Incorrect function."
void SerialPortWriter::handleErrorOccurance(QSerialPort::SerialPortError) 11
bool SerialPortWriter::openPort(QString, QSerialPort::BaudRate) Exits false

誰かがなぜこれが起こるのかを知るのを助けることができますか? 私のPCにはドライバーが入っていますか?Windowsから印刷をテストしようとすると、正常に動作します..

4

1 に答える 1

0

私の記憶が正しければ、ポートを開いた後にポート パラメータを設定する必要があります。

    open = m_pSerialPort->open(QIODevice::WriteOnly);
    m_pSerialPort->setPortName(portName);
    qDebug() << Q_FUNC_INFO << "set baudrate:" <<
                m_pSerialPort->setBaudRate(actualBaudRate);
    qDebug() << Q_FUNC_INFO << "set databits:" <<
                m_pSerialPort->setDataBits(QSerialPort::Data8);
    qDebug() << Q_FUNC_INFO << "set parity:" <<
                m_pSerialPort->setParity(QSerialPort::NoParity);
    qDebug() << Q_FUNC_INFO << "set stopbits:" <<
                m_pSerialPort->setStopBits(QSerialPort::OneStop);
    qDebug() << Q_FUNC_INFO << "set flow contrl:" <<
                m_pSerialPort->setFlowControl(QSerialPort::HardwareControl);

asyncioQtSerialPort には他にも多くの問題が発生する可能性がある ため、に切り替える必要があります…</p>

于 2015-03-08T13:44:08.813 に答える