NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

数据包格式解析 请教

有个问题没搞明白。如果通过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灯做任何状态更新

0 项奖励
1 条消息(共 3 条)
2,206 次查看

Hi,

在界面上用LED灯实时显示STM32点灯的效果,可以直接在发送点灯指令的时候,在程序中给相应的灯赋真假值(使用条件结构),即可实现。

0 项奖励
2 条消息(共 3 条)
2,160 次查看

应该说我的问题是想通过串口来收发数据包来控制,或者说,如何基于串口通信的方式,实现描述的功能。

要用状态机?

 

0 项奖励
3 条消息(共 3 条)
2,135 次查看