1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.dy.common.mw.protocol.p206V1_0_0.parse.global;
 
import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.ByteUtilUnsigned;
import com.dy.common.util.CRC8_for_2_0;
import com.dy.common.util.DateTime;
 
public class GlCreate {
 
    public static void createRtuAddr(String rtuAddr, byte[] bs, int index) throws Exception {
        String rtuAddr1 = rtuAddr.substring(0, 6) ;
        String rtuAddr2 = rtuAddr.substring(6) ;
 
        index++ ;
        ByteUtil.string2BCD_BE(bs, rtuAddr1, index) ;
        index += 3 ;
 
        Integer rtuAddr2Int = Integer.parseInt(rtuAddr2) ;
        ByteUtilUnsigned.short2Bytes_BE(bs, rtuAddr2Int.shortValue(), index);
    }
 
    public static void createTp(byte[] bs, int index) throws Exception {
        ByteUtil.string2BCD_BE(bs, DateTime.yyMMddhhmmss(), index) ;
    }
 
    public static void createLen(byte[] bs) throws Exception {
        int len = bs.length + ProtocolConstantV206V1_0_0.lenTail;
        bs[ProtocolConstantV206V1_0_0.dataLenIndex] = (byte)len ;
    }
 
    public static byte[] createCrcTail(byte[] bs) throws Exception {
        int crc = new CRC8_for_2_0().CRC8(bs, ProtocolConstantV206V1_0_0.ctrlIndex, bs.length -1) ;
        bs = new byte[ProtocolConstantV206V1_0_0.lenTail] ;
        bs[0] = (byte)crc ;
        bs[1] = ProtocolConstantV206V1_0_0.P_Tail_Byte ;
        return ByteUtil.bytesMerge(bs, bs) ;
    }
}