DLT645校验位

5 篇文章 0 订阅
3 篇文章 0 订阅

 

DLT645检验位是把检验位之前的所有16进制接起来去最后两位数

/**
 * DLT645校验码
 */
public class DLT655 {

    public static String makeCheck(String data) {

        if (data == null || data.equals("")) {
            return "";
        }
        int total = 0;
        int len = data.length();
        int num = 0;
        while (num < len) {
            String s = data.substring(num, num + 2);
            total += Integer.parseInt(s, 16);
            num = num + 2;
        }
        /**
         * 用256求余最大是255,即16进制的FF
         */
        int mod = total % 256;
        String hex = Integer.toHexString(mod);
        len = hex.length();
        // 如果不够校验位的长度,补0,这里用的是两位校验
        if (len < 2) {
            hex = "0" + hex;
        }
        return hex.toUpperCase()+"16";
    }

}

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: DLT645协议是国内常见的一种数据通信协议,主要用于电能表、水表等仪表的数据传输。在DLT645协议中,每个数据帧都需要附带校验码CS进行校验,以确保传输数据的准确性。 校验码CS是数据帧中的一个字节,它是根据数据帧中除校验码以外的所有数据进行计算得出的。计算公式为:校验码CS = 求和(除校验码以外的所有数据)% 256,其中“%”表示取余符号。 在计算过程中,需要注意的是计算的结果应为一个字节,即取值范围在0-255之间,如果计算结果大于255,则应对该结果进行模256的操作,以保证结果在一个字节的取值范围内。 校验码CS的作用是判断数据帧的传输是否有误。当接收方接收到数据帧后,会对数据帧进行计算校验码CS,如果计算结果与接收到的校验码相同,则说明数据传输正确无误;如果计算结果与接收到的校验码不同,则说明数据传输中存在错误,需要进行重新传输或其他处理。 因此,校验码CS可以有效地保证DLT645协议数据的传输准确性,提高数据传输的可靠性和稳定性,有利于仪表监测和数据管理的正常运行。 ### 回答2: dlt645 校验码 cs (Checksum)是数字电能表中用于验证数据传输的校验码。在数据传输过程中,经常会发生数据丢失、数据错乱等情况,为了防止这些情况发生,需要在传输数据时进行校验dlt645 校验码 cs 就是对传输数据进行校验的一种方式。 在dlt645协议中,数据包的结构主要由头部和数据区组成。其中,头部包含了一些必须的信息,如控制码、地址码等等,数据区则包含了具体的数据信息。dlt645 校验码 cs就是针对数据区的内容进行计算得到的。 计算dlt645 校验码 cs 的方法很简单,即将数据区中所有的字节进行累加,然后取其结果的低8位,即为校验码cs。比如,如果数据区中的4个字节分别为a、b、c、d,则dlt645 校验码cs的计算公式为:(a+b+c+d) mod 256。 如果数据传输过程中计算得到的校验码cs与传输时携带的校验码不一致,则说明传输过程中存在错误。此时,接收方需要重新请求发送数据,以确保数据传输的正确性。 总之,dlt645 校验码 cs是数字电能表中非常重要的校验方式之一,不仅能够保证数据传输的正确性,还能够提高数据传输的速度和效率。因此,在使用dlt645协议进行数据通信时,必须对校验码cs进行正确的计算和验证。 ### 回答3: DLT645协议是中国国家电力公司推广的一种统一的电表通信协议,它有三种不同的格式:DLT645-1997、DLT645-2007和DLT645-2018。在这些格式中,都包含了一个重要的元素——校验码。校验码(Checksum,简称CS)是用于校验数据传输过程中是否出现传输错误的一种检验和算法。 在DLT645协议中,我们可以通过计算位于数据帧末尾的校验码来验证数据的正确性。校验码的计算方法是将数据帧中所有字节进行加和运算(不包含起始符、结束符和校验码本身),并将结果取反,再加1即可得到校验码。例如,一个数据帧是:68 41 14 23 37 32 00 00 5E 16,不包含起始符、结束符和校验码,那么它的校验码计算方法如下: 41+14+23+37+32+00+00=147 147取反后为:-148 -148加1后为:0x8C 因此,这个数据帧的校验码就是0x8C。 通过校验码的验证,我们可以确保接收到的数据是完整和正确的。如果校验码不正确,就意味着这个数据帧存在传输错误。此时,接收端应该返回nak(Negative acknowledge)指令,让发送端重新发送这个数据帧。因此,校验码对于DLT645协议通讯的稳定性和正确性非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值