qt 串口未打开
Posted
技术标签:
【中文标题】qt 串口未打开【英文标题】:qt Serial Port Not Opening 【发布时间】:2015-03-08 13:40:26 【问题描述】:我正在尝试写入串行端口打印机。我使用 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
有人可以帮助了解为什么会发生这种情况吗?我的电脑中的驱动程序有什么问题。当我尝试测试打印时,从 Windows 中它工作正常..
【问题讨论】:
【参考方案1】:如果我没记错的话,需要在打开端口后设置端口参数:
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);
你应该切换到asyncio
,因为 QtSerialPort 有许多其他问题你可能会遇到......
【讨论】:
在Qt 5.4中改变了。我们应该在打开端口之前设置。 link以上是关于qt 串口未打开的主要内容,如果未能解决你的问题,请参考以下文章