DELL
2025-04-28 e6eb7fb0af366e370f125668d62e89eb0004f517
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
package com.dev.dummyload.data;
 
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
 
import com.ComBase;
import com.Crc16;
 
public class DummyLoad_Cmd {
public final int BYTE_LEN = 8;
 
    public int SYNCode[] = {0xAA, 0xAA};    //ͬ²½Âë
    private int ByteLength;                    //Êý¾Ý×ܳ¤¶È
    public int TargetAddr;                    //Ä¿±êÉ豸µØÖ·
    public int CMD;                            //²Ù×÷ÃüÁî×Ö½Ú
    public int ResState;                    //½á¹û״̬[1-³É¹¦]
    
    private int CRC;
    
    public void DummyLoad_Cmd()
    {
    }
    
    public void makeCmd(int TargetAddr, int CMD)
    {
        this.TargetAddr = TargetAddr;
        this.CMD = CMD;
    }
    
    public boolean putByteBuffer(final ByteBuffer bf)
    {
        if(bf.limit() < BYTE_LEN)
            return false;
 
        ByteBuffer tmpbuf = bf;
        int crc0 = tmpbuf.getShort(6) & 0xFFFF; 
        tmpbuf.putShort(6, (short)0);
        
        int crc1 = Crc16.CalCRC16(tmpbuf, bf.limit()) & 0xFFFF;
        if(crc0 != crc1) {
            System.err.println("CRC error  "+crc0+"==="+crc1);
            return false;
        }
        tmpbuf.position(0);
        
        for(int i =0;i<SYNCode.length;i++) {
            SYNCode[i] = ComBase.changeByteToInt(tmpbuf.get());            //ͬ²½Âë
        }
        
        ByteLength = ComBase.changeByteToInt(tmpbuf.get());                    //Êý¾Ý×ܳ¤¶È
        TargetAddr = ComBase.changeByteToInt(tmpbuf.get());                    //Ä¿±êÉ豸µØÖ·
        CMD = ComBase.changeByteToInt(tmpbuf.get());                        //²Ù×÷ÃüÁî×Ö½Ú
        ResState = ComBase.changeByteToInt(tmpbuf.get());                    //½á¹û״̬[1-³É¹¦]
        
        tmpbuf.compact();
        tmpbuf.flip();
        
        return true;
    }
    
    
    public ByteBuffer getControlByteBuffer()
    {
        ByteBuffer bytebuffer = ByteBuffer.allocate(2);
        bytebuffer.order(ByteOrder.BIG_ENDIAN);
        
        bytebuffer.putShort(ComBase.changeIntToShort(1));
        
        bytebuffer.flip();
        return bytebuffer;
    }
    
    public ByteBuffer makeByteBuffer(int value)
    {
        ByteBuffer bytebuffer = ByteBuffer.allocate(2);
        bytebuffer.order(ByteOrder.BIG_ENDIAN);
        
        bytebuffer.putShort(ComBase.changeIntToShort(value));
        
        bytebuffer.flip();
        return bytebuffer;
    }
    public ByteBuffer makeByteBuffer(float value)
    {
        ByteBuffer bytebuffer = ByteBuffer.allocate(2);
        bytebuffer.order(ByteOrder.BIG_ENDIAN);
        
        bytebuffer.putShort(ComBase.changeFloatToShortSigned(value));
        
        bytebuffer.flip();
        return bytebuffer;
    }
    
    public ByteBuffer makeFbs9100CommBuf(ByteBuffer dt_datatofbs9100) {
        ByteBuffer bytebuffer = ByteBuffer.allocate(dt_datatofbs9100.limit()+BYTE_LEN);
        bytebuffer.order(ByteOrder.BIG_ENDIAN);        
        bytebuffer.position(0);
        
        for(int n = 0;n<SYNCode.length;n++) {
            bytebuffer.put(ComBase.changeIntToByte(SYNCode[n]));
        }
        
        ByteLength = bytebuffer.capacity();
        bytebuffer.put(ComBase.changeIntToByte(ByteLength));
        
        bytebuffer.put(ComBase.changeIntToByte(TargetAddr) );
        bytebuffer.put(ComBase.changeIntToByte(CMD));
        bytebuffer.put(ComBase.changeIntToByte(ResState));
        bytebuffer.putShort(ComBase.changeIntToShort(CRC));
        bytebuffer.put(dt_datatofbs9100);
            
        
        //¼ÆËãCRC
        CRC = Crc16.CalCRC16(bytebuffer, ByteLength) & 0xFFFF;
        bytebuffer.putShort(6,ComBase.changeIntToShort(CRC));
        
        bytebuffer.flip();
        return bytebuffer;
    } 
    
    
}