本帖最后由 心升明月 于 2018-6-6 10:27 编辑
结构体C程序中在STM32单片机串口接收的妙用之一
结构体是一种数据的归类方式,相比数组或变量更具有整体全面性,例如一个数组只可以放一些按照元素顺序存放的单元变量,即tab={x,x,x,x,x......},i有多大,数组内元素就有多少.那么我们这时候如果我们用这个数组来接收串口接收信息,信息的格式是:数据头>数据长度>数据区>数据校验>数据尾.
假设数据区为
那么我们用数组接收时,提取数据时就需要计算出数据格式中每个单元所对应的位置,即数组中第i个元素对应的内容.这样显然是很麻烦的,效率很低.这就相当于先织了一个大网,捕捉到一网鱼,还得过下称,才能按照重量分类开来一样.
那么如果我们能提前根据接收的数据的格式来做一个容器,直接把接收的数据复制到这个容器内,岂不是省了好大劲,来,有个好东西,这就是结构体.
我们按照接收数据的格式顺序定义一个结构体如下:
typedef struct
{
u8 head; //数据头
u16 dataLen; //数据长度值
u8 height; //身高
u8 weight; //体重
u8 sex; //性别
u8 age; //年龄
u8 education; //学历
u8 checksum; //校验和
u8 endmark; //结束字节
} RecData;
RecData userData;
结构体已经定义好了,接下来我们就将串口接收的数据复制到这个结构体userData里面.</