[英]qt Serial Port Not Opening
我正在尝试写入串行端口打印机。 我使用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尝试测试打印时,效果很好。
如果我没记错的话,则需要在打开端口后设置端口参数:
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可能还会遇到许多其他问题……
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.