背景:最近瞎看Qt的东西,然后试了一下Qt自带的串口类。遇到的问题是用串口类始终接收不到数据,但是能发送数据,而且通过其它串口调试助手或者示波器都确认串口硬件没问题。
最后解决问题,并找出问题的原因。详细的过程已经在测试代码注释中标出了经过和原因。对QT的事件机制只有初步概念,不太理解。
/********************************************************************************************************
* 串口接收不到数据的问题,根据邮件列表解决了: https://www.mail-archive.com/interest@qt-project.org/msg08724.html
* 1,建议不要在单线程用阻塞读写操作。2,必须用waitForReadyXX(),否则启动不了QT的EventLoop,进而串口也不工作,接收不到数据?
* 总之,感觉QT的串口还不是很稳定,QT5.1才刚加入QSerialPort类
* 2,进阶学习:查看帮助文档中QCoreApplication的exec(),有这么一句,说明通常的QT的GUI程序中,main()程序的最后通过调用QApplication.exec()
* 进入事件循环,非GUI中一般通过QCoreApplication进入事件循环。而进入了Event Loop后,才能和OS交互,接收OS的事件,
* 但是一旦进入此循环相当于阻塞了其它操作。
* It is necessary to call this function to start event handling.
* The main event loop receives events from the windo