最近由于通过串口向下位机发送参数,需要将原来异步接收下位机数据的方式在参数下发时改成同步,为了解决由于参数反馈数据较小导致经常无法正常收到数据的问题,故将串口的缓冲区大小设置成了64。参数下发功能正常测试通过。
后续。。。
后面在使用过程中发现,当设置完参数后,若是有下位机有大量的数据吐出时,正常输出20s左右后会出现接收异常的问题,检查发现收到的数据不再是完整的包了,而且会导致串口线程卡死,串口无法重启,只能重启程序或者重启串口处理线程。
后来分析发现,这个是由于串口缓冲区设置太小,正常数据的数据量比较大,导致大量数据丢失,上位机无法完成读取到,重新将串口缓冲区设置为0,即默认的无限制后问题解决。
m_serialPort->setReadBufferSize(0);