共用体与通信协议
经常会遇到这种协议:

就是每一位代表一个状态,
比如:
接收的是0x01代表温度故障,二进制是 0000 0001
0x02代表湿度故障,二进制是 0000 0010
0x03代表温度/湿度都故障,二进制是 0000 0011
.......

针对上面这种协议,可以利用共用体和位域编写.
下面讲解共用体, 位域的知识:


例如:
union data
{
int i;
char ch;
float f;
}
上面的 i,ch,f都公用的一段内存,如果改变其中的一个,另外的两个变量也会有相同的变化.


通过上面位域和公用体的讲解,大致了解了这里的特性.
可以通过他们的特性,进行协议的编写.
比如:
先建立一个结构体:(是利用了位域的)

然后再建立一个共用体

这样all和bit两个变量就被联合在一起了.
也就是我给all赋值,然后bit就会有改变.
这样我在接收到协议后,给all赋值,就直接可以去查看bit的相应位,得到某个器件是否发生故障了.