欢迎光临散文网 会员登陆 & 注册

共用体与通信协议

2021-06-07 17:37 作者:GXTon_阿通  | 我要投稿

经常会遇到这种协议:

就是每一位代表一个状态,

比如:

接收的是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的相应位,得到某个器件是否发生故障了.

共用体与通信协议的评论 (共 条)

分享到微博请遵守国家法律