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