gpt4 book ai didi

c++ - QSerialPort 仅在第二次打开后才能正确读取

转载 作者:行者123 更新时间:2023-11-27 23:59:34 25 4
gpt4 key购买 nike

我有一个使用串行输入的程序。它安装在相当多的 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)

最佳答案

这里的问题很可能是您在打开串行端口之后对其进行了设置。因此,有一小段时间您的设置可能会处于异常状态。它在您第二次打开端口时起作用,因为从您第一次打开端口时就已经正确设置了设置。

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();
}

关于c++ - QSerialPort 仅在第二次打开后才能正确读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40160644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com