使用QSerialPort的readAll函数读取串口数据不准确

代码如下:
QByteArray byte_data = serial->readAll();
qDebug() << byte_data;
打印结果取一部分如下:
"\xAA\x01\x00\b\x16\x84\x04\x03""E\x00\xFF\x12\x00\x00\xF2\x02"
我用串口助手收到的部分数据如下:
AA 01 00 08 16 84 04 03 E4 15 FF 12 00 00 F2 02

        后面八位是数据可以不用理会,但是前八位报文格式是有要求的,前八位应该是串口助手打印的那样,但是我用readAll函数打印出来就成那样了。
        求各路大佬帮忙,不胜感激,谢谢。

这是qserialport的机制问题, readall读出来的长度不是稳定的,不能一次全读出来,如果内容过长会分批读取,解决方案只能定义好数据的格式,统一按照格式组合。

还有一种不是办法的办法就是,在read里延时,等待数据完全读到buff里之后再readall()

看看是否是发送端发送有间隔,如果是一股脑发过来的,而且接收方的缓冲区够用的,应该是全部读出来的。可能是qserialport 把他人为分成2个包