QSerialPort的readyRead()信号,只要有数据就抛出,这就导致一条数据分多次抛出。由于我使用的串口接收数据没有固定的开头和结尾,这就导致无法获取正常的一组数据 我所使用的串口设备: 解决思路:增加接收延时功能,把多次读取的数据保存到缓冲区,延时结束,一次性读取数据 由于QSerialPort没有提供串口接收延时功能,需要用到QTimer: 需要先创建timer对象。 然后定时器结束会触发timeout信号,执行serialRead()槽函数 执行结果: 本示例只解决问题而展示的代码,前面串口设置相关代码可自行百度。