java解析云快充协议(bit位解析)

       本着重复的问题老是被问,在此记录一下,以后就这看里吧。

 java 如何解析bit?

   文档要求如下:

设备上传数据:

这里说明一下:收到的0x0200对应的是图中的18 硬件故障部分

十六进制 0x0200(小端式)第1位字节 0x02

十六进制 0x02转换成bin码对应0000 0010

  • bit1 是最右边的位,对应二进制的最低位,值为 0
  • bit2 是右数第二位,对应二进制的第二低位,值为 1

按文档描述是从bit1开始:

                    bit1 :急停按钮动作故障;

                    bit2 :无可用整流模块;

 所以这里上传是 代表的是 bit2 :无可用整流模块  有故障,而不是    bit1 :急停按钮动作故障;

java代码按位解析实现代码:

//硬件故障
        byte[] aHardwareFailureBytes = new byte[2];
        System.arraycopy(data, position, aHardwareFailureBytes, 0, 2);
        out("硬件故障:" + HexTool.bytesToHexString(aHardwareFailureBytes));
        //Bit 位表示(0 否 1 是),低位到高位顺序
        //Bit1:急停按钮动作故障;
        //Bit2:无可用整流模块;
        //Bit3:出风口温度过高;
        //Bit4:交流防雷故障;
        //Bit5:交直流模块 DC20 通信中断;
        //Bit6:绝缘检测模块 FC08 通信中断;
        //Bit7:电度表通信中断;
        //Bit8:读卡器通信中断;
        //Bit9:RC10 通信中断;
        //Bit10:风扇调速板故障;
        //Bit11:直流熔断器故障;
        //Bit12:高压接触器故障;
        //Bit13:门打开;
        byte bb1 = aHardwareFailureBytes[0];
        byte bb2 = aHardwareFailureBytes[1];


        int b1 = (bb1 >> 0) & 1;
        int b2 = (bb1 >> 1) & 1;
        int b3 = (bb1 >> 2) & 1;
        int b4 = (bb1 >> 3) & 1;
        int b5 = (bb1 >> 4) & 1;
        int b6 = (bb1 >> 5) & 1;
        int b7 = (bb1 >> 6) & 1;
        int b8 = (bb1 >> 7) & 1;
        int b9 = (bb2 >> 0) & 1;
        int b10 = (bb2 >> 1) & 1;
        int b11 = (bb2 >> 2) & 1;
        int b12 = (bb2 >> 3) & 1;
        int b13 = (bb2 >> 4) & 1;

    代码里的 b1-b13 之间就是对应文档上的 bit1-bit13

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qyhua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值