我有一个使用串行输入的程序。它安装在Win7和Win10的很多机器上。在某些机器上我有一个奇怪的问题,一开始打开串口时它会读取奇怪/不正确的值,大多数是0xff。当我关闭端口并重新打开它时,它可以正常工作。
m_port = new QSerialPort( info ); // some info from QSerialPortInfo::availablePorts();
if( m_port->open( QIODevice::ReadOnly ) )
{
m_port->setBaudRate( m_baudRate );
m_port->setDataBits( m_dataBits );
m_port->setParity( m_parity );
m_port->setStopBits( m_stopBits );
m_port->setFlowControl( QSerialPort::FlowControl::HardwareControl );
m_port->clear();
}
}
所以,我很幸运,它在90%的安装中工作,并且缺少一些明确的设置,或者它可能是Qt中的错误? (5.6.0 msvc 2013)
答案 0 :(得分:3)
此处的问题很可能是您在打开后在串口上设置设置。因此,您的设置可能处于奇怪状态的一小段时间。它是第二次打开端口时工作,因为从第一次打开端口时设置已正确设置。
QSerialPort
将在调用open
时应用串口设置。
m_port = new QSerialPort( info ); // some info from QSerialPortInfo::availablePorts();
m_port->setBaudRate( m_baudRate );
m_port->setDataBits( m_dataBits );
m_port->setParity( m_parity );
m_port->setStopBits( m_stopBits );
m_port->setFlowControl( QSerialPort::FlowControl::HardwareControl );
if( m_port->open( QIODevice::ReadOnly ) )
{
m_port->clear();
}