有个问题没搞明白。如果通过LAB 控制开发板,假设命令格式化,如:
引导码-长度(改条命令的总长度)-命令码-参数1,参数2,3,4,校验码;
假设,通过LAB发一条命令控制板子的4个LED的开关:
40(引导码) 08(len) 01(cmd) 00(LED1关) 01(LED2开) 00(LED3关) 01(LED4开) xx(校验);
STM32收到这条命令,解析后控制相应LED的开关,同时返回应答信号;
此时返回信号两种状态:ST32正常执行后的返回结果,如下:
80(引导码改变) 08(len) 01(cmd) 00(LED1关) 01(LED2开) 00(LED3关) 01(LED4开) xx(校验)
LAB这边,解析这样的数据包,并在界面显示结果呢?希望LAB先判断80,如果数据包第一字节是则继续解析,否则放弃,然后根据长度继续读取返回的数据包,此时数据包长度为8,则继续读取8-2个字节数据即再读6个字节数据后,说明该数据包读取完毕;然后解析数据包,如果是01,则知道是点灯命令,并根据后面4个LED的值(0或1),给界面上的4个指示灯做点亮或灭灯的效果;
ST32执行失败情况:
即返回的数据包第一个字节不是80,则认为该条命令包没有正确执行,同上面的方式一样,根据长度读取数据包,并根据返回的错误码,在界面提示错误码,且不对LED灯做任何状态更新