whyclj
2021-01-05 64aba412c2b739d67795b14a3cae069d311697f9
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package com.dev.fbs9100;
 
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
 
public class FBS9100_DeviceInf {
    private final int BYTE_LEN = 144;
    
    public int DeviceName;                             //ÖÐÎÄÃû³Æ 
    public int DeviceType;                             //¹æ¸ñÐͺŠ
    public int DeviceVersion;                         //É豸°æ±¾ºÅ 
    public int HardwareVersion;                        //Ó²¼þ°æ±¾ºÅ 
    public int SoftwareVersion;                     //Èí¼þ°æ±¾ºÅ 
     
    public int MonModuleVersion;                     //µ¥Ìåĸ°å°æ±¾ 
    public int ResModuleVersion;                     //ÄÚ×èÄ£¿é°æ±¾ 
     
    public int BackUp3;                             //±£Áô 
    public int BackUp4;                                //±£Áô 
    public int BackUp5;                               //±£Áô 
    public int BackUp6;                               //±£Áô 
    public int BackUp7;                               //±£Áô 
    public int BackUp8;                               //±£Áô 
    public int BackUp9;                               //±£Áô 
    public int[] VersionStr  = new int[128];         //°æ±¾ÐÅÏ¢ÃèÊö 
     
    public int CRC = 0; 
    
    public boolean putByteBuffer(final ByteBuffer bf)
    {
        if(bf.limit() != BYTE_LEN){
            System.out.println("BYte_len  error"+bf.limit());
            return false;
        }
        ByteBuffer tmpbuf = bf;
        int crc0 = tmpbuf.getShort(BYTE_LEN-2) & 0xFFFF;
        int crc1 = FBS9100_Crc16.CalCRC16(tmpbuf, BYTE_LEN-2);
        if(crc0 != crc1){
            System.out.println("crc  error");
            return false;
        }
        tmpbuf.position(0);
        
        DeviceName = FBS9100_ComBase.changeByteToInt(tmpbuf.get());         //ÖÐÎÄÃû³Æ 
        DeviceType = FBS9100_ComBase.changeByteToInt(tmpbuf.get());         //¹æ¸ñÐͺŠ
        DeviceVersion = FBS9100_ComBase.changeByteToInt(tmpbuf.get());         //É豸°æ±¾ºÅ 
        HardwareVersion = FBS9100_ComBase.changeByteToInt(tmpbuf.get());    //Ó²¼þ°æ±¾ºÅ 
        SoftwareVersion = FBS9100_ComBase.changeByteToInt(tmpbuf.get());     //Èí¼þ°æ±¾ºÅ 
         
        MonModuleVersion = FBS9100_ComBase.changeByteToInt(tmpbuf.get());     //µ¥Ìåĸ°å°æ±¾ 
        ResModuleVersion = FBS9100_ComBase.changeByteToInt(tmpbuf.get());     //ÄÚ×èÄ£¿é°æ±¾ 
         
        BackUp3 = FBS9100_ComBase.changeByteToInt(tmpbuf.get());             //±£Áô 
        BackUp4 = FBS9100_ComBase.changeByteToInt(tmpbuf.get());            //±£Áô 
        BackUp5 = FBS9100_ComBase.changeByteToInt(tmpbuf.get());               //±£Áô 
        BackUp6 = FBS9100_ComBase.changeByteToInt(tmpbuf.get());               //±£Áô 
        BackUp7 = FBS9100_ComBase.changeByteToInt(tmpbuf.get());               //±£Áô 
        BackUp8 = FBS9100_ComBase.changeByteToInt(tmpbuf.get());               //±£Áô 
        BackUp9 = FBS9100_ComBase.changeByteToInt(tmpbuf.get());               //±£Áô 
        for(int i = 0;i < VersionStr.length;i++){
            VersionStr[i] = FBS9100_ComBase.changeByteToInt(tmpbuf.get());  //°æ±¾ÐÅÏ¢ÃèÊö
        }
        tmpbuf.compact();
        tmpbuf.flip();
        
        return true;
    }
    
    public ByteBuffer getByteBuffer()
    {
        ByteBuffer bytebuffer = ByteBuffer.allocate(BYTE_LEN);
        bytebuffer.order(ByteOrder.LITTLE_ENDIAN);
        
        bytebuffer.put(FBS9100_ComBase.changeIntToByte(DeviceName));             //ÖÐÎÄÃû³Æ 
        bytebuffer.put(FBS9100_ComBase.changeIntToByte(DeviceType));             //¹æ¸ñÐͺŠ
        bytebuffer.put(FBS9100_ComBase.changeIntToByte(DeviceVersion));         //É豸°æ±¾ºÅ 
        bytebuffer.put(FBS9100_ComBase.changeIntToByte(HardwareVersion));         //Ó²¼þ°æ±¾ºÅ 
        bytebuffer.put(FBS9100_ComBase.changeIntToByte(SoftwareVersion));         //Èí¼þ°æ±¾ºÅ 
        bytebuffer.put(FBS9100_ComBase.changeIntToByte(MonModuleVersion));         //µ¥Ìåĸ°å°æ±¾ 
        bytebuffer.put(FBS9100_ComBase.changeIntToByte(ResModuleVersion));         //ÄÚ×èÄ£¿é°æ±¾ 
        
        bytebuffer.put(FBS9100_ComBase.changeIntToByte(BackUp3));                 //±£Áô
        bytebuffer.put(FBS9100_ComBase.changeIntToByte(BackUp4));                 //±£Áô
        bytebuffer.put(FBS9100_ComBase.changeIntToByte(BackUp5));                 //±£Áô
        bytebuffer.put(FBS9100_ComBase.changeIntToByte(BackUp6));                 //±£Áô
        bytebuffer.put(FBS9100_ComBase.changeIntToByte(BackUp7));                 //±£Áô
        bytebuffer.put(FBS9100_ComBase.changeIntToByte(BackUp8));                 //±£Áô
        bytebuffer.put(FBS9100_ComBase.changeIntToByte(BackUp9));                 //±£Áô
    
        for(int i = 0;i < VersionStr.length;i++){
            bytebuffer.put(FBS9100_ComBase.changeIntToByte(VersionStr[i]));     //°æ±¾ÐÅÏ¢ÃèÊö
        }
        
        CRC = FBS9100_Crc16.CalCRC16(bytebuffer, bytebuffer.position());
        bytebuffer.putShort(FBS9100_ComBase.changeIntToShort(CRC));
        
        bytebuffer.flip();
        System.out.println(bytebuffer.limit());
        return bytebuffer;
    }
    
    
    
    
    @Override
    public String toString() {
        return "FBS9100_DeviceInf [BYTE_LEN=" + BYTE_LEN + ", DeviceName=" + DeviceName + ", DeviceType=" + DeviceType
                + ", DeviceVersion=" + DeviceVersion + ", HardwareVersion=" + HardwareVersion + ", SoftwareVersion="
                + SoftwareVersion + ", MonModuleVersion=" + MonModuleVersion + ", ResModuleVersion=" + ResModuleVersion
                + ", BackUp3=" + BackUp3 + ", BackUp4=" + BackUp4 + ", BackUp5=" + BackUp5 + ", BackUp6=" + BackUp6
                + ", BackUp7=" + BackUp7 + ", BackUp8=" + BackUp8 + ", BackUp9=" + BackUp9 + ", CRC=" + CRC + "]";
    }
 
    public static void main(String[] args) {
        FBS9100_DeviceInf f1 =new FBS9100_DeviceInf();
        f1.BackUp3 = 91;
        f1.BackUp4 = 12;
        f1.BackUp5 = 23;
        f1.BackUp6 = 45;
        
        FBS9100_DeviceInf f2 =new FBS9100_DeviceInf();
        System.out.println(f2.putByteBuffer(f1.getByteBuffer()));
        System.out.println(f2);
    }
}