package sendData; public class SendDatas { //SubnetID public int DesSubnetID; //DeviceID public int DesDeviceID; //Send additional data public byte[] AddBytes =new byte[]{}; //Source subnet addresses 0-254 public static int LocalSubnetID = 250; //source device address 0-254 public static int LocalDeviceID = 251; // Device type public static int DeviceType = 424; //opcode public int Command; public byte []GetSendBytes(){ //Data and to compute the CRC of CRC two bytes byte []crcBytes = new byte[9+this.AddBytes.length+2]; //Send out the data byte []sendBytes = new byte[2+crcBytes.length]; //Boot code sendBytes[0]=(byte)0xAA; sendBytes[1]=(byte)0xAA; //16 The length of the packet 11-78 crcBytes[0]=(byte)crcBytes.length; //17 Source subnet addresses 0-254 crcBytes[1]=(byte)LocalSubnetID; //18 source device address 0-254 crcBytes[2]=(byte)LocalDeviceID; //19 High source device type crcBytes[3]=(byte)(DeviceType/256); //20 The source device type low crcBytes[4]=(byte)(DeviceType%256); //21 Opcode high crcBytes[5]=(byte)(this.Command/256); //22 Opcode low crcBytes[6]=(byte)(this.Command%256); //23 The target subnet addresses 0-254 crcBytes[7]=(byte)this.DesSubnetID; //24 The destination address 0-254 crcBytes[8]=(byte)this.DesDeviceID; //25~n Additional data System.arraycopy(this.AddBytes, 0, crcBytes, 9, this.AddBytes.length); //Check CRC CRC.ConCRC(crcBytes, crcBytes.length-2); //Copy the CRC data to send data System.arraycopy(crcBytes, 0,sendBytes, 2, crcBytes.length); return sendBytes; } //send data public static byte []AddSendData(int command,int desSubnetID,int desDeviceID,byte []addBytes){ SendDatas sendDatas = new SendDatas(); sendDatas.Command=command; sendDatas.DesSubnetID=desSubnetID; sendDatas.DesDeviceID=desDeviceID; sendDatas.AddBytes=addBytes; byte []sendBytes = sendDatas.GetSendBytes(); return sendBytes; } }