/********************************* head of file SocketClient.java ***********************************/ package com.dev.fbs9100; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetSocketAddress; import java.net.Socket; import java.nio.ByteBuffer; import java.nio.ByteOrder; import com.dev.fbs9100.FBS9100_CapState; import com.dev.fbs9100.FBS9100_ChargeState; import com.dev.fbs9100.FBS9100_Cmd; import com.dev.fbs9100.FBS9100_ComBase; import com.dev.fbs9100.FBS9100_ComBuf; import com.dev.fbs9100.FBS9100_ParamBatt; import com.dev.fbs9100.FBS9100_ParamCharge; import com.dev.fbs9100.FBS9100_ParamDischarge; import com.dev.fbs9100.FBS9100_ParamSystem; import com.dev.fbs9100.FBS9100_ResCapData; import com.dev.fbs9100.FBS9100_ResState; import com.dev.fbs9100.FBS9100_VCData; /****************************************************************************************************/ public class FBS9100_SocketClient extends Thread { private FBS9100_Cmd m_FBS_Cmd = new FBS9100_Cmd(); private FBS9100_VCData m_FBS_VCData = null; private FBS9100_ParamBatt m_FBS_BattParam = new FBS9100_ParamBatt(); private FBS9100_ParamSystem m_FBS_SystemParam = new FBS9100_ParamSystem(); private FBS9100_ParamDischarge m_FBS_DiscParam = null; private FBS9100_ParamDischarge m_FBS_DiscParamFromDev = null; private FBS9100_ParamCharge m_FBS_ChargeParam = new FBS9100_ParamCharge(); private FBS9100_ResState m_ResTestState = new FBS9100_ResState(); private FBS9100_CapState m_CapTestState = new FBS9100_CapState(); private FBS9100_ChargeState m_ChrTestState = new FBS9100_ChargeState(); private FBS9100_ResCapData m_FBS_ResCapData = new FBS9100_ResCapData(); private FBS9100_StatAndParam m_StatAndParam = null; private BattData_RT m_RTData = new BattData_RT(); private String mDevIp = "192.168.0.18"; private static final String TAG = "SocketClient_Thread"; /*********************************************************************************************/ public FBS9100_SocketClient(FBS9100_StatAndParam stat_param) { m_StatAndParam = stat_param; m_FBS_VCData = m_StatAndParam.m_FBS_VCData; m_FBS_DiscParam = m_StatAndParam.m_FBS_DiscParam; m_FBS_DiscParamFromDev = m_StatAndParam.m_FBS_DiscParamFromDev; mDevIp = m_StatAndParam.dev_ipaddr; } /*********************************************************************************************/ public void run() { this.setName(TAG); System.out.println(this.getName() + " - FBS9100_SocketClientThread Started ..."); while(true) { try { SocketComm(FBS9100_ComBase.CMD_GetVIData, ByteBuffer.allocate(0)); sleep(200); if(FBS9100_ComBase.CMD_NULL == m_StatAndParam.op_cmd) { if(FBS9100_ComBase.CMD_SetDischargeParm == m_StatAndParam.m_FBS_DiscParam.op_cmd) { if(true == SocketComm(FBS9100_ComBase.CMD_SetDischargeParm , m_StatAndParam.m_FBS_DiscParam.getByteBuffer())) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_SetDischargeParmAck; } } else if( FBS9100_ComBase.CMD_Start == m_FBS_DiscParam.op_cmd ) { int cmd = FBS9100_ComBase.CMD_StartDischarge; if(cmd != m_FBS_DiscParam.test_cmd) { cmd = FBS9100_ComBase.CMD_StartResDischarge; } if(true == SocketComm(cmd, ByteBuffer.allocate(0))) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_StartAck; } } else if(FBS9100_ComBase.CMD_Stop == m_FBS_DiscParam.op_cmd) { if(true == SocketComm(FBS9100_ComBase.CMD_Stop, ByteBuffer.allocate(0))) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_StopAck; } } else if(FBS9100_ComBase.CMD_GetDischargeParm == m_FBS_DiscParam.op_cmd) { if(true == SocketComm(FBS9100_ComBase.CMD_GetDischargeParm, ByteBuffer.allocate(0))) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_GetDischargeParmAck; } } } //-----------------------------------------------------------------------------------// //-----------------------------------------------------------------------------------// if(FBS9100_ComBase.BattState_Discharge == m_FBS_VCData.m_SysState.WorkState) { //------------- Èç¹ûÊÇÄÚ×è²âÊÔ,Ôò×Ô¶¯¶Áȡһ´ÎFBS9100É豸ÉϵIJÎÊý -----------// if(FBS9100_ComBase.TestType_RES == m_FBS_VCData.m_SysState.TestType) { if ((FBS9100_ComBase.TestType_RES != m_StatAndParam.test_type) && (FBS9100_ComBase.CMD_NULL == m_StatAndParam.op_cmd)) { if(true == SocketComm(FBS9100_ComBase.CMD_GetDischargeParm, ByteBuffer.allocate(0))) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_GetDischargeParmAck; m_StatAndParam.test_type = FBS9100_ComBase.TestType_RES; } } } else {//------ Èç¹ûÊÇÈÝÁ¿·Åµç²âÊÔ,Ôò×Ô¶¯¶Áȡһ´ÎFBS9100É豸ÉϵIJÎÊý ------// if ((FBS9100_ComBase.TestType_CAP != m_StatAndParam.test_type) &&(FBS9100_ComBase.CMD_NULL == m_StatAndParam.op_cmd)) { if(true == SocketComm(FBS9100_ComBase.CMD_GetDischargeParm, ByteBuffer.allocate(0))) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_GetDischargeParmAck; m_StatAndParam.test_type = FBS9100_ComBase.TestType_CAP; } } } } sleep(100); SocketComm(FBS9100_ComBase.CMD_GetMonomerRES, ByteBuffer.allocate(0)); sleep(200); SocketComm(FBS9100_ComBase.CMD_GetMonomerTMP, ByteBuffer.allocate(0)); if(FBS9100_ComBase.TestType_RES == m_StatAndParam.test_type) { sleep(100); if(true == SocketComm(FBS9100_ComBase.CMD_GetResTestState, ByteBuffer.allocate(0))) { m_FBS_VCData.m_SysState.ResBattIndexMax = m_ResTestState.ResBattIndexMax; m_FBS_VCData.m_SysState.ResBattIndex = m_ResTestState.ResBattIndex; } //------ ÄÚ×è²âÊÔÍ£Ö¹µÄʱºò,×Ô¶¯¼Ç¼һ´ÎÄÚ×èÖµµ½Êý¾Ý¿â ------// if(FBS9100_ComBase.TestType_RES != m_FBS_VCData.m_SysState.TestType) { m_StatAndParam.test_type = FBS9100_ComBase.TestType_NULL; /* int index = m_ResTestState.BattGroupNum - 1; if((index >= 0) && (index 8) { m_FBS_VCData.m_SysState.setCommCountInc(); } else { m_FBS_VCData.m_SysState.setErrCommCountInc(); } } else { m_FBS_VCData.m_SysState.setErrCommCountInc(); } } catch (IOException e) { //e.printStackTrace(); m_FBS_VCData.m_SysState.setErrCommCountInc(); } return res; } /*********************************************************************************************/ /*********************************************************************************************/ public byte[] makeCommBuf(final int cmd, ByteBuffer bf) { return (FBS9100_ComBuf.makeFbs9100CommBuf(0, cmd, bf).array()); } /*********************************************************************************************/ public String getDataFromCommBuf(final byte[] bytes) { ByteBuffer bf = ByteBuffer.allocate(bytes.length); bf.order(ByteOrder.LITTLE_ENDIAN); bf.put(bytes); bf.flip(); String msg = ""; if(true == m_FBS_Cmd.putByteBuffer(bf)) { //------------------- ¶ÁÈ¡FBS9100µçѹµçÁ÷Êý¾Ý -------------------- if(FBS9100_ComBase.CMD_GetVIData == m_FBS_Cmd.CMD) { if(true == m_FBS_VCData.m_SysState.putByteBuffer(bf)) { if(true == m_FBS_VCData.putByteBuffer(bf)) { getFBS9100MonVolData(m_FBS_VCData); } } } //------------------- ¶ÁÈ¡FBS9100ÄÚ×è²âÊÔ״̬ ----------------------- if(FBS9100_ComBase.CMD_GetResTestState == m_FBS_Cmd.CMD) { if(true == m_ResTestState.putByteBuffer(bf)) msg = "Get ResTest State from FBS9100 OK!!!"; } //------------------- ¶ÁÈ¡FBS9100ÈÝÁ¿²âÊÔ״̬ ----------------------- if(FBS9100_ComBase.CMD_GetDischargeState == m_FBS_Cmd.CMD) { if(true == m_CapTestState.putByteBuffer(bf)) msg = "Get CapTest State from FBS9100 OK!!!"; } //------------------- ¶ÁÈ¡FBS9100³äµç²âÊÔ״̬ ----------------------- if(FBS9100_ComBase.CMD_GetChargeState == m_FBS_Cmd.CMD) { if(true == m_ChrTestState.putByteBuffer(bf)) msg = "Get ChrTest State from FBS9100 OK!!!"; } //------------------- ¶ÁÈ¡FBS9100µç³Ø²ÎÊý ------------------------- else if(FBS9100_ComBase.CMD_GetBattParam == m_FBS_Cmd.CMD) { if(true == m_FBS_BattParam.putByteBuffer(bf)) msg = "Get battparam from FBS9100 OK!!!"; } //------------------- ÉèÖÃFBS9100µç³Ø²ÎÊý ------------------------- else if(FBS9100_ComBase.CMD_SetBattParam == m_FBS_Cmd.CMD) { if(true == m_FBS_BattParam.putByteBuffer(bf)) msg = "Set battparam to FBS9100 OK!!!"; } //------------------- ¶ÁÈ¡FBS9100ϵͳ²ÎÊý ------------------------- else if(FBS9100_ComBase.CMD_GetSYSSetParam == m_FBS_Cmd.CMD) { if(true == m_FBS_SystemParam.putByteBuffer(bf)) msg = "Get sysparam from FBS9100 OK!!!"; } //------------------- ÉèÖÃFBS9100ϵͳ²ÎÊý ------------------------- else if(FBS9100_ComBase.CMD_SetSYSSetParam == m_FBS_Cmd.CMD) { if(true == m_FBS_SystemParam.putByteBuffer(bf)) msg = "Set sysparam to FBS9100 OK!!!"; } //------------------- ¶ÁÈ¡FBS9100·Åµç²ÎÊý ------------------------- else if(FBS9100_ComBase.CMD_GetDischargeParm == m_FBS_Cmd.CMD) { if(true == m_FBS_DiscParamFromDev.putByteBuffer(bf)) msg = "Get DischargeParm from FBS9100 OK!!!"; } //------------------- ÉèÖÃFBS9100·Åµç²ÎÊý ------------------------- else if(FBS9100_ComBase.CMD_SetDischargeParm == m_FBS_Cmd.CMD) { if(true == m_FBS_DiscParam.putByteBuffer(bf)) msg = "Set DischargeParam to FBS9100 OK!!!"; } //------------------- ¶ÁÈ¡FBS9100³äµç²ÎÊý ------------------------- else if(FBS9100_ComBase.CMD_GetChargeParm == m_FBS_Cmd.CMD) { if(true == m_FBS_ChargeParam.putByteBuffer(bf)) msg = "Get ChargeParam from FBS9100 OK!!!"; } //------------------- ÉèÖÃFBS9100³äµç²ÎÊý ------------------------- else if(FBS9100_ComBase.CMD_SetChargeParm == m_FBS_Cmd.CMD) { if(true == m_FBS_ChargeParam.putByteBuffer(bf)) msg = "Set ChargeParam to FBS9100 OK!!!"; } //------------------- ¶ÁÈ¡FBS9100ÈÝÁ¿ÄÚ×è²âÊÔÊý¾Ý ------------------ else if((FBS9100_ComBase.CMD_GetMonomerRES == m_FBS_Cmd.CMD) ||(FBS9100_ComBase.CMD_GetMonomerTMP == m_FBS_Cmd.CMD) /*||(FBS_ComBase.CMD_GetMonomerCAP == m_FBS_Cmd.CMD) ||(FBS_ComBase.CMD_GetMonomerChargeCAP == m_FBS_Cmd.CMD)*/) { if(true == m_FBS_ResCapData.putByteBuffer(bf, m_FBS_Cmd.CMD)) { getFBS9100MonResData(m_FBS_Cmd.CMD, m_FBS_ResCapData); //msg = "Get MonomerCAP or MonomerRES from FBS9100 OK!!!"; } } } return msg; } /*********************************************************************************************/ private void getFBS9100MonVolData(FBS9100_VCData vc_data) { int mon_index = 0; for(int n=0; n= FBS9100_ComBase.MonomerCountMax) { break; } m_RTData.al_MonVol.get(index).monVol = (float) vc_data.vol[mon_index]; mon_index++; } } } } /*********************************************************************************************/ private void getFBS9100MonResData(int cmd, FBS9100_ResCapData res_data) { int mon_index = 0; for(int n=0; n= FBS9100_ComBase.MonomerCountMax) break; if(FBS9100_ComBase.CMD_GetMonomerRES == cmd) { m_RTData.al_MonVol.get(index).monRes = (float) res_data.m_DATA[mon_index]; } else if(FBS9100_ComBase.CMD_GetMonomerTMP == cmd) { m_RTData.al_MonVol.get(index).monTmp = (float) res_data.m_DATA[mon_index]; } mon_index++; } } } } /*********************************************************************************************/ } /********************************* end of file SocketClient.java *************************************/