package com.fgkj.fbo;
|
|
import java.nio.ByteBuffer;
|
import java.nio.ByteOrder;
|
import java.util.GregorianCalendar;
|
|
public class FboDataInf {
|
public FboDateTime TestStartTime = new FboDateTime(); //放电开始的时间
|
public int Device; //仪表类型
|
public int DataVersion; //数据版本
|
public int DataType; //数据类型;0xFD表示放电,0xFC表示充电
|
public int HourRate; //小时率
|
public int SaveInterval; //采集间隔
|
public int MonomerVol; //单体电压类型
|
public int STDCap; //标称容量
|
public float TestCur; //测试电流
|
public float MVLLimit; //单体下限
|
public float SumVLLimit; //组端下限
|
public int BattSum; //单体数量
|
public int BattGroup; //电池组数
|
public float MVLLimitCount; //单体下限个数
|
|
public FboTestTime TestTimeLong = new FboTestTime(); //测试时长
|
public int StopType; //结束方式
|
public int BlockSum; //保存数据的总块数
|
public int StandBy; //保留备用
|
public int[] SMaxIndex = new int[4]; //最高单体索引
|
public int[] SMinIndex = new int[4]; //最低单体索引
|
public float[] SMaxVol = new float[4]; //最高单体
|
public float[] SMinVol = new float[4]; //最低单体
|
public float TestCap; //测试容量
|
|
public void setDataInf(byte[] inf_data)
|
{
|
ByteBuffer bf = ByteBuffer.allocate(2048);
|
bf.order(ByteOrder.LITTLE_ENDIAN);
|
bf.put(inf_data);
|
bf.position(0);
|
|
TestStartTime.year = (int) (bf.get()&0xFF);
|
TestStartTime.month = (int) (bf.get()&0xFF)-1;
|
//System.out.println(TestStartTime.month+" setDataInf(byte[] inf_data)");
|
TestStartTime.day = (int) (bf.get()&0xFF);
|
TestStartTime.hour = (int) (bf.get()&0xFF);
|
TestStartTime.minute = (int) (bf.get()&0xFF);
|
TestStartTime.second = (int) (bf.get()&0xFF);
|
|
Device = (int) (bf.get()&0xFF);
|
DataVersion = (int) (bf.get()&0xFF); //数据版本
|
DataType = (int) (bf.get()&0xFF); //数据类型;0xFD表示放电,0xFC表示充电
|
HourRate = (int) (bf.get()&0xFF); //小时率
|
SaveInterval = (int) (bf.get()&0xFF); //采集间隔
|
MonomerVol = (int) (bf.get()&0xFF); //单体电压类型
|
STDCap = (int) (bf.getShort()&0xFFFF); //标称容量
|
TestCur = (float) (bf.getShort()&0xFFFF); //测试电流
|
MVLLimit = ((float) (bf.getShort()&0xFFFF)) / 1000; //单体下限
|
SumVLLimit = ((float) (bf.getShort()&0xFFFF)) / 10; //组端下限
|
BattSum = (int) (bf.getShort()&0xFFFF); //单体数量
|
BattGroup = (int) (bf.getShort()&0xFFFF); //电池组数
|
MVLLimitCount = (int) (bf.getShort()&0xFFFF); //单体下限个数
|
|
TestTimeLong.hour = (int) (bf.get()&0xFF);
|
TestTimeLong.minute = (int) (bf.get()&0xFF);
|
TestTimeLong.second = (int) (bf.get()&0xFF);
|
StopType = (int) (bf.get()&0xFF);
|
BlockSum = (int) (bf.get()&0xFF);
|
StandBy = (int) (bf.get()&0xFF);
|
for(int n=0; n<4; n++)
|
{
|
SMaxIndex[n] = (int) (bf.getShort()&0xFFFF);
|
}
|
for(int n=0; n<4; n++)
|
{
|
SMinIndex[n] = (int) (bf.getShort()&0xFFFF);
|
}
|
for(int n=0; n<4; n++)
|
{
|
SMaxVol[n] = ((float) (bf.getShort()&0xFFFF)) / 1000;
|
}
|
for(int n=0; n<4; n++)
|
{
|
SMinVol[n] = ((float) (bf.getShort()&0xFFFF)) / 1000;
|
}
|
|
TestCap = (float) (bf.getShort()&0xFFFF);
|
}
|
|
public void setDataInf(IdcDataInf d_inf)
|
{
|
GregorianCalendar gc = (GregorianCalendar) GregorianCalendar.getInstance();
|
gc.setTime(d_inf.m_TestTime);
|
|
TestStartTime.year = gc.get(GregorianCalendar.YEAR);
|
TestStartTime.month = gc.get(GregorianCalendar.MONTH)-1;
|
//System.out.println(TestStartTime.month+" IdcDataInf d_inf ");
|
TestStartTime.day = gc.get(GregorianCalendar.DATE);
|
TestStartTime.hour = gc.get(GregorianCalendar.HOUR);
|
TestStartTime.minute = gc.get(GregorianCalendar.MINUTE);
|
TestStartTime.second = gc.get(GregorianCalendar.SECOND);
|
|
Device = IdcDataInf.DevType_Idc;
|
DataVersion = 0; //数据版本
|
DataType = d_inf.m_TestType; //数据类型;0xFD表示放电,0xFC表示充电
|
HourRate = d_inf.m_HourRate; //小时率
|
SaveInterval = 0; //采集间隔
|
MonomerVol = (int) d_inf.m_MonomerVol; //单体电压类型
|
STDCap = d_inf.m_STDAH; //标称容量
|
TestCur = 0; //测试电流
|
MVLLimit = d_inf.m_MonomerVolLL; //单体下限
|
SumVLLimit = d_inf.m_SumVolLL; //组端下限
|
BattSum = d_inf.m_EachBattSum * d_inf.m_BattGroup; //单体数量
|
BattGroup = d_inf.m_BattGroup; //电池组数
|
MVLLimitCount = 1; //单体下限个数
|
|
TestTimeLong.hour = 0;
|
TestTimeLong.minute = 0;
|
TestTimeLong.second = 0;
|
StopType = 0;
|
BlockSum = 0;
|
StandBy = 0;
|
for(int n=0; n<4; n++)
|
{
|
SMaxIndex[n] = 0;
|
}
|
for(int n=0; n<4; n++)
|
{
|
SMinIndex[n] = 0;
|
}
|
for(int n=0; n<4; n++)
|
{
|
SMaxVol[n] = 0;
|
}
|
for(int n=0; n<4; n++)
|
{
|
SMinVol[n] = 0;
|
}
|
|
TestCap = 0;
|
}
|
|
public static String getDeviceType(int type)
|
{
|
String dev_type = "未知";
|
switch(type) //测试仪表类型
|
{
|
case 0xFB : dev_type = "FBO4815-CT"; break;
|
case 0xDC : dev_type = "IDCE4815-CT";break;
|
case 0x2F : dev_type = "FBO2205-CT"; break;
|
case 0x2E : dev_type = "IDCE2205-CT";break;
|
case 0x26 : dev_type = "FBO2206-CT"; break;
|
case 0x25 : dev_type = "IDCE2206-CT";break;
|
case 0x3F : dev_type = "FBO4830-CT"; break;
|
case 0x3E : dev_type = "IDCE4830-CT";break;
|
case 0x6F : dev_type = "FBO6003-CT"; break;
|
case 0x6E : dev_type = "IDCE6003-CT";break;
|
case 0x66 : dev_type = "FBO6006-CT"; break;
|
case 0x67 : dev_type = "IDCE6006-CT";break;
|
case 0x60 : dev_type = "FBO60010-CT";break;
|
case 0x61 : dev_type = "IDCE60010-CT";break;
|
case 0x0F : dev_type = "FBO1101-CT"; break;
|
case 0x0E : dev_type = "IDCE1101-CT";break;
|
case 0x1F : dev_type = "FBO1110-CT"; break;
|
case 0x1E : dev_type = "IDCE1110-CT";break;
|
case 0xF2 : dev_type = "FBI-4548CT";break;
|
case 0xF3 : dev_type = "FBI-3048CT";break;
|
case 0xF1 : dev_type = "FBI-3015CT";break;
|
case 0xF4 : dev_type = "FBI-10480CT";break;
|
case 0xF5 : dev_type = "FBI-05480CT";break;
|
case 0xF6 : dev_type = "FBI-15480CT";break;
|
case 0xF7 : dev_type = "FBI-20480CT";break;
|
case 0xE1 : dev_type = "FBI-05240CT";break;
|
case 0xE2 : dev_type = "FBI-10240CT";break;
|
case 0xE3 : dev_type = "FBI-15240CT";break;
|
case 0xE4 : dev_type = "FBI-20240CT";break;
|
case 0x22 : dev_type = "FBO2210-CT"; break;
|
case 0x21 : dev_type = "IDCE2210-CT";break;
|
case 0x15 : dev_type = "FBO2415-CT"; break;
|
case 0x16 : dev_type = "IDCE2415-CT";break;
|
case 0x12 : dev_type = "FBO1230-CT";break;
|
case 0x11 : dev_type = "IDCE1230-CT";break;
|
case 0x84 : dev_type = "FBO840-CT";break;
|
case 0x85 : dev_type = "IDCE840-CT";break;
|
case 0x13 : dev_type = "IDC_DEV";break;
|
case 0x45 : dev_type = "Ser_DEV";break;
|
case 0x46 : dev_type="DevType_FBR";break;
|
}
|
|
return dev_type;
|
}
|
|
public static String getTestType(int type)
|
{
|
String test_type = "未知";
|
switch(type)
|
{
|
case 0xFD : test_type = "放电"; break;
|
case 0xFC : test_type = "充电"; break;
|
case 0xCD : test_type = "充放电"; break;
|
case CsvData.DevType_Csv : test_type = "电导"; break;
|
case CsvData.DevType_FBR : test_type = "内阻"; break;
|
}
|
return test_type;
|
}
|
|
public static String getStopType(int type)
|
{
|
String stop_type = "未知";
|
switch(type)
|
{
|
case 0 : stop_type = "手动停止"; break;
|
case 1 : stop_type = "放电时间到"; break;
|
case 2 : stop_type = "放电容量到"; break;
|
case 3 : stop_type = "单体下限到"; break;
|
case 4 : stop_type = "组端下限到"; break;
|
case 5 : stop_type = "市电中断"; break;
|
case 6 : stop_type = "内存不足"; break;
|
case 7 : stop_type = "温度异常"; break;
|
}
|
return stop_type;
|
}
|
}
|