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;
}
}