package com.dev.btse.comm;
|
|
import java.nio.ByteBuffer;
|
import java.nio.ByteOrder;
|
|
import com.dev.btse.data.ComFn;
|
import com.dev.btse.data.FBS9100_ComBase;
|
import com.dev.btse.data.FBS9100_Crc16;
|
|
public class FBS9100S_FOD_Param {
|
public final static int DevFOD_DataLen = 56;
|
public final static int DevFOD_Len = 14;
|
|
public int dev_id; //É豸id
|
public int op_cmd;
|
public int test_cmd; //²âÊÔÀàÐÍ
|
|
public FOD_Param[] fodParam = new FOD_Param[4];
|
public int GroupNum; //ÉèÖÃ×éºÅ
|
|
public FBS9100S_FOD_Param() {
|
for(int i=0;i<fodParam.length;i++) {
|
FOD_Param param = new FOD_Param();
|
param.GroupNum = i+1;
|
fodParam[i] = param;
|
}
|
}
|
|
|
public FBS9100S_FOD_Param clone(){
|
FBS9100S_FOD_Param param = new FBS9100S_FOD_Param();
|
param.dev_id = this.dev_id;
|
param.op_cmd = this.op_cmd;
|
param.test_cmd = this.test_cmd;
|
fodParam = this.fodParam.clone();
|
return param;
|
}
|
|
public boolean putByteBuffer(final ByteBuffer bf)
|
{
|
boolean flag = true;
|
//System.out.println(ComFn.bytesToHexString(bf.array(), bf.array().length));
|
if(bf.limit() < DevFOD_DataLen)
|
return false;
|
|
ByteBuffer tmpbuf = bf;
|
/*int crc0 = tmpbuf.getShort(DevFOD_DataLen-2) & 0xFFFF;
|
int crc1 = FBS9100_Crc16.CalCRC16(tmpbuf, DevFOD_DataLen-2);
|
if(crc0 != crc1) {
|
return false;
|
}*/
|
tmpbuf.position(0);
|
for(int i = 0;i<fodParam.length ;i++) {
|
tmpbuf.position(0);
|
int crc1 = FBS9100_Crc16.CalCRC16(tmpbuf, 12);
|
fodParam[i].CRC = tmpbuf.getShort(12)&0xFFFF;
|
|
tmpbuf.position(0);
|
//System.err.println(crc1+"===="+fodParam[i].CRC);
|
if(crc1 != fodParam[i].CRC) {
|
flag = flag && false;
|
tmpbuf.position(14);
|
}else {
|
fodParam[i].GroupNum = FBS9100_ComBase.changeShortToInt(tmpbuf.getShort());
|
fodParam[i].STDCap = FBS9100_ComBase.changeShortToInt(tmpbuf.getShort());
|
fodParam[i].FloatVol = FBS9100_ComBase.changeShortToDouble(tmpbuf.getShort())/10;
|
fodParam[i].Strength = FBS9100_ComBase.changeShortToDouble(tmpbuf.getShort());
|
fodParam[i].YHStrength = FBS9100_ComBase.changeShortToDouble(tmpbuf.getShort());
|
fodParam[i].TimeLong = FBS9100_ComBase.changeShortToInt(tmpbuf.getShort());
|
fodParam[i].CRC = tmpbuf.getShort()&0xFFFF;
|
flag = flag && true;
|
}
|
//System.out.println(fodParam[i]);
|
tmpbuf.compact();
|
}
|
tmpbuf.compact();
|
tmpbuf.flip();
|
return true;
|
}
|
|
public ByteBuffer getByteBuffer()
|
{
|
ByteBuffer bytebuffer = ByteBuffer.allocate(DevFOD_DataLen);
|
bytebuffer.order(ByteOrder.LITTLE_ENDIAN);
|
ByteBuffer tmp = ByteBuffer.allocate(DevFOD_Len);
|
tmp.order(ByteOrder.LITTLE_ENDIAN);
|
if(GroupNum > 4) {
|
GroupNum = 4;
|
}
|
for(int i =0;i<fodParam.length;i++) {
|
tmp.clear();
|
tmp.position(0);
|
tmp.putShort(FBS9100_ComBase.changeIntToShort(fodParam[i].GroupNum));
|
tmp.putShort(FBS9100_ComBase.changeIntToShort(fodParam[i].STDCap));
|
tmp.putShort(FBS9100_ComBase.changeDoubleToShort(fodParam[i].FloatVol*10));
|
tmp.putShort(FBS9100_ComBase.changeDoubleToShort(fodParam[i].Strength));
|
tmp.putShort(FBS9100_ComBase.changeDoubleToShort(fodParam[i].YHStrength));
|
tmp.putShort(FBS9100_ComBase.changeIntToShort(fodParam[i].TimeLong));
|
int CRC = FBS9100_Crc16.CalCRC16(tmp, tmp.position());
|
tmp.putShort(FBS9100_ComBase.changeIntToShort(CRC));
|
|
tmp.flip();
|
bytebuffer.put(tmp.array());
|
}
|
|
//System.out.println(this+"$$$$$$$$$$$$$$$$$$$$$$$$$");
|
|
bytebuffer.flip();
|
//System.err.println(ComFn.bytesToHexString(bytebuffer.array(), bytebuffer.array().length));
|
return bytebuffer;
|
}
|
|
//»ñÈ¡¿ØÖƵÄʱºòµÄÊý¾Ý¼¯ºÏ
|
public ByteBuffer getControlByteBuffer() {
|
ByteBuffer bytebuffer = ByteBuffer.allocate(4);
|
bytebuffer.order(ByteOrder.LITTLE_ENDIAN);
|
bytebuffer.putShort(FBS9100_ComBase.changeIntToShort(GroupNum));
|
int CRC = FBS9100_Crc16.CalCRC16(bytebuffer, bytebuffer.position());
|
bytebuffer.putShort(FBS9100_ComBase.changeIntToShort(CRC));
|
bytebuffer.flip();
|
return bytebuffer;
|
}
|
|
|
class FOD_Param{
|
public int GroupNum; //×éºÅ
|
public int STDCap; //±ê³ÆÈÝÁ¿
|
public double FloatVol; //¸¡³äµçѹ
|
public double Strength; //³ýÁòÇ¿¶È
|
public double YHStrength; //Ñø»¤Ç¿¶È
|
public int TimeLong; //³ýÁòÌìÊý
|
public int CRC = 0;
|
|
|
@Override
|
public String toString() {
|
return "FOD_Param [GroupNum=" + GroupNum + ", STDCap=" + STDCap + ", FloatVol=" + FloatVol + ", Strength="
|
+ Strength + ", YHStrength=" + YHStrength + ", TimeLong=" + TimeLong + ", CRC=" + CRC + "]";
|
}
|
|
|
}
|
}
|