作者在使用QT开发上位机软件与STM32单片机进行串口通信时,发现上位机软件串口打开后长时间发收数据,偶尔突然出现上位机一直发送数据到单片机,但QSerialPort::readyRead信号不发射,在发送后等待时间到达后,直接使用QSerialPort::readAll()读出来数据也是空的。使用的电脑系统是Win11,串口驱动试过系统自带USB串行设备驱动和ST官网下载的VCP串口驱动,问题依然存在。
问题现象重点描述:在发送数据后,等待自己设定的一段时间后仍然收不到数据,说明串口中没有数据可读。再继续下发,也是同样的现象,串口中一直没有数据可读。
解决办法:到达设定等待时间后没获取到串口数据,调用QSerialPort::close()和QSerialPort::open()重新打开串口,后面再继续下发就可正常收到串口回复数据。