使用substring提取串口输入缓冲区数据时报错

通过串口接收数据帧,想当收到一帧数据后触发读串口事件,然后使用substring将数据帧进行解析。

问题出现了,收到足够数据后触发读取事件的时候,单步执行可以顺利提取数据帧中的数据,但是当直接运行时就会在substring函数处报错,说截取的数据位数超过数据范围。

多方查找,应该是没有能够读取完整的数据帧的缘故。想可以通过检测读取了完整的数据后再提取,或者就在触发读取数据操作后先睡上一会然后再去寄存器取数据。加了个sleep后果然可以正常运行,看来确实需要点反应时间。

原文地址:https://www.cnblogs.com/aerkate/p/2206669.html