Administrator
2021-08-09 92aad2bdb3fc2552dfc199801c32b8bd9bb61472
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
126
127
128
129
130
package com.dev.btse.data;
 
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[] MCU_ID  = new int[4];                 //MCUΨһID
    public int[] VersionStr  = new int[112];         //°æ±¾ÐÅÏ¢ÃèÊö 
     
    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<MCU_ID.length; i++) {
            MCU_ID[i] = tmpbuf.getInt();                                      //MCU_ID
        }
        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);
    }
}