文章预览
前阵子一朋友使用单片机与某外设进行通信时,外设返回的是一堆格式如下的数据: AA AA 04 80 02 00 02 7B AA AA 04 80 02 00 08 75 AA AA 04 80 02 00 9B E2 AA AA 04 80 02 00 F6 87 AA AA 04 80 02 00 EC 91 其中 AA AA 04 80 02 是数据校验头,后面三位是有效数据,问我怎么从外设不断返回的数据中取出有效的数据。 对于这种问题最容易想到的就是使用一个标志位用于标志当前正解析到一帧数据的第几位,然后判断当前接收的数据是否与校验数据一致,如果一致则将标志位加一,否则将标志位置0重新判断,使用这种方法解析数据的代码如下: if (flag == 0 ) { if (tempData == 0xAA ) flag++; else flag = 0 ; } else if (flag == 1 ) { if (tempData == 0xAA ) flag++; else flag = 0 ; } else if (flag == 2 ) { if (tempData == 0x04 ) flag++; else flag = 0 ; } else if (flag == 3 ) { if (tempData == 0x80 ) flag++; else f
………………………………