package com.dev.bts.data;
|
|
import java.nio.ByteBuffer;
|
import java.nio.ByteOrder;
|
import java.util.Date;
|
|
import user_app_form.Com;
|
|
public class FBS9100_SysState
|
{
|
public static final byte SYS_STATE_STOPPED = 0;
|
public static final byte SYS_STATE_DISCHARGING = 1;
|
public static final byte SYS_STATE_CHARGING = 2;
|
//--------------------------------------------------------//
|
private final int BYTE_LEN = 14;
|
//--------------------------------------------------------//
|
public Date Record_DateTime = new Date();
|
//--------------------------------------------------------//
|
public FBS9100_DateTime DTime = new FBS9100_DateTime(); //±ê×¼ÈÕÆÚʱ¼ä
|
public int TestType = 0; //²âÊÔÀàÐÍ(³äµç»ò·Åµç)
|
public int TestGroupNum = 1; //±»²âÊÔÐîµç³Ø×é±àºÅ1-4
|
public int WorkState = SYS_STATE_STOPPED; //ϵͳ¹¤×÷״̬
|
public int AlarmState = 0; //ϵͳ¸æ¾¯×´Ì¬
|
public int ResTestState = 0; //ϵͳ¹¤×÷״̬
|
public int OnlineVolLow = 0; //ÔÚÏßµçѹ̫µÍ(»ùվͣµç±êʶ)
|
public int CapTestStopType = -1; //·ÅµçÍ£Ö¹ÔÒò
|
|
public int Station_State = 0;
|
|
public boolean BG_1_IsOFFLine = false; //µç³Ø×é1ÀëÏß
|
public boolean BG_2_IsOFFLine = false; //µç³Ø×é2ÀëÏß
|
public boolean BG_HaveNewData = false; //µç³Ø×éÓÐÐÂÊý¾Ý¸üÐÂ
|
public boolean SD_Card_Err = false; //BTS SD¿¨¹ÊÕÏ
|
|
public boolean Station_Event_poff = false;
|
public boolean Station_Event_xuhang = false;
|
public boolean Station_Event_diaozhan = false;
|
|
public int CommCount = 0; //ͨÐżÆÊý
|
public int ErrCommCount = 0;
|
public int RxNullErrCount = 0;
|
public long Alm_RecId = 0;
|
|
//---------------------------------------//
|
public int ResTestCnt; //ÄÚ×èÒѲâÊÔ´ÎÊý
|
public int ResBattIndexMax; //±»²âÊÔµ¥ÌåµÄ×î´ó±àºÅË÷Òý
|
public int ResBattIndex; //±»²âÊÔµ¥ÌåµÄË÷Òý
|
//---------------------------------------//
|
|
public int CRC = 0;
|
|
public Date charStartTime= new Date();
|
public Date charNowTime= new Date();
|
public boolean isChargeIng = false;
|
|
|
public FBS9100_SysState clone()
|
{
|
FBS9100_SysState obj = new FBS9100_SysState();
|
|
obj.DTime = DTime.clone();
|
obj.TestType = TestType;
|
obj.TestGroupNum = TestGroupNum;
|
obj.WorkState = WorkState;
|
obj.AlarmState = AlarmState;
|
obj.OnlineVolLow = OnlineVolLow;
|
|
obj.BG_1_IsOFFLine = BG_1_IsOFFLine;
|
obj.BG_2_IsOFFLine = BG_1_IsOFFLine;
|
obj.BG_HaveNewData = BG_HaveNewData;
|
obj.SD_Card_Err = SD_Card_Err;
|
obj.Station_Event_poff = Station_Event_poff;
|
obj.Station_Event_xuhang = Station_Event_xuhang;
|
obj.Station_Event_diaozhan = Station_Event_diaozhan;
|
|
obj.ResTestState = ResTestState;
|
obj.CapTestStopType = CapTestStopType;
|
obj.CommCount = CommCount;
|
obj.ErrCommCount = ErrCommCount;
|
obj.RxNullErrCount = RxNullErrCount;
|
obj.CRC = CRC;
|
|
return obj;
|
}
|
|
public void setCommCountInc()
|
{
|
Record_DateTime = new Date();
|
|
CommCount += 1;
|
if(CommCount >= 90000000) {
|
CommCount = 1;
|
}
|
}
|
|
public void setErrCommCountInc(int rx_len)
|
{
|
if(rx_len < 1) {
|
RxNullErrCount += 1;
|
}
|
ErrCommCount += 1;
|
if(ErrCommCount >= 90000000) {
|
ErrCommCount = 20;
|
}
|
if(RxNullErrCount >= 90000000) {
|
RxNullErrCount = 20;
|
}
|
}
|
|
public void setDateTime(FBS9100_DateTime dt)
|
{
|
DTime = dt;
|
}
|
|
public void setResTestCnt(int res_cnt)
|
{
|
ResTestCnt = res_cnt;
|
}
|
public int getResTestCnt()
|
{
|
return ResTestCnt;
|
}
|
|
public boolean putByteBuffer(final ByteBuffer bf)
|
{
|
if(bf.limit() < BYTE_LEN)
|
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)
|
return false;
|
|
tmpbuf.position(0);
|
DTime.putByteBuffer(tmpbuf);
|
TestType = FBS9100_ComBase.changeByteToInt(bf.get());
|
TestGroupNum = FBS9100_ComBase.changeByteToInt(bf.get());
|
|
WorkState = FBS9100_ComBase.changeByteToInt(bf.get());
|
ResTestState = WorkState & 0xF0;
|
WorkState &= 0x0F;
|
|
AlarmState = FBS9100_ComBase.changeByteToInt(bf.get());
|
|
OnlineVolLow = FBS9100_ComBase.changeByteToInt(bf.get());
|
BG_1_IsOFFLine = ((OnlineVolLow&(1<<4)) > 0);
|
BG_2_IsOFFLine = ((OnlineVolLow&(1<<5)) > 0);
|
BG_HaveNewData = ((OnlineVolLow&(1<<1)) > 0);
|
SD_Card_Err = ((OnlineVolLow&(1<<6)) > 0);
|
|
Station_Event_diaozhan = ((OnlineVolLow&(1<<3)) > 0);
|
Station_Event_xuhang = ((OnlineVolLow&(1<<2)) > 0);
|
Station_Event_poff = ((OnlineVolLow&(1<<0)) > 0);
|
|
OnlineVolLow &= 0x01;
|
|
CapTestStopType = FBS9100_ComBase.changeByteToInt(bf.get());
|
CRC = FBS9100_ComBase.changeShortToInt(bf.getShort());
|
|
//System.out.println("ResTestState:"+ResTestState);
|
|
if(this.WorkState == SYS_STATE_CHARGING) {
|
if(!isChargeIng) {
|
charStartTime=new Date();
|
}
|
charNowTime=new Date();
|
}else {
|
isChargeIng=false;
|
}
|
|
tmpbuf.compact();
|
tmpbuf.flip();
|
return true;
|
}
|
|
public ByteBuffer getDateTimeByteBuffer()
|
{
|
ByteBuffer bytebuffer = ByteBuffer.allocate(BYTE_LEN);
|
bytebuffer.order(ByteOrder.LITTLE_ENDIAN);
|
bytebuffer.put(DTime.getPCDateTimeBytes());
|
|
CRC = FBS9100_Crc16.CalCRC16(bytebuffer, bytebuffer.position());
|
bytebuffer.putShort(FBS9100_ComBase.changeIntToShort(CRC));
|
bytebuffer.flip();
|
//System.out.println(bytebuffer.limit()+"&&&&&&&&&&&&&&&&");
|
return bytebuffer;
|
}
|
|
public ByteBuffer getByteBuffer() {
|
ByteBuffer bytebuffer = ByteBuffer.allocate(BYTE_LEN);
|
bytebuffer.order(ByteOrder.LITTLE_ENDIAN);
|
|
bytebuffer.put(DTime.getPCDateTimeBytes());
|
bytebuffer.put(FBS9100_ComBase.changeIntToByte(TestType));
|
bytebuffer.put(FBS9100_ComBase.changeIntToByte(TestGroupNum));
|
bytebuffer.put(FBS9100_ComBase.changeIntToByte(WorkState));
|
bytebuffer.put(FBS9100_ComBase.changeIntToByte(AlarmState));
|
bytebuffer.put(FBS9100_ComBase.changeIntToByte(OnlineVolLow));
|
bytebuffer.put(FBS9100_ComBase.changeIntToByte(CapTestStopType));
|
|
CRC = FBS9100_Crc16.CalCRC16(bytebuffer, bytebuffer.position());
|
bytebuffer.putShort(FBS9100_ComBase.changeIntToShort(CRC));
|
bytebuffer.flip();
|
//System.out.println(bytebuffer.limit()+"&&&&&&&&&&&&&&&&");
|
return bytebuffer;
|
}
|
|
public String getSysWorkStateStr() {
|
String workstr = "ϵͳ¹¤×÷״̬£º";
|
if(this.WorkState > SYS_STATE_STOPPED) {
|
if(this.WorkState == SYS_STATE_DISCHARGING) {
|
if(this.TestType==FBS9100_ComBase.TestType_SwitchDiode) {
|
workstr += "KD²âÊÔ";
|
}else if(this.TestType==FBS9100_ComBase.TestType_MDISCHARGE) {
|
workstr += "Í£µç·Åµç";
|
}else {
|
workstr += "·Åµç²âÊÔ";
|
}
|
}else if(this.WorkState == SYS_STATE_CHARGING) {
|
workstr += "³äµç²âÊÔ";
|
}else {
|
workstr += "δ֪-" + this.WorkState;
|
}
|
} else {
|
if(ResTestState > 0) {
|
workstr += "ÄÚ×è²âÊÔ";
|
} else {
|
workstr += "ÔÚÏ߸¡³ä";
|
}
|
}
|
|
return workstr;
|
}
|
|
|
public long getCharTestTime() {
|
return Math.abs(charNowTime.getTime()-charStartTime.getTime())/1000;
|
}
|
|
@Override
|
public String toString() {
|
return "FBS9100_SysState [BYTE_LEN=" + BYTE_LEN + ", DTime=" + DTime + ", TestType=" + TestType
|
+ ", TestGroupNum=" + TestGroupNum + ", WorkState=" + WorkState + ", AlarmState=" + AlarmState
|
+ ", OnlineVolLow=" + OnlineVolLow + ", CommCount=" + CommCount + ", ErrCommCount=" + ErrCommCount
|
+ ", Alm_RecId=" + Alm_RecId + ", ResBattIndexMax=" + ResBattIndexMax + ", ResBattIndex=" + ResBattIndex
|
+ ", CRC=" + CRC + "]";
|
}
|
|
public void checkState() {
|
if(this.WorkState == SYS_STATE_CHARGING) {
|
if(!isChargeIng) {
|
charStartTime=new Date();
|
}
|
charNowTime=new Date();
|
isChargeIng=true;
|
}else {
|
isChargeIng=false;
|
}
|
}
|
}
|
/***************************************************************************************
|
****************************** end of file (FBS_SysState) ******************************
|
***************************************************************************************/
|