/********************************* head of file SocketClient.java ***********************************/
|
package com.dev.btse.comm;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.io.OutputStream;
|
import java.net.Socket;
|
import java.nio.ByteBuffer;
|
import java.nio.ByteOrder;
|
import java.nio.charset.Charset;
|
import java.time.temporal.JulianFields;
|
import java.util.Arrays;
|
import java.util.Date;
|
|
import org.apache.logging.log4j.Level;
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
import com.battmonitor.base.Com;
|
import com.battmonitor.data.BattData_RT;
|
import com.battmonitor.data.BattData_RT_Array;
|
import com.battmonitor.data.BattData_RT_SQL;
|
import com.battmonitor.sql.MysqlConnPool;
|
import com.config.AppConfig;
|
import com.dev.btse.data.ComFn;
|
import com.dev.btse.data.Ecb_Aes;
|
import com.dev.btse.data.FBS9100S_BusCoupleState;
|
import com.dev.btse.data.FBS9100S_LIBMS_AlarmState;
|
import com.dev.btse.data.FBS9100S_LiBMS_AnalogData;
|
import com.dev.btse.data.FBS9100S_NT_DCDC_Data;
|
import com.dev.btse.data.FBS9100S_NT_DCDC_State;
|
import com.dev.btse.data.FBS9100S_NiBian_Data;
|
import com.dev.btse.data.FBS9100S_SX_DCDC_Data;
|
import com.dev.btse.data.FBS9100S_SX_DCDC_Param;
|
import com.dev.btse.data.FBS9100S_StemNode_State;
|
import com.dev.btse.data.FBS9100_CMCC_Power;
|
import com.dev.btse.data.FBS9100_Cmd;
|
import com.dev.btse.data.FBS9100_ComBase;
|
import com.dev.btse.data.FBS9100_ComBuf;
|
import com.dev.btse.data.FBS9100_Crc16;
|
import com.dev.btse.data.FBS9100_DeviceInf;
|
import com.dev.btse.data.FBS9100_JHPowerState;
|
import com.dev.btse.data.FBS9100_JuHengParam;
|
import com.dev.btse.data.FBS9100_ParamBatt;
|
import com.dev.btse.data.FBS9100_ParamDischarge;
|
import com.dev.btse.data.FBS9100_ParamSystem;
|
import com.dev.btse.data.FBS9100_ResCapData;
|
import com.dev.btse.data.FBS9100_ResState;
|
import com.dev.btse.data.FBS9100_StatAndParam;
|
import com.dev.btse.data.FBS9100_SysState;
|
import com.dev.btse.data.FBS9100_VCData;
|
|
/****************************************************************************************************/
|
public class FBS9100S_SocketClient2 extends Thread
|
{
|
public static final int EveType_StationPOFF = 1;
|
public static final int EveType_StationXuHang = 2;
|
public static final int EveType_StationDiaoZhan = 5;
|
public static final int EveType_StationXuHangEnd = 7;
|
|
public static final int EveType_BTS_WorkState = 0;
|
public static final int EveType_BTS_SDCardErr = 11;
|
public static final int EveType_BTS_BG_OffLine = 12;
|
public static final int EveType_BTS_BG1_OffLine = 13;
|
public static final int EveType_BTS_BG2_OffLine = 14;
|
public static final int EveType_BTS_BG3_OffLine = 15;
|
public static final int EveType_BTS_BG4_OffLine = 16;
|
public static final int EveType_BTS_DCDC_Alarm = 20;
|
public static final int EveType_BTS_DCDC_RunMode = 21;
|
public static final int EveType_BTS_DCDC_RunStat = 22;
|
|
public static final int StationEventStart = 1;
|
public static final int StationEventEnd = 2;
|
|
private Logger logger = null;
|
|
private FBS9100_Cmd m_FBS_Cmd = new FBS9100_Cmd();
|
|
private FBS9100S_DFU m_FBS9100S_DFU = null;
|
private FBS9100_StatAndParam m_StatAndParam = null;
|
private BattData_RT[] m_RTData = new BattData_RT[FBS9100_ComBase.BattGroupCountMax];
|
|
private int comm_task_bg_cnt = 0;
|
private String comm_task_conn_time = "1980-01-01 01:01:01";
|
private int[] comm_task_bg_id = new int[FBS9100_ComBase.BattGroupCountMax];
|
private int[] comm_task_bg_dev_index = new int[FBS9100_ComBase.BattGroupCountMax];
|
|
private FBS9100S_NT_DCDC_State[] m_NT_DCDC_StateList = null;
|
private FBS9100S_NiBian_Data[] mNiBian_Datas = null;
|
private FBS9100S_StemNode_State mStemNode_State = null;
|
private FBS9100S_BusCoupleState mBusCouple_State = null;
|
|
private FBS9100S_SX_DCDC_Data[] m_SX_DCDC_DataList = null;
|
private FBS9100S_LIBMS_AlarmState[] m_LiBMS_AlarmStates = null;
|
private FBS9100S_LiBMS_AnalogData[] m_LiBMS_AnalogDatas = null;
|
|
private FBS9100_JHPowerState mJHPowerState = null;
|
|
private FBS9100_JuHengParam mJHParam = null;
|
|
private Socket socket = null;
|
private ByteBuffer bytebuffer_for_socket_RX = ByteBuffer.allocate(1500);
|
private int m_BattMonCount = 0;
|
private int m_BTSDevSoftWareVersion = 0;
|
private int m_BTSDevHardwareVersion = 0;
|
private int m_BTSDevSoftType = 0; //µ±Ç°BTS°æ±¾
|
|
private static final String TAG = "FBS9100S_Thread";
|
private MysqlConnPool m_ConnPool = null;
|
private boolean S_thread_run_flag = true;
|
private int rx_errcount_for_live_of_thread = 0; //ÓÃÓÚͳ¼ÆsocketͨÐÅÖеÄÒì³£´ÎÊýͳ¼Æ
|
private BattData_RT_Array AL_RTdata = null;
|
private int DevReadCount = 0;
|
private boolean ForceReadVidData = true;
|
private int DevReadCount_Rate = 1;
|
|
private boolean DevFBS9100_Encry_en; //ͨѶÐÒéÊÇ·ñʹÓüÓÃܰ汾
|
|
/*********************************************************************************************/
|
public FBS9100S_SocketClient2(MysqlConnPool m_cp, BattData_RT_Array AL_RTdata_t, Socket socket,AppConfig config)
|
{
|
logger = LogManager.getLogger(this.getClass());
|
|
this.m_StatAndParam = new FBS9100_StatAndParam(socket.getInetAddress().getHostAddress(), 0);
|
this.socket = socket;
|
this.m_ConnPool = m_cp;
|
this.AL_RTdata = AL_RTdata_t;
|
|
this.DevFBS9100_Encry_en = config.getDevFBS9100_Encry_en();
|
//System.err.println(DevFBS9100_Encry_en+"@@@@@@@@@@@@@@@@@@@@@@");
|
/*
|
this.DevReadCount_Rate_CFG = comm_rate;
|
if(this.DevReadCount_Rate_CFG < 1) {
|
this.DevReadCount_Rate_CFG = 1;
|
}
|
|
if(this.DevReadCount_Rate_CFG > 60) {
|
this.DevReadCount_Rate_CFG = 60;
|
}
|
*/
|
setDevReadCountRateFromCFG();
|
//System.out.println("this.DevReadCount_Rate:" + this.DevReadCount_Rate);
|
}
|
|
public FBS9100S_SocketClient2() {
|
// TODO Auto-generated constructor stub
|
}
|
|
private int getBTSSoftwareVersion() {
|
return m_BTSDevSoftWareVersion;
|
}
|
|
private int getBTSDevHardwareVersion() {
|
return m_BTSDevHardwareVersion;
|
}
|
|
private void setDevReadCountRateFromCFG() {
|
this.DevReadCount_Rate = this.AL_RTdata.m_AppCFG.getFbsDevCommRate();
|
// System.out.println("this.DevReadCount_Rate=" + this.DevReadCount_Rate);
|
}
|
|
/**
|
* ɸѡÉ豸idÊÇ·ñºÏ·¨
|
* @return
|
*/
|
private boolean initFBS9100SComm(BattData_RT_Array m_Data) {
|
boolean reg_in_st = false;
|
String check_mode = m_Data.m_AppCFG.getDevFBS9100_CheckMode();
|
logger.debug("DevFBS9100_CheckMode: " + check_mode);
|
for(int cnt=0; cnt<4; cnt++) {
|
try {
|
if(cnt > 1) {
|
//Á¬Ðø2´Îʶ±ðÉ豸ʧ°ÜºóÇл»ÊÇ·ñ¼ÓÃÜÐÒé
|
this.DevFBS9100_Encry_en = !this.DevFBS9100_Encry_en;
|
}
|
Thread.sleep(1000);
|
comm_task_conn_time = Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms);
|
boolean f = SocketComm(FBS9100_ComBase.CMD_GetDeviceInf, ByteBuffer.allocate(0), socket);
|
byte[] ipaddr = this.socket.getInetAddress().getAddress();
|
logger.printf(Level.DEBUG, "ipaddr: %d.%d.%d.%d", ipaddr[0]&0xFF,ipaddr[1]&0xFF,ipaddr[2]&0xFF,ipaddr[3]&0xFF);
|
|
if(((m_StatAndParam.check_dev_id/10000000) == 91) && f) {
|
logger.trace("m_StatAndParam.check_dev_id:" + m_StatAndParam.check_dev_id);
|
for(int i=0; i<m_Data.getItemCount(); i++) {
|
byte[] dev_ipaddr = m_Data.getItem(i).FBSDevIp;
|
int dev_id_t = m_Data.getItem(i).FBSDeviceId;
|
logger.printf(Level.DEBUG, "dev_ipaddr: %d.%d.%d.%d", dev_ipaddr[0]&0xFF,dev_ipaddr[1]&0xFF,dev_ipaddr[2]&0xFF,dev_ipaddr[3]&0xFF);
|
//if(m_Data.getItem(i).FBSDeviceId == m_StatAndParam.dev_id) {
|
if(check_mode.equals("IP")) {
|
if((ipaddr[0]==dev_ipaddr[0])&&(ipaddr[1]==dev_ipaddr[1])
|
&&(ipaddr[2]==dev_ipaddr[2])&&(ipaddr[3]==dev_ipaddr[3])) {
|
m_StatAndParam.dev_id = dev_id_t;
|
//DevFBS9100_Encry_en = m_Data.getItem(i).aescode_en;
|
reg_in_st = true;
|
logger.debug("Find Dev IP Addr ...");
|
}
|
} else {
|
if(m_Data.getItem(i).FBSDeviceId == m_StatAndParam.check_dev_id) {
|
m_StatAndParam.dev_id = dev_id_t;
|
//DevFBS9100_Encry_en = m_Data.getItem(i).aescode_en;
|
reg_in_st = true;
|
logger.debug("Find Dev ID ...");
|
}
|
}
|
|
if(true == reg_in_st) {
|
//µ±Ç°É豸ÐÒé¼ÓÃÜÀàÐÍtrue:¼ÓÃÜ;false:²»¼ÓÃÜ
|
logger.debug("dev_id:"+m_StatAndParam.dev_id+" Dev Encryp Type ------>" + this.DevFBS9100_Encry_en);
|
logger.debug("dev_id:"+m_StatAndParam.dev_id+" Dev Type ------>" + this.m_BTSDevSoftType);
|
|
if(m_Data.getItem(i).getDevRegCode().length() > 8) {
|
if(m_StatAndParam.dev_reg_code.equals(m_Data.getItem(i).getDevRegCode())) {
|
reg_in_st = true;
|
}
|
}
|
break;
|
}
|
}
|
logger.trace("reg_in_st:" + reg_in_st);
|
/*if(false == reg_in_st) {
|
break;
|
}*/
|
|
if(true == reg_in_st) {
|
logger.trace("devid:" + m_StatAndParam.check_dev_id
|
+ ", Êý¾Ý¿âÖÐÆ¥Åädevid³É¹¦!!!!!, IP:" + socket.getInetAddress().getHostAddress());
|
} else {
|
logger.trace("devid:" + m_StatAndParam.check_dev_id
|
+ ", Êý¾Ý¿âÖÐδÕÒµ½Æ¥ÅäµÄdevid, IP:" + socket.getInetAddress().getHostAddress());
|
break;
|
}
|
|
} else {
|
logger.trace(this.getName() + " initFBS9100SComm() devid:" + m_StatAndParam.check_dev_id
|
+ ", ʶ±ðFBS9100SÉ豸ʧ°Ü ");
|
reg_in_st = false;
|
}
|
|
if(true == reg_in_st) {
|
break;
|
}
|
} catch (InterruptedException e) {
|
logger.error(e.toString(), e);
|
}
|
}
|
|
if(false == reg_in_st) {
|
try {
|
socket.close();
|
} catch (IOException e) {
|
// TODO Auto-generated catch block
|
logger.error(e.toString(), e);
|
}
|
}
|
|
return reg_in_st;
|
}
|
/*********************************************************************************************/
|
public void run()
|
{
|
this.setName(TAG + ": " + this.getId());
|
logger.trace("ʶ±ðµ±Ç°µÄ»úÆ÷ÊÇ·ñÊÇFBS9100SÉ豸");
|
S_thread_run_flag = initFBS9100SComm(AL_RTdata);
|
|
if(true == S_thread_run_flag) {
|
int test_cnt = FBS9100_Task_Thread_SQL.queryFBS9100_ResTestCnt(m_ConnPool, m_StatAndParam.dev_id);
|
m_StatAndParam.m_SysState.setResTestCnt(test_cnt);
|
m_StatAndParam.dev_comm_data_flowsum = FBS9100_Task_Thread_SQL.getFbs9100DataCommFlowSum_ById(m_ConnPool, m_StatAndParam);
|
m_StatAndParam.m_SysState.Station_State = FBS9100_Task_Thread_SQL.getFbs9100StationState_ById(m_ConnPool, m_StatAndParam);
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_GetDischargeParmAck;
|
FBS9100_ParamDischarge tmp_dis_param = new FBS9100_ParamDischarge();
|
FBS9100_Task_Thread_SQL.updateFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam, tmp_dis_param);
|
tmp_dis_param = null;
|
m_FBS9100S_DFU = new FBS9100S_DFU(m_ConnPool, m_StatAndParam.dev_id);
|
|
m_NT_DCDC_StateList = new FBS9100S_NT_DCDC_State[FBS9100_ComBase.BTS_DCDC_CountMax];
|
for(int n=0; n<m_NT_DCDC_StateList.length; n++) {
|
m_NT_DCDC_StateList[n] = new FBS9100S_NT_DCDC_State();
|
}
|
FBS9100_Task_Thread_SQL.queryBTS_DCDC_AlarmStat(m_ConnPool, m_StatAndParam.dev_id, m_NT_DCDC_StateList);
|
|
FBS9100_Task_Thread_SQL.createFBS_NiBianTable(m_ConnPool); //´´½¨Äæ±äÐÅÏ¢±í
|
mNiBian_Datas = new FBS9100S_NiBian_Data[2];
|
for(int i=0;i<mNiBian_Datas.length;i++){
|
mNiBian_Datas[i] = new FBS9100S_NiBian_Data();
|
}
|
mStemNode_State = new FBS9100S_StemNode_State();
|
mBusCouple_State = new FBS9100S_BusCoupleState();
|
mJHPowerState = new FBS9100_JHPowerState();
|
mJHParam = new FBS9100_JuHengParam();
|
|
FBS9100_Task_Thread_SQL.insertFBS9100s_stemnode_state_Table(m_ConnPool, m_StatAndParam.dev_id);
|
FBS9100_Task_Thread_SQL.insertFBS9100s_buscouple_state_Table(m_ConnPool, m_StatAndParam.dev_id);
|
FBS9100_Task_Thread_SQL.insertFBS61850_jhstate_Table(m_ConnPool, m_StatAndParam.dev_id);
|
|
FBS9100_Task_Thread_SQL.insertFBS9100SysParam_Table(m_ConnPool, m_StatAndParam.dev_id);
|
|
|
|
int group_max = FBS9100_ComBase.BattGroupCountMax;
|
for(int n=0; n<group_max; n++) {
|
m_RTData[n] = null;
|
}
|
|
m_SX_DCDC_DataList = new FBS9100S_SX_DCDC_Data[FBS9100_ComBase.LIBTS_DCDC_CountMax];
|
m_LiBMS_AlarmStates = new FBS9100S_LIBMS_AlarmState[FBS9100_ComBase.LIBTS_DCDC_CountMax];
|
m_LiBMS_AnalogDatas = new FBS9100S_LiBMS_AnalogData[FBS9100_ComBase.LIBTS_DCDC_CountMax];
|
for(int i=0;i<m_SX_DCDC_DataList.length;i++) {
|
m_SX_DCDC_DataList[i] = new FBS9100S_SX_DCDC_Data();
|
m_LiBMS_AlarmStates[i] = new FBS9100S_LIBMS_AlarmState();
|
m_LiBMS_AnalogDatas[i] = new FBS9100S_LiBMS_AnalogData();
|
}
|
if(m_BTSDevSoftType == FBS9100_ComBase.BTSE_DevType_LIBTS) {
|
//﮵çBTSĬÈϲåÈëÊý¾Ý
|
FBS9100_Task_Thread_SQL.insertLi9130_Bms_Alm(m_ConnPool, m_StatAndParam.dev_id);
|
FBS9100_Task_Thread_SQL.insertLi9130_Bms_State(m_ConnPool, m_StatAndParam.dev_id);
|
FBS9100_Task_Thread_SQL.insertLi9130DcDcData_Table(m_ConnPool, m_StatAndParam.dev_id);
|
FBS9100_Task_Thread_SQL.insertLi9130DcDcParam(m_ConnPool, m_StatAndParam.dev_id);
|
}
|
|
|
for(int n=0; n < AL_RTdata.getItemCount(); n++) {
|
BattData_RT bt_data = AL_RTdata.getItem(n);
|
if(bt_data.FBSDeviceId == m_StatAndParam.dev_id) {
|
int tmp_bg_index = bt_data.GroupIndexInFBSDevice % group_max;
|
m_RTData[tmp_bg_index] = bt_data;
|
comm_task_bg_dev_index[tmp_bg_index] = bt_data.GroupIndexInFBSDevice;
|
comm_task_bg_id[tmp_bg_index] = bt_data.BattGroupId;
|
m_BattMonCount += bt_data.MonCount;
|
comm_task_bg_cnt += 1;
|
m_StatAndParam.dev_station_id = bt_data.StationId;
|
|
BattData_RT_SQL.checkTbBattDataIntegrity(m_ConnPool, bt_data.BattGroupId, bt_data.MonCount);
|
bt_data.clear_al_MonVol_RtOld();
|
}
|
}
|
|
BattData_RT_SQL.checkTbFbs9100StateIntegrity(m_ConnPool, m_StatAndParam.dev_id);
|
|
if(m_BattMonCount > (FBS9100_ComBase.MonomerCountMax-120)) {
|
m_BattMonCount = (FBS9100_ComBase.MonomerCountMax-120);
|
}
|
FBS9100_Task_Thread_SQL.deleteBTSCommTaskStateByDev_Id(m_ConnPool, m_StatAndParam);
|
FBS9100_Task_Thread_SQL.insertBTSCommTaskStateByDev_Id(
|
m_ConnPool, this.getId(), m_StatAndParam.dev_id, m_StatAndParam.dev_reg_code, comm_task_bg_cnt,
|
comm_task_bg_id[0], comm_task_bg_id[1], comm_task_bg_id[2], comm_task_bg_id[3],
|
comm_task_bg_dev_index[0], comm_task_bg_dev_index[1], comm_task_bg_dev_index[2], comm_task_bg_dev_index[3],
|
comm_task_conn_time, "1980-01-01 01:01:01", 0);
|
|
logger.warn("DevId: " + m_StatAndParam.dev_id + ", DevVer: " + m_StatAndParam.m_DevVersion
|
+ " - FBS9100S_SocketServer Thread Started");
|
} else {
|
if(m_StatAndParam.dev_id > 1) {
|
FBS9100_Task_Thread_SQL.deleteBTSCommTaskStateByDev_Id(m_ConnPool, m_StatAndParam);
|
FBS9100_Task_Thread_SQL.insertBTSCommTaskStateByDev_Id(
|
m_ConnPool, this.getId(), m_StatAndParam.dev_id, m_StatAndParam.dev_reg_code, comm_task_bg_cnt,
|
comm_task_bg_id[0], comm_task_bg_id[1], comm_task_bg_id[2], comm_task_bg_id[3],
|
comm_task_bg_dev_index[0], comm_task_bg_dev_index[1], comm_task_bg_dev_index[2], comm_task_bg_dev_index[3],
|
comm_task_conn_time, Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms), 1);
|
}
|
|
return;
|
}
|
|
while(S_thread_run_flag) {
|
try {
|
/******************************** BTS³ä·Åµç¿ØÖƼ°Æä²ÎÊýÉèÖà **********************************/
|
if(m_StatAndParam != null) {
|
//¸ù¾Ý tb_fbs9100_setparam±íÖеÄÊý¾Ý¸øÖ¸¶¨É豸idµÄm_FBS_DiscParam²ÎÊýÉèÖÃÖµ
|
FBS9100_Task_Thread_SQL.queryFbs9100SetParamCmdBydev_id(m_ConnPool, m_StatAndParam);
|
}
|
if(FBS9100_ComBase.CMD_NULL == m_StatAndParam.op_cmd_ack) {
|
if(FBS9100_ComBase.CMD_GetDischargeParm == m_StatAndParam.op_cmd) {
|
SocketComm(FBS9100_ComBase.CMD_GetDischargeParm, ByteBuffer.allocate(0), socket);
|
logger.warn("DevId:" + m_StatAndParam.dev_id + " ¶ÁÈ¡ºËÈݷŵç²ÎÊý");
|
} else {
|
if(FBS9100_ComBase.CMD_SetDischargeParm == m_StatAndParam.op_cmd) {
|
FBS9100_ParamDischarge tmp_set_pm = new FBS9100_ParamDischarge();
|
FBS9100_Task_Thread_SQL.queryFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam, tmp_set_pm);
|
SocketComm(FBS9100_ComBase.CMD_SetDischargeParm, tmp_set_pm.getByteBuffer(), socket);
|
tmp_set_pm = null;
|
logger.warn("DevId:" + m_StatAndParam.dev_id + " ÉèÖúËÈݷŵç²ÎÊý");
|
} else if(FBS9100_ComBase.CMD_Start == m_StatAndParam.op_cmd) {
|
FBS9100_ParamDischarge tmp_set_pm = new FBS9100_ParamDischarge();
|
FBS9100_Task_Thread_SQL.queryFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam, tmp_set_pm);
|
int cmd = FBS9100_ComBase.CMD_StartDischarge; //Æô¶¯·Åµç²âÊÔ
|
if(FBS9100_ComBase.CMD_StartDischarge == tmp_set_pm.test_cmd) {
|
logger.warn("DevId:" + m_StatAndParam.dev_id + " Æô¶¯ºËÈݷŵç²âÊÔ");
|
}else if(FBS9100_ComBase.CMD_StartCharge == tmp_set_pm.test_cmd) {
|
cmd = FBS9100_ComBase.CMD_StartCharge;
|
logger.warn("DevId:" + m_StatAndParam.dev_id + " Æô¶¯³äµç²âÊÔ");
|
} else {
|
cmd = FBS9100_ComBase.CMD_StartResDischarge; //Æô¶¯ÄÚ×è²âÊÔ
|
logger.warn("DevId:" + m_StatAndParam.dev_id + " Æô¶¯ÄÚ×è²âÊÔ");
|
}
|
SocketComm(cmd, ByteBuffer.allocate(0), socket);
|
tmp_set_pm = null;
|
} else if(FBS9100_ComBase.CMD_Stop == m_StatAndParam.op_cmd) {
|
SocketComm(FBS9100_ComBase.CMD_Stop, ByteBuffer.allocate(0), socket);
|
logger.warn("DevId:" + m_StatAndParam.dev_id + " Í£Ö¹²âÊÔ");
|
} else if(FBS9100_ComBase.CMD_ResetSystem == m_StatAndParam.op_cmd) {
|
SocketComm(FBS9100_ComBase.CMD_ResetSystem, ByteBuffer.allocate(0), socket);
|
logger.warn("DevId:" + m_StatAndParam.dev_id + " ÖØÆôBTSÉ豸");
|
} else if(FBS9100_ComBase.CMD_GetDeviceTaskInf == m_StatAndParam.op_cmd) {
|
SocketComm(FBS9100_ComBase.CMD_GetDeviceTaskInf, ByteBuffer.allocate(0), socket);
|
logger.debug("DevId:" + m_StatAndParam.dev_id + " ¶ÁÈ¡BTSÖ÷»úRTOSÈÎÎñÐÅÏ¢");
|
}
|
}
|
}
|
/******************************** BTS³ä·Åµç¿ØÖƼ°Æä²ÎÊýÉèÖà **********************************/
|
sleep(20);
|
/******************************** BTSÉ豸ϵͳ²ÎÊýÉèÖà ***************************************/
|
if(m_StatAndParam != null) {
|
//¸ù¾Ý tb_fbs9100_setparam±íÖеÄÊý¾Ý¸øÖ¸¶¨É豸idµÄm_FBS_DiscParam²ÎÊýÉèÖÃÖµ
|
FBS9100_Task_Thread_SQL.queryFbs9100SysParamCmdBydev_id(m_ConnPool, m_StatAndParam);
|
if(FBS9100_ComBase.CMD_NULL == m_StatAndParam.op_cmd_ack) {
|
if(FBS9100_ComBase.CMD_GetSYSSetParam == m_StatAndParam.op_cmd) {
|
SocketComm(FBS9100_ComBase.CMD_GetSYSSetParam, ByteBuffer.allocate(0), socket);
|
logger.debug("DevId:" + m_StatAndParam.dev_id + " ¶ÁÈ¡BTSÖ÷»úϵͳÉèÖòÎÊý");
|
} else if(FBS9100_ComBase.CMD_SetSYSSetParam == m_StatAndParam.op_cmd) {
|
FBS9100_ParamSystem tmp_sys_param = new FBS9100_ParamSystem();
|
FBS9100_Task_Thread_SQL.queryFbs9100SysParamBydev_id(m_ConnPool, m_StatAndParam, tmp_sys_param);
|
SocketComm(FBS9100_ComBase.CMD_SetSYSSetParam, tmp_sys_param.getByteBuffer(), socket);
|
tmp_sys_param = null;
|
logger.warn("DevId:" + m_StatAndParam.dev_id + " ÉèÖÃBTSÖ÷»úϵͳÉèÖòÎÊý"
|
+ "\n param:" + tmp_sys_param);
|
}else if(FBS9100_ComBase.CMD_ClearSysAlarm == m_StatAndParam.op_cmd) {
|
SocketComm(FBS9100_ComBase.CMD_ClearAlarm, ByteBuffer.allocate(0), socket);
|
logger.debug("DevId:" + m_StatAndParam.dev_id + "Çå³ýBTS¸æ¾¯²ÎÊý");
|
}else if(FBS9100_ComBase.CMD_GetJuHengParam == m_StatAndParam.op_cmd) {
|
//¶ÁÈ¡¾ùºâ²ÎÊý
|
SocketComm(FBS9100_ComBase.CMD_ReadJunHengParam, ByteBuffer.allocate(0), socket);
|
logger.debug("DevId:" + m_StatAndParam.dev_id + " ¶ÁÈ¡BTSÖ÷»ú¾ùºâ²ÎÊý");
|
}else if(FBS9100_ComBase.CMD_SetJuHengParam == m_StatAndParam.op_cmd) {
|
//ÉèÖþùºâ²ÎÊý
|
FBS9100_JuHengParam tmp_jh_param = mJHParam.clone();
|
FBS9100_Task_Thread_SQL.queryFbs9100JhParamBydev_id(m_ConnPool, m_StatAndParam, tmp_jh_param);
|
//System.err.println(tmp_jh_param);
|
SocketComm(FBS9100_ComBase.CMD_WriteJunHengParam, tmp_jh_param.getByteBuffer(), socket);
|
tmp_jh_param = null;
|
}
|
}
|
}
|
/******************************** BTSÉ豸ϵͳ²ÎÊýÉèÖà ***************************************/
|
sleep(20);
|
/******************************** BTSÉ豸µç³Ø²ÎÊýÉèÖà ***************************************/
|
if(m_StatAndParam != null) {
|
//¸ù¾Ý tb_fbs9100_setparam±íÖеÄÊý¾Ý¸øÖ¸¶¨É豸idµÄm_FBS_DiscParam²ÎÊýÉèÖÃÖµ
|
FBS9100_Task_Thread_SQL.queryFbs9100BattParamCmdBydev_id(m_ConnPool, m_StatAndParam);
|
if(FBS9100_ComBase.CMD_NULL == m_StatAndParam.op_cmd_ack) {
|
if(FBS9100_ComBase.CMD_GetBattParam == m_StatAndParam.op_cmd) {
|
logger.debug("DevId:" + m_StatAndParam.dev_id + " ¶ÁÈ¡BTSÖ÷»úµç³Ø²ÎÊý");
|
SocketComm( FBS9100_ComBase.CMD_GetBattParam, ByteBuffer.allocate(0), socket);
|
} else if(FBS9100_ComBase.CMD_SetBattParam == m_StatAndParam.op_cmd) {
|
FBS9100_ParamBatt tmp_batt_pm = new FBS9100_ParamBatt();
|
FBS9100_Task_Thread_SQL.queryFbs9100BattParamBydev_id(m_ConnPool, m_StatAndParam, tmp_batt_pm);
|
|
SocketComm(FBS9100_ComBase.CMD_SetBattParam, tmp_batt_pm.getByteBuffer(), socket);
|
tmp_batt_pm = null;
|
logger.warn("DevId:" + m_StatAndParam.dev_id + " ÉèÖÃBTSÖ÷»úµç³Ø²ÎÊý"
|
+ "\n param:" + tmp_batt_pm);
|
}
|
}
|
}
|
/******************************** BTSÉ豸µç³Ø²ÎÊýÉèÖà ***************************************/
|
sleep(20);
|
/******************************** BTS GPRSÄ£¿éÐÅÏ¢²éѯ **********************************/
|
if(m_StatAndParam != null) {
|
int cmd_gprs = FBS9100_Task_Thread_SQL.queryBTSGPRSCmdBydev_id(m_ConnPool, m_StatAndParam);
|
if(FBS9100_ComBase.CMD_NULL == m_StatAndParam.op_cmd_ack) {
|
if(FBS9100_ComBase.CMD_ReadGPRSCSQ == cmd_gprs) {
|
String gprs_cmd = FBS9100_Task_Thread_SQL.queryBTSGPRS_ATCmd_Bydev_id(m_ConnPool, m_StatAndParam);
|
logger.warn(this.getName() + " DevId: " + m_StatAndParam.dev_id + " ¶ÁÈ¡GPRSÄ£¿é²ÎÊý:" + gprs_cmd);
|
ByteBuffer gprs_bf = ByteBuffer.allocate(gprs_cmd.length()+10);
|
gprs_bf.put(gprs_cmd.getBytes());
|
gprs_bf.put((byte) 0x0D);
|
gprs_bf.put((byte) 0x0A);
|
gprs_bf.flip();
|
if(false == SocketComm(FBS9100_ComBase.CMD_ReadGPRSCSQ, gprs_bf, socket)) {
|
m_StatAndParam.m_GPRS_inf = "comm eer";
|
logger.warn("DevId: " + m_StatAndParam.dev_id + " ¶ÁÈ¡GPRSÄ£¿é²ÎÊýʧ°Ü.");
|
} else {
|
logger.warn("DevId: " + m_StatAndParam.dev_id
|
+ " ¶ÁÈ¡GPRSÄ£¿é²ÎÊý³É¹¦:" + m_StatAndParam.m_GPRS_inf);
|
}
|
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_ReadGPRSCSQAck;
|
FBS9100_Task_Thread_SQL.updateBTSGPRSSateBydev_id(m_ConnPool, m_StatAndParam, gprs_cmd, m_StatAndParam.m_GPRS_inf);
|
}
|
}
|
}
|
/******************************** BTS GPRSÄ£¿éÐÅÏ¢²éѯ **********************************/
|
//-----------------------------------------------------------------------------------//
|
sleep(20);
|
//-----------------------------------------------------------------------------------//
|
DevReadCount += 1;
|
//-----------------------------------------------------------------------------------//
|
|
if((true == ForceReadVidData) || (0 == (DevReadCount%(6*DevReadCount_Rate)))) {
|
//System.out.println("FBS9100_ComBase.CMD_GetVIData:" + ForceReadVidData);
|
if(true == SocketComm(FBS9100_ComBase.CMD_GetVIData, ByteBuffer.allocate(0), socket)) {
|
ForceReadVidData = false;
|
}
|
|
/*
|
if(this.getBTSSoftwareVersion() >= 37) {
|
Calendar cad = Calendar.getInstance();
|
long t_pc = cad.getTimeInMillis()/1000;
|
long t_dev = m_StatAndParam.m_FBS_VCData.m_SysState.DTime.getTimeInMillis()/1000;
|
|
if(Math.abs(t_pc - t_dev) > 30) {
|
sleep(500);
|
SocketComm(FBS9100_ComBase.CMD_SetDateTime,
|
m_StatAndParam.m_FBS_VCData.m_SysState.getDateTimeByteBuffer(), socket);
|
}
|
}
|
*/
|
} else {
|
if(DevReadCount_Rate > 1) {
|
if(0 == (DevReadCount%(5*(DevReadCount_Rate/10+1)))) {
|
//System.out.println("FBS9100_ComBase.CMD_GetState");
|
if(true == SocketComm(FBS9100_ComBase.CMD_GetState, ByteBuffer.allocate(0), socket)){
|
ForceReadVidData = m_StatAndParam.m_SysState.BG_HaveNewData;
|
}
|
|
if (FBS9100_SysState.SYS_STATE_STOPPED != m_StatAndParam.m_SysState.WorkState) {
|
DevReadCount_Rate = 1;
|
}
|
}
|
}
|
}
|
//-----------------------------------------------------------------------------------//
|
if(0 == (DevReadCount%25)) {
|
FBS9100_Task_Thread_SQL.updateBTSCommTaskStateRunTimeByThread_Id(m_ConnPool, this.getId());
|
}
|
//-----------------------------------------------------------------------------------//
|
if(0 == (DevReadCount%50)) {
|
if(true == m_FBS9100S_DFU.check_If_DFU_Is_Eanbled()) {
|
boolean res_t = m_FBS9100S_DFU.runDFU(socket);
|
if(true == res_t) {
|
if((true == m_FBS9100S_DFU.DFU_EN)
|
&& (FBS9100S_DFU_SQL.DFU_STATE_CHECK_OK == m_FBS9100S_DFU.DFU_WR_State)) {
|
if(true == SocketComm(FBS9100_ComBase.CMD_SystemUpdate, ByteBuffer.allocate(0), socket)) {
|
m_FBS9100S_DFU.DFU_EN = false;
|
m_FBS9100S_DFU.DFU_WR_State = FBS9100S_DFU_SQL.DFU_STATE_NULL;
|
FBS9100S_DFU_SQL.updateFbs9100S_DFU_StatByDev_Id(m_ConnPool, m_StatAndParam.dev_id, m_FBS9100S_DFU);
|
//System.out.println(String.format("DevId:%d, DFU Done, FBS9100S_DFU_SQL.updateFbs9100S_DFU_StatByDev_Id",
|
// m_StatAndParam.dev_id));
|
//------- Ö÷¶¯Í˳öµ±Ç°Á¬½Ó,ÒªÇóÔ¶³ÌFBS9100SÖØÐÂÁ¬½Ó½øÀ´½ø¶ø¶ÁÈ¡É豸°æ±¾ºÅ ------
|
S_thread_run_flag = false;
|
//--------------------------------------------------------------------------
|
}
|
}
|
}
|
sleep(20);
|
}
|
}
|
|
if(FBS9100_ComBase.BTSE_DevType_TieTa == m_BTSDevSoftType) {
|
if(1 == DevReadCount_Rate) {
|
if(0 == (DevReadCount%(9*DevReadCount_Rate))) {
|
SocketComm(FBS9100_ComBase.CMD_Get_DCDC_Data, ByteBuffer.allocate(0) , socket);
|
}
|
}
|
if(DevReadCount >= (50*DevReadCount_Rate)) {
|
DevReadCount = 0;
|
if(FBS9100_SysState.SYS_STATE_STOPPED == m_StatAndParam.m_SysState.WorkState) {
|
setDevReadCountRateFromCFG();
|
//DevReadCount_Rate = DevReadCount_Rate_CFG;
|
}
|
}
|
} else {
|
//--------------------------- ¶ÁÈ¡ÄÚ×è²âÊÔ״̬ -------------------------------------//
|
if(this.getBTSSoftwareVersion() >= 38) {
|
if(0 == (DevReadCount%(19*DevReadCount_Rate))) {
|
SocketComm(FBS9100_ComBase.CMD_GetResTestState, ByteBuffer.allocate(0), socket);
|
}
|
}
|
//--------------------------- ¶ÁÈ¡µ¥ÌåζÈÊý¾Ý --------------------------------------//
|
if(0 == (DevReadCount%(29*DevReadCount_Rate))) {
|
SocketComm(FBS9100_ComBase.CMD_GetMonomerTMP, ByteBuffer.allocate(0), socket);
|
}
|
//--------------------------- ¶ÁÈ¡µ¥ÌåÄÚ×èÊý¾Ý --------------------------------------//
|
if(0 == (DevReadCount%(39*DevReadCount_Rate))) {
|
SocketComm(FBS9100_ComBase.CMD_GetMonomerRES, ByteBuffer.allocate(0), socket);
|
}
|
|
if(FBS9100_ComBase.BTSE_DevType_NiBian == m_BTSDevSoftType) {
|
//Äæ±ä°æ±¾É豸ÐÂÔö¸É½Óµãʵʱ״̬ÐÅÏ¢
|
if(0 == (DevReadCount%(20*DevReadCount_Rate))) {
|
//¶ÁÈ¡¸É½ÚµãʵʱÐÅÏ¢
|
SocketComm(FBS9100_ComBase.CMD_ReadStemNode, ByteBuffer.allocate(0), socket);
|
}
|
|
//Äæ±ä°æ±¾É豸ÐÂÔöĸÁª¿ª¹Ø×´Ì¬ÐÅÏ¢
|
if(0 == (DevReadCount%(15*DevReadCount_Rate))) {
|
//¶ÁȡĸÁª¿ª¹Ø×´Ì¬ÐÅÏ¢
|
//System.err.println("¶ÁȡĸÁª¿ª¹Ø×´Ì¬ÐÅÏ¢");
|
SocketComm(FBS9100_ComBase.CMD_ReadBusCoupleState, ByteBuffer.allocate(0), socket);
|
}
|
|
}
|
|
/**
|
* ³£¹æBTSÐÂÔö¾ùºâ¹©µçÐÅÏ¢ºÍ¾ùºâµçÁ÷ÐÅÏ¢¶ÁÈ¡
|
* 2021-08-31 @lijun ¼Ù¸ºÔØÉ豸ÐÂÔö¾ùºâ¹©µçÄ£¿é״̬¶ÁÈ¡
|
* ¼Ù¸ºÔØÉ豸ÐÂÔö¾ùºâ¹©µçÄ£¿é״̬¶ÁÈ¡
|
*/
|
if(0 == (DevReadCount%(15*DevReadCount_Rate))) {
|
//¶ÁÈ¡¾ùºâ¹©µçÄ£¿éÐÅÏ¢
|
//System.err.println("¶ÁÈ¡¾ùºâ¹©µçÄ£¿éÐÅÏ¢");
|
SocketComm(FBS9100_ComBase.CMD_GetJunHengState, ByteBuffer.allocate(0), socket);
|
}
|
|
//--------------------------- ¶ÁÈ¡¾ùºâµçÁ÷Êý¾Ý --------------------------------------//
|
if(0 == (DevReadCount%(39*DevReadCount_Rate))) {
|
//System.out.println("¶ÁÈ¡¾ùºâµçÁ÷");
|
SocketComm(FBS9100_ComBase.CMD_GetMonomerJHCUR, ByteBuffer.allocate(0), socket);
|
}
|
|
|
if(m_StatAndParam.dev_id/1000000 == 911) {
|
//¼Ù¸ºÔØÉ豸
|
//--------------------------- ¶Áȡ©ҺµçѹÊý¾Ý --------------------------------------//
|
if(0 == (DevReadCount%(40*DevReadCount_Rate))) {
|
//System.out.println("¶Áȡ©Һµçѹ");
|
SocketComm(FBS9100_ComBase.CMD_GetMonomerLYVolt, ByteBuffer.allocate(0), socket);
|
}
|
|
}
|
|
/****************** ﮵çBTS ****************************************************************/
|
if(FBS9100_ComBase.BTSE_DevType_LIBTS == m_BTSDevSoftType) {
|
/************** ﮵çBTSµÄDCDC²ÎÊýÐÅÏ¢¶ÁÈ¡ ********************************************************/
|
FBS9100_Task_Thread_SQL.queryLi9130DcDcParamCmdBydev_id(m_ConnPool, m_StatAndParam);
|
if(m_StatAndParam.op_cmd_ack == FBS9100_ComBase.CMD_NULL) {
|
if(m_StatAndParam.op_cmd == FBS9100_ComBase.CMD_GetLiDCDCParam) {
|
int read_cmd = FBS9100_ComBase.CMD_GetLiDCDCParam;
|
if(m_StatAndParam.test_type == 1) {
|
//¶ÁȡǦËáDCDC²ÎÊý
|
read_cmd = FBS9100_ComBase.CMD_GetPbDCDCParam;
|
}
|
SocketComm(read_cmd, ByteBuffer.allocate(0), socket);
|
logger.warn("DevId:" + m_StatAndParam.dev_id + " ¶Áȡ﮵çDCDCÄ£¿é²ÎÊý");
|
}else if(m_StatAndParam.op_cmd == FBS9100_ComBase.CMD_SetLiDCDCParam) {
|
int read_cmd = FBS9100_ComBase.CMD_SetLiDCDCParam; //ÉèÖÃ﮵çDCDC²ÎÊý
|
if(m_StatAndParam.test_type == 1) {
|
//ÉèÖÃǦËáDCDC²ÎÊý
|
read_cmd = FBS9100_ComBase.CMD_SetPbDCDCParam;
|
}
|
FBS9100S_SX_DCDC_Param tmp_dcdc_param = new FBS9100S_SX_DCDC_Param();
|
FBS9100_Task_Thread_SQL.queryLiDCDCParamById(m_ConnPool,m_StatAndParam,tmp_dcdc_param);
|
SocketComm(read_cmd, tmp_dcdc_param.getByteBuffer(), socket);
|
tmp_dcdc_param = null;
|
logger.warn("DevId:" + m_StatAndParam.dev_id + " ÉèÖÃ﮵çBTSÖ÷»úDCDC¹¤×÷ÉèÖòÎÊý"
|
+ "\n param:" + tmp_dcdc_param);
|
}
|
}
|
|
|
/************** ﮵çBTSµÄDCDCÄ£¿éÐÅÏ¢¶ÁÈ¡ ********************************************************/
|
FBS9100_Task_Thread_SQL.queryLi9130DcDcDataCmdBydev_id(m_ConnPool, m_StatAndParam);
|
if(m_StatAndParam.op_cmd_ack == FBS9100_ComBase.CMD_NULL) {
|
if(m_StatAndParam.op_cmd == FBS9100_ComBase.CMD_GetSXDCDCData) {
|
SocketComm(FBS9100_ComBase.CMD_GetSXDCDCData, ByteBuffer.allocate(0), socket);
|
logger.warn("DevId:" + m_StatAndParam.dev_id + " ¶Áȡ﮵çDCDCÄ£¿éÐÅÏ¢");
|
}
|
}
|
|
/************** ﮵çBTSµÄBMSÄ£¿éÐÅÏ¢¶ÁÈ¡ ********************************************************/
|
//FBS9100_Task_Thread_SQL.queryLi9130_Bms_StateCmdBydev_id(m_ConnPool, m_StatAndParam);
|
//if(m_StatAndParam.op_cmd_ack == FBS9100_ComBase.CMD_NULL) {
|
// if(m_StatAndParam.op_cmd == FBS9100_ComBase.CMD_GetLiBMSData) {
|
if(0 == (DevReadCount%(16*DevReadCount_Rate))) {
|
SocketComm(FBS9100_ComBase.CMD_GetLiBMSData, ByteBuffer.allocate(0), socket);
|
//logger.warn("DevId:" + m_StatAndParam.dev_id + " ¶Áȡ﮵çBMS״̬ÐÅÏ¢");
|
}
|
// }
|
//}
|
sleep(10);
|
/************** ﮵çBTSµÄBMSÄ£¿é¸æ¾¯ÐÅÏ¢¶ÁÈ¡ ********************************************************/
|
//FBS9100_Task_Thread_SQL.queryLi9130_Bms_AlmCmdBydev_id(m_ConnPool, m_StatAndParam);
|
//if(m_StatAndParam.op_cmd_ack == FBS9100_ComBase.CMD_NULL) {
|
// if(m_StatAndParam.op_cmd == FBS9100_ComBase.CMD_GetLiBMSState) {
|
if(0 == (DevReadCount%(17*DevReadCount_Rate))) {
|
//logger.warn("DevId:" + m_StatAndParam.dev_id + " ¶Áȡ﮵çBMS״̬¸æ¾¯ÐÅÏ¢");
|
SocketComm(FBS9100_ComBase.CMD_GetLiBMSState, ByteBuffer.allocate(0), socket);
|
}
|
// }
|
//}
|
}
|
|
|
//---------------------------------------------------------------------------------//
|
if(DevReadCount >= (50*DevReadCount_Rate)) {
|
DevReadCount = 0;
|
if(FBS9100_SysState.SYS_STATE_STOPPED == m_StatAndParam.m_SysState.WorkState) {
|
setDevReadCountRateFromCFG();
|
//DevReadCount_Rate = DevReadCount_Rate_CFG;
|
}
|
}
|
//---------------------------------------------------------------------------------//
|
}
|
//---------------------------------------------------------------------------------//
|
sleep(100);
|
//---------------------------------------------------------------------------------//
|
} catch (Exception e) {
|
logger.error(e.toString(), e);
|
try {
|
sleep(2000);
|
} catch (InterruptedException e1) {
|
logger.error(e1.toString(), e1);
|
}
|
}
|
}
|
|
try {
|
if(socket != null) {
|
socket.close();
|
}
|
FBS9100_Task_Thread_SQL.deleteBTSCommTaskStateByThread_Id(m_ConnPool, this.getId());
|
} catch (IOException e) {
|
logger.error(e.toString(), e);
|
}
|
|
logger.trace("DevId: " + m_StatAndParam.dev_id + ", DevVer: " + m_StatAndParam.m_DevVersion
|
+ " Ï߳̽áÊø: Error Count: " + + m_StatAndParam.m_SysState.ErrCommCount);
|
}
|
/*********************************************************************************************/
|
/*********************************************************************************************/
|
|
/**
|
* ÏòÖ¸¶¨µÄsocketͨµÀ·¢ËÍÊý¾Ý£¬ÒÔ¼°½ÓÊÕÊý¾Ý
|
* @param cmd
|
* @param bf
|
* @return
|
* @throws InterruptedException
|
*/
|
|
public boolean SocketComm(int cmd, ByteBuffer bf, Socket socket) throws InterruptedException
|
{
|
boolean res_t = false;
|
try {
|
socket.setSoTimeout(3000);
|
if(S_thread_run_flag) {
|
InputStream in = socket.getInputStream();
|
OutputStream out = socket.getOutputStream();
|
//----------------- clear rx buff for tcp resend packet ----------------//
|
byte[] rx_buf_t = new byte[1024];
|
/*
|
int buf_clr_read_count = 0;
|
while(in.available() > 0) {
|
in.read(rx_buf_t);
|
if(buf_clr_read_count >= 10) {
|
S_thread_run_flag = false;
|
System.err.println(this.getName()
|
+ " dev_id: " + m_StatAndParam.dev_id
|
+ " socket rx_buff clear error......");
|
res_t = false;
|
return res_t;
|
}
|
}*/
|
//----------------------------------------------------------------------//
|
bytebuffer_for_socket_RX.order(ByteOrder.LITTLE_ENDIAN);
|
bytebuffer_for_socket_RX.clear();
|
//--------------------- socket write -----------------------------------//
|
byte[] cipher_tx_t = null;
|
//ÊÇ·ñΪ¼ÓÃܰ汾
|
boolean aes_en = this.DevFBS9100_Encry_en;
|
Ecb_Aes my_aes = new Ecb_Aes();
|
if(cmd == FBS9100_ComBase.CMD_ReadGPRSCSQ) {
|
cipher_tx_t = new byte[bf.limit()];
|
bf.get(cipher_tx_t);
|
} else {
|
byte[] plain_tx_t = makeCommBuf(cmd, bf, aes_en);
|
if(aes_en) {
|
cipher_tx_t = new byte[plain_tx_t.length];
|
my_aes.ecb_encrypt(plain_tx_t, cipher_tx_t, plain_tx_t.length);
|
//System.out.println("·¢ËͼÓÃÜÊý¾Ý£º"+ComFn.bytesToHexString(cipher_tx_t, cipher_tx_t.length));
|
}else {
|
cipher_tx_t = plain_tx_t;
|
}
|
//System.out.println("·¢ËÍÊý¾Ý£º"+ComFn.bytesToHexString(plain_tx_t, plain_tx_t.length));
|
}
|
|
//=====================================================================//
|
Date d1 = new Date();
|
|
int rx_read_time_out = 0;
|
out.write(cipher_tx_t);
|
out.flush();
|
m_StatAndParam.makeDevCommDataFlowSum(cipher_tx_t.length);
|
|
while(true) {
|
if(in.available() > 0) {
|
rx_read_time_out = 0;
|
int rx_len_t = in.read(rx_buf_t);
|
if((bytebuffer_for_socket_RX.position()+rx_len_t)
|
< (bytebuffer_for_socket_RX.capacity()-1)) {
|
bytebuffer_for_socket_RX.put(rx_buf_t, 0, rx_len_t);
|
}
|
} else {
|
rx_read_time_out += 1;
|
if((bytebuffer_for_socket_RX.position()>8) && (rx_read_time_out>10)){
|
res_t = true;
|
break;
|
}
|
|
if(rx_read_time_out > 220) {
|
break;
|
}
|
}
|
Thread.sleep(10);
|
}
|
|
bytebuffer_for_socket_RX.flip();
|
m_StatAndParam.makeDevCommDataFlowSum(bytebuffer_for_socket_RX.limit());
|
|
Date d2 = new Date();
|
long comm_tms = (d2.getTime() - d1.getTime());
|
if(comm_tms < 200) {
|
Thread.sleep(200 - comm_tms);
|
}
|
/*
|
System.out.println(this.getName()
|
+ " dev_id:" + m_StatAndParam.dev_id
|
+ " cmd:" + cmd
|
+ " d2-d1:" + (comm_tms)+"ms"
|
+ " rx_len:" + bytebuffer_for_socket_RX.limit()
|
//+ " tx_count:" + m_StatAndParam.m_FBS_VCData.m_SysState.CommCount
|
//+ " rx_err_sum:" + m_StatAndParam.m_FBS_VCData.m_SysState.ErrCommCount
|
//+ " rx_err_count:" + rx_errcount_for_live_of_thread
|
+ Com.getNowTimeWithAt());
|
*/
|
byte[] cipher_buf = new byte[bytebuffer_for_socket_RX.limit()];
|
byte[] plain_buf = new byte[bytebuffer_for_socket_RX.limit()];
|
bytebuffer_for_socket_RX.get(cipher_buf);
|
if(cmd == FBS9100_ComBase.CMD_ReadGPRSCSQ) {
|
if(bytebuffer_for_socket_RX.limit() > 2) {
|
rx_errcount_for_live_of_thread = 0;
|
res_t = true;
|
|
m_StatAndParam.m_GPRS_inf = new String(cipher_buf);
|
//System.out.println("this.getName() + " + " DevId: " + m_StatAndParam.dev_id
|
// + " GPRS RF Level:" + m_StatAndParam.m_GPRS_CSQ);
|
}
|
} else {
|
if(aes_en) {
|
//System.out.println("½ÓÊÕÊý¾Ý£º"+ComFn.bytesToHexString(cipher_buf,cipher_buf.length));
|
my_aes.ecb_decrypt(cipher_buf, plain_buf, cipher_buf.length);
|
}else {
|
plain_buf = cipher_buf;
|
}
|
//System.out.println("½ÓÊÕÊý¾Ý£º"+ComFn.bytesToHexString(plain_buf,plain_buf.length));
|
if((cipher_buf.length > 8) && (true == getDataFromCommBuf(plain_buf))) {
|
m_StatAndParam.m_SysState.setCommCountInc();
|
rx_errcount_for_live_of_thread = 0;
|
res_t = true;
|
} else {
|
res_t = false;
|
rx_errcount_for_live_of_thread++;
|
m_StatAndParam.m_SysState.setErrCommCountInc(bytebuffer_for_socket_RX.limit());
|
}
|
}
|
//System.out.println(cmd+"===="+m_StatAndParam.m_SysState.ErrCommCount);
|
} else {
|
S_thread_run_flag = false;
|
m_StatAndParam.m_SysState.setErrCommCountInc(0);
|
}
|
} catch (Exception e) {
|
logger.error(e.toString(), e);
|
|
S_thread_run_flag = false;
|
m_StatAndParam.m_SysState.setErrCommCountInc(0);
|
} finally {
|
//ÈôÔÚͨÐŵĹý³ÌÖгöÏÖ5´ÎͨÐÅÒì³£¹Ø±ÕÁ¬½Ó
|
if(rx_errcount_for_live_of_thread >= 5){
|
S_thread_run_flag = false;
|
}
|
}
|
return res_t;
|
}
|
/*********************************************************************************************/
|
/*********************************************************************************************/
|
public byte[] makeCommBuf(final int cmd, ByteBuffer bf, boolean aes_en)
|
{
|
ByteBuffer bbf = FBS9100_ComBuf.makeFbs9100CommBuf(0xFF, cmd, bf, aes_en);
|
byte byte_rest[] = new byte[bbf.limit()];
|
bbf.get(byte_rest);
|
return byte_rest;
|
}
|
/*********************************************************************************************/
|
private void resetNTDcDcData()
|
{
|
for(int n=0; n<m_NT_DCDC_StateList.length; n++) {
|
m_NT_DCDC_StateList[n].ModeSetComm = 0;
|
m_NT_DCDC_StateList[n].RunSetComm = 0;
|
}
|
FBS9100_Task_Thread_SQL.resetFbs9100S_DCDC_Data_ByDev_Id(m_ConnPool, m_StatAndParam.dev_id);
|
}
|
/*********************************************************************************************/
|
private void getNTDcDcDataFromCommBuf(ByteBuffer bf)
|
{
|
boolean read_res = false;
|
|
FBS9100S_NT_DCDC_Data[] al_DCDC_Data = new FBS9100S_NT_DCDC_Data[FBS9100_ComBase.BTS_DCDC_CountMax];
|
for(int n=0; n<al_DCDC_Data.length; n++) {
|
al_DCDC_Data[n] = new FBS9100S_NT_DCDC_Data();
|
}
|
|
for(int n=0; n<al_DCDC_Data.length; n++) {
|
if(true == al_DCDC_Data[n].putByteBuffer(bf)) {
|
read_res = true;
|
} else {
|
break;
|
}
|
}
|
if(true == read_res) {
|
for(int n=0; n<FBS9100_ComBase.BattGroupCountMax; n++) {
|
if(null != m_RTData[n]) {
|
m_RTData[n].m_DCDC_Data.copyData(al_DCDC_Data[0]);
|
}
|
}
|
|
if(FBS9100_ComBase.SYS_STATE_STOPPED == m_StatAndParam.m_SysState.WorkState) {
|
resetNTDcDcData();
|
}
|
|
if(null != m_StatAndParam.m_SysState) {
|
if(FBS9100_SysState.SYS_STATE_STOPPED != m_StatAndParam.m_SysState.WorkState) {
|
FBS9100_Task_Thread_SQL.updateFbs9100S_DCDC_Data_ByDev_Id(m_ConnPool,
|
al_DCDC_Data,
|
m_StatAndParam.dev_id);
|
|
for(int n=0; n<al_DCDC_Data.length; n++) {
|
if(n >= m_NT_DCDC_StateList.length) {
|
break;
|
}
|
if(al_DCDC_Data[n].SMR_Alarm1 != m_NT_DCDC_StateList[n].SMR_Alarm1) {
|
FBS9100_Task_Thread_SQL.insertFBS_EventToTable(m_ConnPool, m_StatAndParam.dev_id,
|
FBS9100S_SocketClient2.EveType_BTS_DCDC_Alarm, n+1,
|
m_NT_DCDC_StateList[n].SMR_Alarm1, al_DCDC_Data[n].SMR_Alarm1,
|
m_StatAndParam.m_SysState.WorkState);
|
m_NT_DCDC_StateList[n].SMR_Alarm1 = al_DCDC_Data[n].SMR_Alarm1;
|
}
|
if(al_DCDC_Data[n].ModeSetComm != m_NT_DCDC_StateList[n].ModeSetComm) {
|
FBS9100_Task_Thread_SQL.insertFBS_EventToTable(m_ConnPool, m_StatAndParam.dev_id,
|
FBS9100S_SocketClient2.EveType_BTS_DCDC_RunMode, n+1,
|
m_NT_DCDC_StateList[n].ModeSetComm, al_DCDC_Data[n].ModeSetComm,
|
m_StatAndParam.m_SysState.WorkState);
|
m_NT_DCDC_StateList[n].ModeSetComm = al_DCDC_Data[n].ModeSetComm;
|
}
|
if(al_DCDC_Data[n].RunSetComm != m_NT_DCDC_StateList[n].RunSetComm) {
|
FBS9100_Task_Thread_SQL.insertFBS_EventToTable(m_ConnPool, m_StatAndParam.dev_id,
|
FBS9100S_SocketClient2.EveType_BTS_DCDC_RunStat, n+1,
|
m_NT_DCDC_StateList[n].RunSetComm, al_DCDC_Data[n].RunSetComm,
|
m_StatAndParam.m_SysState.WorkState);
|
m_NT_DCDC_StateList[n].RunSetComm = al_DCDC_Data[n].RunSetComm;
|
}
|
}
|
}
|
}
|
}
|
|
for(int n=0; n<al_DCDC_Data.length; n++) {
|
al_DCDC_Data[n] = null;
|
}
|
}
|
/*********************************************************************************************/
|
private boolean getDataFromCommBuf(final byte[] bytes)
|
{
|
boolean isSuccess = false;
|
ByteBuffer bf = ByteBuffer.allocate(bytes.length);
|
bf.order(ByteOrder.LITTLE_ENDIAN);
|
bf.put(bytes);
|
bf.flip();
|
|
if(true == m_FBS_Cmd.putByteBuffer(bf))
|
{
|
|
if((FBS9100_ComBase.CMD_StartDischarge == m_FBS_Cmd.CMD)
|
||(FBS9100_ComBase.CMD_StartResDischarge == m_FBS_Cmd.CMD)
|
||(FBS9100_ComBase.CMD_StartCharge == m_FBS_Cmd.CMD)
|
||(FBS9100_ComBase.CMD_Stop == m_FBS_Cmd.CMD)
|
||(FBS9100_ComBase.CMD_ResetSystem == m_FBS_Cmd.CMD))
|
{
|
if((FBS9100_ComBase.CMD_StartDischarge == m_FBS_Cmd.CMD)
|
||(FBS9100_ComBase.CMD_StartResDischarge == m_FBS_Cmd.CMD)
|
||(FBS9100_ComBase.CMD_StartCharge == m_FBS_Cmd.CMD)) {
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_StartAck;
|
}
|
if(FBS9100_ComBase.CMD_Stop == m_FBS_Cmd.CMD) {
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_StopAck;
|
}
|
if(FBS9100_ComBase.CMD_ResetSystem == m_FBS_Cmd.CMD) {
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_ResetSystemAck;
|
}
|
FBS9100_Task_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool, m_StatAndParam);
|
isSuccess = true;
|
}
|
//------------------- ¶ÁÈ¡FBS9100״̬Êý¾Ý --------------------
|
else if(FBS9100_ComBase.CMD_GetState == m_FBS_Cmd.CMD)
|
{
|
if(true == m_StatAndParam.m_SysState.putByteBuffer(bf)) {
|
updateBTSStationState(m_StatAndParam.m_SysState);
|
FBS9100_Task_Thread_SQL.updateFbs9100StateOnlyByDev_Id(m_ConnPool, m_StatAndParam);
|
isSuccess = true;
|
}
|
}
|
//------------------- ¶ÁÈ¡FBS9100µçѹµçÁ÷Êý¾Ý --------------------
|
else if(FBS9100_ComBase.CMD_GetVIData == m_FBS_Cmd.CMD)
|
{
|
if(true == m_StatAndParam.m_SysState.putByteBuffer(bf))
|
{
|
FBS9100_VCData vc_data = new FBS9100_VCData();
|
if(true == vc_data.putByteBuffer(bf, m_BTSDevSoftType, this.getBTSSoftwareVersion(),this.getBTSDevHardwareVersion()))
|
{
|
updateBTSStationState(m_StatAndParam.m_SysState);
|
getFBS9100MonVolData(vc_data, m_StatAndParam.m_SysState);
|
isSuccess = true;
|
/*** 2020-12-04 lijun Ìí¼ÓÅж϶ÁÈ¡Äæ±ä°æ±¾BTSµÄÄæ±äÐÅÏ¢ *****/
|
if(FBS9100_ComBase.BTSE_DevType_NiBian == m_BTSDevSoftType) {
|
//·ÀÀ×ÐÅÏ¢¸ü»»Î»ÖÃ
|
m_StatAndParam.m_SysState.FangLeiState = vc_data.monMIN_num[2];
|
|
//Äæ±ä°æ±¾µÄBTSͨѶÐÒé
|
getNiBianDataFromCommBuf(bf);
|
FBS9100_Task_Thread_SQL.updateFBS9100S_NiBianStateTable(m_ConnPool, mNiBian_Datas, m_StatAndParam.dev_id);
|
}else if(FBS9100_ComBase.BTSE_DevType_TieTa != m_BTSDevSoftType) {
|
getNTDcDcDataFromCommBuf(bf);
|
}
|
|
FBS9100_Task_Thread_SQL.updateFbs9100StateByDev_Id(m_ConnPool, vc_data, m_StatAndParam);
|
/*
|
Date dt_t = new Date(m_StatAndParam.m_FBS_VCData.m_SysState.DTime.getTimeInMillis());
|
System.out.println("BTS:" + Com.getDateTimeFormat(dt_t, Com.DTF_YMDhms));
|
System.out.println("PC:" + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
|
*/
|
}
|
vc_data = null;
|
}
|
}
|
//------------------- ¶ÁÈ¡FBS9100ÄÚ²¿DCDCÄ£¿é״̬Êý¾Ý ---------------
|
else if(FBS9100_ComBase.CMD_Get_DCDC_Data == m_FBS_Cmd.CMD)
|
{
|
getNTDcDcDataFromCommBuf(bf);
|
|
isSuccess = true;
|
}
|
//------------------- ¶ÁÈ¡FBS9100ÄÚ×è²âÊÔ״̬ -----------------------
|
else if(FBS9100_ComBase.CMD_GetResTestState == m_FBS_Cmd.CMD) {
|
FBS9100_ResState m_res_test_stat = new FBS9100_ResState();
|
if(true == m_res_test_stat.putByteBuffer(bf)) {
|
m_StatAndParam.m_SysState.setResTestCnt(m_res_test_stat.ResTestCntSum);
|
/*
|
//----------------------------------------------------------//
|
System.out.println("m_ResTestState.ResTestState:" + m_ResTestState.ResTestState);
|
System.out.println("m_ResTestState.ResTestCntSum:" + m_ResTestState.ResTestCntSum);
|
System.out.println("m_StatAndParam.m_FBS_VCData.m_SysState.getResTestCnt():"
|
+ m_StatAndParam.m_FBS_VCData.m_SysState.getResTestCnt());
|
//----------------------------------------------------------//
|
*/
|
isSuccess = true;
|
}
|
m_res_test_stat = null;
|
}
|
//------------------- ¶ÁÈ¡FBS9100·Åµç²âÊÔ״̬ -----------------------
|
else if(FBS9100_ComBase.CMD_GetDischargeState == m_FBS_Cmd.CMD)
|
{
|
//if(true == m_CapTestState.putByteBuffer(bf)){
|
isSuccess = true;
|
//}
|
}
|
//------------------- ¶ÁÈ¡FBS9100³äµç²âÊÔ״̬ -----------------------
|
else if(FBS9100_ComBase.CMD_GetChargeState == m_FBS_Cmd.CMD)
|
{
|
//if(true == m_ChrTestState.putByteBuffer(bf)){
|
isSuccess = true;
|
//}
|
}
|
//------------------- ¶ÁÈ¡FBS9100µç³Ø²ÎÊý -------------------------
|
else if(FBS9100_ComBase.CMD_GetBattParam == m_FBS_Cmd.CMD)
|
{
|
FBS9100_ParamBatt tmp_batt_pm = new FBS9100_ParamBatt();
|
if(true == tmp_batt_pm.putByteBuffer(bf)) {
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_GetBattParamACK;
|
FBS9100_Task_Thread_SQL.updateFbs9100BattParamBydev_id(m_ConnPool, m_StatAndParam, tmp_batt_pm);
|
isSuccess = true;
|
|
logger.debug("DevId:" + m_StatAndParam.dev_id + " ÊÕµ½BTSÖ÷»úµç³Ø²ÎÊý"
|
+ "\n param:" + tmp_batt_pm);
|
}
|
tmp_batt_pm = null;
|
}
|
//------------------- ÉèÖÃFBS9100µç³Ø²ÎÊý -------------------------
|
else if(FBS9100_ComBase.CMD_SetBattParam == m_FBS_Cmd.CMD) {
|
FBS9100_ParamBatt tmp_batt_pm = new FBS9100_ParamBatt();
|
if(true == tmp_batt_pm.putByteBuffer(bf)){
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_SetBattParamACK;
|
FBS9100_Task_Thread_SQL.updateFbs9100BattParamCmdAckBydev_id(m_ConnPool, m_StatAndParam);
|
isSuccess = true;
|
}
|
tmp_batt_pm = null;
|
}
|
//------------------- ¶ÁÈ¡FBS9100ϵͳ²ÎÊý -------------------------
|
else if(FBS9100_ComBase.CMD_GetSYSSetParam == m_FBS_Cmd.CMD)
|
{
|
FBS9100_ParamSystem tmp_sys_param = new FBS9100_ParamSystem();
|
if(true == tmp_sys_param.putByteBuffer(bf)){
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_GetSYSSetParamAck;
|
FBS9100_Task_Thread_SQL.updateFbs9100SysParamBydev_id(m_ConnPool, m_StatAndParam, tmp_sys_param);
|
isSuccess = true;
|
}
|
tmp_sys_param = null;
|
logger.debug("DevId:" + m_StatAndParam.dev_id + " ÊÕµ½BTSÖ÷»úϵͳ²ÎÊý"
|
+ "\n param:" + tmp_sys_param);
|
}
|
//------------------- ÉèÖÃFBS9100ϵͳ²ÎÊý -------------------------
|
else if(FBS9100_ComBase.CMD_SetSYSSetParam == m_FBS_Cmd.CMD)
|
{
|
FBS9100_ParamSystem tmp_sys_param = new FBS9100_ParamSystem();
|
if(true == tmp_sys_param.putByteBuffer(bf)){
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_SetSYSSetParamAck;
|
FBS9100_Task_Thread_SQL.updateFbs9100SysParamCmdAckBydev_id(m_ConnPool, m_StatAndParam);
|
isSuccess = true;
|
}
|
tmp_sys_param = null;
|
}
|
else if(FBS9100_ComBase.CMD_ClearAlarm == m_FBS_Cmd.CMD) {
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_ClearSysAlarm_ACK;
|
FBS9100_Task_Thread_SQL.updateFbs9100SysParamCmdAckBydev_id(m_ConnPool, m_StatAndParam);
|
isSuccess = true;
|
}
|
//------------------- ¶ÁÈ¡FBS9100·Åµç²ÎÊý -------------------------
|
else if(FBS9100_ComBase.CMD_GetDischargeParm == m_FBS_Cmd.CMD)
|
{
|
FBS9100_ParamDischarge tmp_DiscParamFromDev = new FBS9100_ParamDischarge();
|
if(true == tmp_DiscParamFromDev.putByteBuffer(bf)) {
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_GetDischargeParmAck;
|
FBS9100_Task_Thread_SQL.updateFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam, tmp_DiscParamFromDev);
|
isSuccess = true;
|
logger.debug("DevId:" + m_StatAndParam.dev_id + " ÊÕµ½BTSÖ÷»úºËÈݷŵç²ÎÊý"
|
+ "\n param:" + tmp_DiscParamFromDev);
|
}
|
tmp_DiscParamFromDev = null;
|
}
|
//------------------- ÉèÖÃFBS9100·Åµç²ÎÊý -------------------------
|
else if(FBS9100_ComBase.CMD_SetDischargeParm == m_FBS_Cmd.CMD)
|
{
|
FBS9100_ParamDischarge tmp_DiscParam = new FBS9100_ParamDischarge();
|
if(true == tmp_DiscParam.putByteBuffer(bf)){
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_SetDischargeParmAck;
|
FBS9100_Task_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool, m_StatAndParam);
|
isSuccess = true;
|
}
|
tmp_DiscParam = null;
|
}
|
//------------------- ¶ÁÈ¡FBS9100³äµç²ÎÊý -------------------------
|
else if(FBS9100_ComBase.CMD_GetChargeParm == m_FBS_Cmd.CMD)
|
{
|
//if(true == m_FBS_ChargeParam.putByteBuffer(bf)){
|
isSuccess = true;
|
//}
|
}
|
//------------------- ÉèÖÃFBS9100³äµç²ÎÊý -------------------------
|
else if(FBS9100_ComBase.CMD_SetChargeParm == m_FBS_Cmd.CMD)
|
{
|
//if(true == m_FBS_ChargeParam.putByteBuffer(bf)){
|
isSuccess = true;
|
//}
|
}
|
//------------------- ¶ÁÈ¡FBS9100ÈÝÁ¿ÄÚ×è²âÊÔÊý¾Ý ------------------
|
else if((FBS9100_ComBase.CMD_GetMonomerRES == m_FBS_Cmd.CMD) //µ¥ÌåÄÚ×è
|
||(FBS9100_ComBase.CMD_GetMonomerTMP == m_FBS_Cmd.CMD) //µ¥ÌåζÈ
|
||(FBS9100_ComBase.CMD_GetMonomerJHCUR == m_FBS_Cmd.CMD) //µ¥Ìå¾ùºâµçÁ÷
|
||(FBS9100_ComBase.CMD_GetMonomerLYVolt == m_FBS_Cmd.CMD) //µ¥Ìå©Һµçѹ
|
/*||(FBS_ComBase.CMD_GetMonomerCAP == m_FBS_Cmd.CMD)
|
||(FBS_ComBase.CMD_GetMonomerChargeCAP == m_FBS_Cmd.CMD)*/)
|
{
|
FBS9100_ResCapData m_res_cap_data = new FBS9100_ResCapData();
|
if(true == m_res_cap_data.putByteBuffer(bf, m_FBS_Cmd.CMD)) {
|
isSuccess = true;
|
getFBS9100MonResData(m_FBS_Cmd.CMD, m_res_cap_data);
|
//msg = "Get MonomerCAP or MonomerRES from FBS9100 OK!!!";
|
}
|
m_res_cap_data = null;
|
} else if(FBS9100_ComBase.CMD_GetDeviceInf == m_FBS_Cmd.CMD) {
|
FBS9100_DeviceInf deviceinf = new FBS9100_DeviceInf();
|
if(true == deviceinf.putByteBuffer(bf)) {
|
m_BTSDevSoftWareVersion = deviceinf.SoftwareVersion;
|
m_BTSDevHardwareVersion = deviceinf.HardwareVersion;
|
m_StatAndParam.m_DevVersion = String.format("D:%d,V%d.%02d.%02d",
|
deviceinf.DeviceType,
|
deviceinf.DeviceVersion,
|
deviceinf.HardwareVersion,
|
deviceinf.SoftwareVersion);
|
|
m_StatAndParam.check_dev_id = deviceinf.BackUp6*256*256*256
|
+ deviceinf.BackUp5*256*256
|
+ deviceinf.BackUp4*256
|
+ deviceinf.BackUp3;
|
|
m_BTSDevSoftType = deviceinf.getBTSDevSoftType();
|
|
String tmp_str = "";
|
for(int n=0; n<4; n++) {
|
if(tmp_str.length() > 2) {
|
tmp_str += ".";
|
}
|
tmp_str += String.format("%8X", deviceinf.MCU_ID[n]);
|
}
|
m_StatAndParam.dev_reg_code = tmp_str;
|
logger.trace(m_StatAndParam.dev_id);
|
isSuccess = true;
|
}
|
} else if(FBS9100_ComBase.CMD_GetDeviceTaskInf == m_FBS_Cmd.CMD) {
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_GetDeviceTaskInfAck;
|
FBS9100_Task_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool, m_StatAndParam);
|
try {
|
Charset charset = Charset.forName("utf-8");
|
String task_inf = charset.decode(bf).toString();
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_GetDeviceTaskInfAck;
|
FBS9100_Task_Thread_SQL.updateBTS_TaskInf_To_GPRSTableBydev_id(m_ConnPool, m_StatAndParam, task_inf);
|
isSuccess = true;
|
} catch (Exception ex) {
|
ex.printStackTrace();
|
}
|
} else if(FBS9100_ComBase.CMD_ReadCMCCVolCurr == m_FBS_Cmd.CMD) {
|
FBS9100_CMCC_Power cmcc_power = new FBS9100_CMCC_Power();
|
if(cmcc_power.putByteBuffer(bf)) {
|
isSuccess = true;
|
}
|
}else if(FBS9100_ComBase.CMD_ReadStemNode == m_FBS_Cmd.CMD) {
|
if(mStemNode_State.putByteBuffer(bf)) {
|
//
|
//logger.info("¶ÁÈ¡¸É½ÚµãÐÅÏ¢³É¹¦");
|
//System.err.println(mStemNode_State);
|
FBS9100_Task_Thread_SQL.updateFBS9100s_stemnode_state_Table(m_ConnPool, mStemNode_State, m_StatAndParam.dev_id);
|
isSuccess = true;
|
}
|
}else if(FBS9100_ComBase.CMD_ReadBusCoupleState == m_FBS_Cmd.CMD) {
|
if(mBusCouple_State.putByteBuffer(bf)) {
|
//
|
//logger.info("¶ÁȡĸÁª¿ª¹Ø×´Ì¬");
|
//System.err.println(mBusCouple_State);
|
FBS9100_Task_Thread_SQL.updateFBS9100s_buscouple_state_Table(m_ConnPool, mBusCouple_State, m_StatAndParam);
|
isSuccess = true;
|
}
|
} else if(FBS9100_ComBase.CMD_SetDateTime == m_FBS_Cmd.CMD) {
|
isSuccess = true;
|
logger.debug("DevId:" + m_StatAndParam.dev_id + " ×Ô¶¯Í¬²½BTS/FBSÉ豸ÈÕÆÚʱ¼ä³É¹¦!");
|
} else if(FBS9100_ComBase.CMD_SystemUpdate == m_FBS_Cmd.CMD) {
|
logger.debug("DevId: " + m_StatAndParam.dev_id + " FBS9100_ComBase.CMD_SystemUpdate Done!");
|
isSuccess = true;
|
}else if(FBS9100_ComBase.CMD_GetJunHengState == m_FBS_Cmd.CMD) {
|
if(mJHPowerState.putByteBuffer(bf)) {
|
//System.out.println(mJHPowerState);
|
FBS9100_Task_Thread_SQL.updateFBS61850_jhstate_Table(m_ConnPool, mJHPowerState, m_StatAndParam);
|
isSuccess = true;
|
}
|
}else if(FBS9100_ComBase.CMD_ReadJunHengParam == m_FBS_Cmd.CMD) {
|
//¶ÁÈ¡¾ùºâ²ÎÊý³É¹¦
|
if(true == mJHParam.putByteBuffer(bf)) {
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_GetJuHengParamAck;
|
FBS9100_Task_Thread_SQL.updateFbs9100JHParamBydev_id(m_ConnPool, m_StatAndParam, mJHParam);
|
isSuccess = true;
|
}
|
}else if(FBS9100_ComBase.CMD_WriteJunHengParam == m_FBS_Cmd.CMD) {
|
FBS9100_JuHengParam tmp_jh_param = new FBS9100_JuHengParam();
|
if(tmp_jh_param.putByteBuffer(bf)) {
|
mJHParam = tmp_jh_param.clone();
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_SetJuHengParamAck;
|
FBS9100_Task_Thread_SQL.updateFbs9100JHParamBydev_id(m_ConnPool, m_StatAndParam, tmp_jh_param);
|
isSuccess = true;
|
}
|
tmp_jh_param = null;
|
}else if(FBS9100_ComBase.CMD_GetLiDCDCParam == m_FBS_Cmd.CMD ||
|
FBS9100_ComBase.CMD_GetPbDCDCParam == m_FBS_Cmd.CMD) {
|
FBS9100S_SX_DCDC_Param tmp_dcdc_param = new FBS9100S_SX_DCDC_Param();
|
if(tmp_dcdc_param.putByteBuffer(bf)) {
|
//¶Áȡ﮵çBTSµÄDCDC²ÎÊý³É¹¦
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_GetLiDCDCParam_Ack;
|
FBS9100_Task_Thread_SQL.updateLi_DCDCParamBydev_id(m_ConnPool, m_StatAndParam, tmp_dcdc_param);
|
isSuccess = true;
|
}
|
tmp_dcdc_param = null;
|
}else if(FBS9100_ComBase.CMD_SetLiDCDCParam == m_FBS_Cmd.CMD ||
|
FBS9100_ComBase.CMD_SetPbDCDCParam == m_FBS_Cmd.CMD) {
|
FBS9100S_SX_DCDC_Param tmp_dcdc_param = new FBS9100S_SX_DCDC_Param();
|
if(tmp_dcdc_param.putByteBuffer(bf)) {
|
//¶Áȡ﮵çBTSµÄDCDC²ÎÊý³É¹¦
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_SetLiDCDCParam_Ack;
|
FBS9100_Task_Thread_SQL.updateLi_DCDCParamBydev_id(m_ConnPool, m_StatAndParam, tmp_dcdc_param);
|
isSuccess = true;
|
}
|
tmp_dcdc_param = null;
|
} else if(FBS9100_ComBase.CMD_GetSXDCDCData == m_FBS_Cmd.CMD) {
|
getLiDCDCDataFromCommBuf(bf);
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_GetSXDCDCData_Ack;
|
FBS9100_Task_Thread_SQL.updateLi9130_Dcdc_DataBydev_id(m_ConnPool, m_StatAndParam, m_SX_DCDC_DataList);
|
isSuccess = true;
|
} else if(FBS9100_ComBase.CMD_GetLiBMSData == m_FBS_Cmd.CMD) {
|
getLiBMSANALOGDataFromCommBuf(bf);
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_GetLiBMSData_Ack;
|
FBS9100_Task_Thread_SQL.updateLi9130_Bms_StateBydev_id(m_ConnPool, m_StatAndParam, m_LiBMS_AnalogDatas);
|
isSuccess = true;
|
/*FBS9100S_LiBMS_AnalogData tmp_bms_data = new FBS9100S_LiBMS_AnalogData();
|
System.err.println("¶ÁÈ¡BMSÐÅÏ¢³É¹¦");
|
if(tmp_bms_data.putByteBuffer(bf)) {
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_GetLiBMSData_Ack;
|
FBS9100_Task_Thread_SQL.updateLi9130_Bms_StateBydev_id(m_ConnPool, m_StatAndParam, tmp_bms_data);
|
isSuccess = true;
|
}
|
tmp_bms_data = null;*/
|
}else if(FBS9100_ComBase.CMD_GetLiBMSState == m_FBS_Cmd.CMD) {
|
getLiBMSAlarmDataFromCommBuf(bf);
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_GetLiBMSState_Ack;
|
FBS9100_Task_Thread_SQL.updateLi9130_Bms_AlmBydev_id(m_ConnPool, m_StatAndParam, m_LiBMS_AlarmStates);
|
isSuccess = true;
|
/*FBS9100S_LIBMS_AlarmState tmp_bms_alm = new FBS9100S_LIBMS_AlarmState();
|
if(tmp_bms_alm.putByteBuffer(bf)) {
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_GetLiBMSState_Ack;
|
FBS9100_Task_Thread_SQL.updateLi9130_Bms_AlmBydev_id(m_ConnPool, m_StatAndParam, tmp_bms_alm);
|
isSuccess = true;
|
}
|
tmp_bms_alm = null;*/
|
}
|
}
|
return isSuccess;
|
}
|
/*********************************************************************************************/
|
private int updateBTSStationEvent(FBS9100_SysState sys_state, int eve_type, boolean eve_stat, String date_str) {
|
boolean old_Station_Event_Stat = ((sys_state.Station_State&(1<<eve_type)) > 0);
|
int station_stat_start_trg = 0;
|
|
if(old_Station_Event_Stat != eve_stat) {
|
int trig = 0;
|
if(true == eve_stat) {
|
trig = FBS9100S_SocketClient2.StationEventStart;
|
sys_state.Station_State |= (1<<eve_type);
|
station_stat_start_trg |= (1<<eve_type);
|
} else {
|
trig = FBS9100S_SocketClient2.StationEventEnd;
|
sys_state.Station_State &= ~(1<<eve_type);
|
if(FBS9100S_SocketClient2.EveType_StationXuHang == eve_type) {
|
station_stat_start_trg |= (1<<FBS9100S_SocketClient2.EveType_StationXuHangEnd);
|
}
|
}
|
|
if((FBS9100S_SocketClient2.EveType_StationPOFF==eve_type)
|
||(FBS9100S_SocketClient2.EveType_StationXuHang==eve_type)
|
||(FBS9100S_SocketClient2.EveType_StationDiaoZhan==eve_type)) {
|
FBS9100_Task_Thread_SQL.insertBTS_Station_Event_IntoDB(m_ConnPool, m_StatAndParam, eve_type, trig, date_str);
|
} else {
|
int old_stat = 0;
|
int new_stat = 0;
|
int eve_type_t = -1;
|
int module_num = 0;
|
if(true == old_Station_Event_Stat) {
|
old_stat = 1;
|
}
|
if(true == eve_stat) {
|
new_stat = 1;
|
}
|
if((FBS9100S_SocketClient2.EveType_BTS_BG1_OffLine <= eve_type)
|
&&(FBS9100S_SocketClient2.EveType_BTS_BG4_OffLine >= eve_type)){
|
eve_type_t = FBS9100S_SocketClient2.EveType_BTS_BG_OffLine;
|
module_num = eve_type-FBS9100S_SocketClient2.EveType_BTS_BG_OffLine;
|
}
|
if(FBS9100S_SocketClient2.EveType_BTS_SDCardErr == eve_type) {
|
eve_type_t = FBS9100S_SocketClient2.EveType_BTS_SDCardErr;
|
module_num = 0;
|
}
|
|
if(eve_type_t >= 0) {
|
FBS9100_Task_Thread_SQL.insertFBS_EventToTable(m_ConnPool, m_StatAndParam.dev_id,
|
eve_type_t, module_num,
|
old_stat, new_stat, sys_state.WorkState);
|
}
|
}
|
}
|
|
return station_stat_start_trg;
|
}
|
/*********************************************************************************************/
|
private void updateBTSStationState(FBS9100_SysState sys_state) {
|
int station_stat_start_trg = 0;
|
String datetime_str = Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms);
|
|
station_stat_start_trg |= updateBTSStationEvent(sys_state, FBS9100S_SocketClient2.EveType_StationPOFF,
|
sys_state.Station_Event_poff, datetime_str);
|
station_stat_start_trg |= updateBTSStationEvent(sys_state, FBS9100S_SocketClient2.EveType_StationXuHang,
|
sys_state.Station_Event_xuhang, datetime_str);
|
station_stat_start_trg |= updateBTSStationEvent(sys_state, FBS9100S_SocketClient2.EveType_StationDiaoZhan,
|
sys_state.Station_Event_diaozhan, datetime_str);
|
|
station_stat_start_trg |= updateBTSStationEvent(sys_state, FBS9100S_SocketClient2.EveType_BTS_BG1_OffLine,
|
sys_state.BG_1_IsOFFLine, datetime_str);
|
station_stat_start_trg |= updateBTSStationEvent(sys_state, FBS9100S_SocketClient2.EveType_BTS_BG2_OffLine,
|
sys_state.BG_2_IsOFFLine, datetime_str);
|
//System.out.println("sys_state.SD_Card_Err: " + sys_state.SD_Card_Err);
|
station_stat_start_trg |= updateBTSStationEvent(sys_state, FBS9100S_SocketClient2.EveType_BTS_SDCardErr,
|
sys_state.SD_Card_Err, datetime_str);
|
|
FBS9100_Task_Thread_SQL.UpdateBTS_Station_Stat(m_ConnPool, m_StatAndParam, station_stat_start_trg);
|
}
|
/*********************************************************************************************/
|
private void getFBS9100MonVolData(FBS9100_VCData vc_data, FBS9100_SysState sys_state)
|
{
|
boolean fbsdev_statchange_record_tag = false;
|
int mon_index = 0;
|
for(int n=0; n<FBS9100_ComBase.BattGroupCountMax; n++) {
|
if(null != m_RTData[n]) {
|
//--------------------- ÏȶÁÈ¡µ¥Ìåµçѹ ---------------------------------------//
|
try {
|
for(int index=0; index<m_RTData[n].al_MonVol.size(); index++) {
|
if(mon_index >= FBS9100_ComBase.MonomerCountMax) {
|
break;
|
}
|
|
m_RTData[n].al_MonVol.get(index).monVol = (float) vc_data.vol[mon_index];
|
mon_index++;
|
}
|
} catch (Exception e) {
|
logger.error(e.toString(), e);
|
}
|
//--------------------- ÔÙ¶Áȡϵͳ״̬ ---------------------------------------//
|
if(((FBS9100_ComBase.SYS_STATE_STOPPED!=sys_state.WorkState) && ((n+1)==sys_state.TestGroupNum))
|
|| (FBS9100_ComBase.SYS_STATE_STOPPED == sys_state.WorkState)) {
|
//----------------------- ˳Ðò²»Äܵߵ¹ -----------------------------------//
|
int work_stat = m_RTData[n].mTestData.dev_FBS9100S_WorkState;
|
int test_type = m_RTData[n].mTestData.dev_FBS9100S_TestType;
|
//--------------------------------------------------------------------------//
|
m_RTData[n].mTestData.setDevFBS9100S_WorkState(sys_state.CapTestStopType,
|
sys_state.TestType,
|
sys_state.WorkState);
|
//--------------------- FBSÉ豸¹¤×÷״̬±ä»¯¼Ç¼ ------------------------------//
|
if(false == fbsdev_statchange_record_tag) {
|
if((work_stat != sys_state.WorkState) || (test_type != sys_state.TestType)) {
|
int bts_work_stat = sys_state.WorkState;
|
if((FBS9100_ComBase.TestType_CAP_HELUQI == sys_state.TestType)
|
&& (FBS9100_ComBase.SYS_STATE_DISCHARGING == sys_state.WorkState)){
|
bts_work_stat = FBS9100_ComBase.SYS_STATE_HELUQI_DISCHARGING;
|
}
|
int stat_change_reason = 0;
|
if(FBS9100_SysState.SYS_STATE_DISCHARGING == work_stat) {
|
stat_change_reason = sys_state.CapTestStopType;
|
}
|
FBS9100_Task_Thread_SQL.insertFBS_EventToTable(m_ConnPool, m_StatAndParam.dev_id,
|
FBS9100S_SocketClient2.EveType_BTS_WorkState, sys_state.TestGroupNum,
|
work_stat, bts_work_stat, stat_change_reason);
|
if(FBS9100_ComBase.SYS_STATE_STOPPED == sys_state.WorkState) {
|
resetNTDcDcData();
|
}
|
|
fbsdev_statchange_record_tag = true;
|
}
|
}
|
}
|
|
//--------------------- ÔÙ¶ÁÈ¡¶Ëµçѹ -----------------------------------------//
|
//--------------------- Èç¹ûÈí¼þ°æ±¾´óÓÚ35,ÔÚÏßµçѹºÍ×é¶Ëµçѹ±£Áô2λСÊý-------//
|
m_RTData[n].mTestData.updateGroupTempFrom_FBSDev((float)(vc_data.batttemp[n]));
|
m_RTData[n].mTestData.updateOnlineVolFrom_FBSDev((float)(vc_data.onlinevol[n]));
|
m_RTData[n].mTestData.updateGroupVolFrom_FBSDev((float)(vc_data.groupvol[n]));
|
//---------------------------------------------------------------------------//
|
//--------------------- ½Ó×ŶÁÈ¡µçÁ÷ -----------------------------------------//
|
m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n]);
|
//---------------------------------------------------------------------------//
|
//--------------------- È»ºó¶ÁÈ¡ÄÚ×è²âÊÔ״̬ ---------------------------------//
|
m_RTData[n].mTestData.batt_res_test_state = sys_state.ResTestState;
|
m_RTData[n].mTestData.batt_res_test_cnt = sys_state.getResTestCnt();
|
//--------------------- DCDC½ÚÄÜÄ£¿é״̬Êý¾Ý ---------------------------------//
|
//m_RTData[n].m_DCDC_Data.copyData(m_StatAndParam.m_al_DCDC_Data[0]);
|
//---------------------------------------------------------------------------//
|
//--------------------- Ïȸüе¥ÌåÊý¾Ý,ÔÙ¸üÐÂµç³Ø×´Ì¬Êý¾Ý ----------------------//
|
m_RTData[n].updata_BattRtData_To_RamDb();
|
m_RTData[n].updata_BattRtSate_To_RamDb();
|
//---------------------------------------------------------------------------//
|
}
|
}
|
}
|
/*********************************************************************************************/
|
/***************** ½âÎöÄæ±äÐÅÏ¢ ****************************************************************************/
|
private void getNiBianDataFromCommBuf(ByteBuffer bf){
|
|
for(int i=0;i<mNiBian_Datas.length;i++){
|
mNiBian_Datas[i].putByteBuffer(bf);
|
//System.out.println(mNiBian_Datas[i]);
|
|
}
|
}
|
/*********************************************************************************************/
|
/***************** ½âÎö﮵çDCDCÄ£¿éÐÅÏ¢ ****************************************************************************/
|
private void getLiDCDCDataFromCommBuf(ByteBuffer bf){
|
//System.out.println("¿ªÊ¼¶Áȡ﮵çDCDCÄ£¿éÐÅÏ¢"+bf.limit());
|
//System.err.println(ComFn.bytesToHexString(bf.array(), bf.array().length));
|
for(int i=0;i<m_SX_DCDC_DataList.length;i++){
|
if(null != m_SX_DCDC_DataList[i]) {
|
m_SX_DCDC_DataList[i].putByteBuffer(bf);
|
}
|
}
|
}
|
|
/***************** ½âÎö﮵ç4¸öBMSÄ£¿éÐÅÏ¢ ****************************************************************************/
|
private void getLiBMSANALOGDataFromCommBuf(ByteBuffer bf) {
|
//System.out.println("¿ªÊ¼¶ÁÈ¡BMSÄ£¿éÐÅÏ¢"+bf.limit());
|
ByteBuffer tmpbuf = bf;
|
int crc0 = tmpbuf.getShort(FBS9100S_LiBMS_AnalogData.TOTAL_BYTE_LEN-2) & 0xFFFF;
|
int crc1 = FBS9100_Crc16.CalCRC16(tmpbuf, FBS9100S_LiBMS_AnalogData.TOTAL_BYTE_LEN-2);
|
if(crc0 != crc1) {
|
//System.out.println(crc0 +"!="+crc1);
|
return;
|
}
|
for(int i=0;i<m_LiBMS_AnalogDatas.length;i++){
|
if(null != m_LiBMS_AnalogDatas[i]) {
|
m_LiBMS_AnalogDatas[i].putByteBuffer(bf);
|
}
|
}
|
}
|
|
/***************** ½âÎö﮵ç4¸öBMSÄ£¿é¸æ¾¯ÐÅÏ¢ ****************************************************************************/
|
private void getLiBMSAlarmDataFromCommBuf(ByteBuffer bf) {
|
//System.out.println("¿ªÊ¼¶ÁÈ¡BMSÄ£¿é¸æ¾¯ÐÅÏ¢"+bf.limit());
|
ByteBuffer tmpbuf = bf;
|
int crc0 = tmpbuf.getShort(FBS9100S_LIBMS_AlarmState.TOTAL_BYTE_LEN-2) & 0xFFFF;
|
int crc1 = FBS9100_Crc16.CalCRC16(tmpbuf, FBS9100S_LIBMS_AlarmState.TOTAL_BYTE_LEN-2);
|
if(crc0 != crc1) {
|
System.out.println(crc0+"=="+crc1);
|
return;
|
}
|
for(int i=0;i<m_LiBMS_AlarmStates.length;i++){
|
if(null != m_LiBMS_AlarmStates[i]) {
|
m_LiBMS_AlarmStates[i].putByteBuffer(bf);
|
}
|
}
|
}
|
|
/*********************************************************************************************/
|
private void getFBS9100MonResData(int cmd, FBS9100_ResCapData res_data)
|
{
|
int mon_index = 0;
|
for(int n=0; n<FBS9100_ComBase.BattGroupCountMax; n++)
|
{
|
try {
|
if(null != m_RTData[n])
|
{
|
for(int index=0; index<m_RTData[n].al_MonVol.size(); index++)
|
{
|
if(mon_index >= FBS9100_ComBase.MonomerCountMax) {
|
break;
|
}
|
|
if(FBS9100_ComBase.CMD_GetMonomerRES == cmd) {
|
m_RTData[n].al_MonVol.get(index).monRes = (float) res_data.m_DATA[mon_index];
|
} else if(FBS9100_ComBase.CMD_GetMonomerTMP == cmd) {
|
//--------------------- Èç¹ûÈí¼þ°æ±¾´óÓÚ35,ζÈÊý¾ÝÔÚºǫ́¼õ10.0¡æ --------------//
|
float temp_t = (float) res_data.m_DATA[mon_index];
|
if(this.getBTSSoftwareVersion() >= 35 || (m_BTSDevSoftType != FBS9100_ComBase.BTSE_DevType_TieTa)) {
|
temp_t -= 10.0;
|
}
|
//--------------------------------------------------------------------------//
|
m_RTData[n].al_MonVol.get(index).monTmp = temp_t;
|
}else if(FBS9100_ComBase.CMD_GetMonomerJHCUR == cmd) {
|
//¾ùºâµçÁ÷
|
m_RTData[n].al_MonVol.get(index).monJHcurr = (float) res_data.m_DATA[mon_index];
|
}else if(FBS9100_ComBase.CMD_GetMonomerLYVolt == cmd) {
|
//©Һµçѹ
|
m_RTData[n].al_MonVol.get(index).mon_LY_vol = (float) res_data.m_DATA[mon_index];
|
//System.out.println((m_RTData[n].al_MonVol));
|
}
|
mon_index++;
|
}
|
}
|
} catch (Exception e) {
|
logger.error(e.toString(), e);
|
}
|
}
|
}
|
/*********************************************************************************************/
|
}
|
/********************************* end of file SocketClient.java *************************************/
|