电总协议发送/返回命令详解

直接先上手,协议、代码、工具在下面。

以最广泛的UL33后台协议V150进行分析:
发送命令:7e 31 37 30 31 32 41 43 30 45 30 30 32 30 30 46 44 31 41 0d
命令拆分:

 

序号符号表示意义字节数命令备注
1SOI起始标志位17E7E
2VER通讯协议版本号131 37版本号为1.7
3ADR设备地址描述130 31通讯地址为01
4CID1控制标识码132 412A
5CID2

命令信息:控制标识码

响应信息:返回码RTN

143 30C0
6LENGTHINFO字节长度245 30 30 32E002
7INFO

命令信息:控制数据信息

应答信息:应答数据信息
130 3000
8CHKSUM校验和码246 44 31 41通过计算工具进行计算
9EOI结束码10D0D

LENGTH 计算代码:

//@感谢冰思雨博主支持
public class LeetCode {
   private final byte chkSum;
   private final short lenId;
   public LeetCode(short value) {
       this.lenId = (short) (value & 0x0FFF);
       this.chkSum = (byte) ((~((( (value >>> 8) & 0x0F) + ((value >>> 4) & 0x0F) + (value & 0x0F)) % 16) + 1) & 0x0F);
   }
   public byte getChkSum(){
       return chkSum;
   }
   public short getLenId() {
       return lenId;
   }
   public short getValue() {
       return (short) (chkSum << 12 | lenId);
   }
   private String toBinaryString() {
       return String.format("%04d %04d %04d %04d",
               Integer.parseInt(Integer.toBinaryString(getChkSum())),
               Integer.parseInt(Integer.toBinaryString(getLenId()>>>8)),
               Integer.parseInt(Integer.toBinaryString((getLenId() >>> 4) & 0x0F)),
               Integer.parseInt(Integer.toBinaryString(getLenId() & 0x0F)));
   }
   public String toHexString() {
       return Integer.toHexString(getValue() & 0xFFFF);
   }
   @Override
   public String toString() {
       return toHexString().toUpperCase() + "H";
   }
   public static void main(String[] args) {
       LeetCode leetCode = new LeetCode(Short.parseShort("000000000010", 2));//000000000010为INFO的字节数,若为4字节则为,000000000100
       System.out.println(Integer.toBinaryString(leetCode.getChkSum()));
       System.out.println(Integer.toBinaryString(leetCode.getLenId()));
       System.out.println(leetCode.toBinaryString());
       System.out.println(leetCode);
   }
}

CHKSUM计算工具: 电总协议校验和工具(免费电总协议校验助手)V1.1绿色免费版.rar-嵌入式文档类资源-CSDN下载

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值