通过校验和的方式实现数据传输与控制,例如控制LED灯、蜂鸣器、发送数据到上位机。
由于是数据传输与控制,需要定制一个结构体、共用体方便数据识别,同时增强可读性。从数据帧格式定义中可以定义为“PKT_SUM_EX”类型。
识别数据请求什么操作可以通过以下手段来识别:识别数据头部1、数据头部2,操作码。当完全接收数据完毕后通过校验该数据得出的校验值与该数据的尾部的校验值是否匹配。
若匹配,则根据操作码的请求进行操作;若不匹配则丢弃当前数据帧,等待下一个数据帧的到来。
结构体定义:
/*使用结构体对数据包进行封装
*方便操作数据
*/
typedef struct _PKT_SUM
{
UINT8 m_ucHead1; //首部1
UINT8 m_ucHead2; //首部2
UINT8 m_ucOptCode; //操作码
UINT8 m_ucDataLength; //数据长度
UINT8 m_szDataBuf[16]; //数据
UINT8 m_ucCheckSum; //CRC16为2个字节
}PKT_SUM;
/*使用共用体再一次对数据包进行封装
*操作数据更加方便
*/
typedef union _PKT_SUM_EX
{
PKT_SUM r;
UINT8 p[32];
} PKT_SUM_EX;