package com.dev.fgcd.comm;
|
|
import java.io.File;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.io.OutputStream;
|
import java.io.UnsupportedEncodingException;
|
import java.net.Socket;
|
import java.nio.ByteBuffer;
|
import java.nio.ByteOrder;
|
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.data.BattData_RT;
|
import com.battmonitor.data.BattData_RT_Array;
|
import com.battmonitor.data.BattData_RT_SQL;
|
import com.battmonitor.sql.MysqlConnPool;
|
import com.dev.btse.data.ComFn;
|
import com.dev.btse.data.FBS9100_ComBase;
|
import com.dev.fgcd.data.FGCD_BattTestParam;
|
import com.dev.fgcd.data.FGCD_Cmd;
|
import com.dev.fgcd.data.FGCD_ComBase;
|
import com.dev.fgcd.data.FGCD_ComBuf;
|
import com.dev.fgcd.data.FGCD_OnlineInfo;
|
import com.dev.fgcd.data.FGCD_StateAndParam;
|
import com.dev.fgcd.data.FGCD_SysState;
|
import com.dev.fgcd.data.FGCD_TestFBOFile;
|
import com.dev.fgcd.data.FGCD_VCData;
|
|
public class FGCD_SocketClient_Thread extends Thread{
|
public static final String TAG = "FGCD_SocketClient_Thread";
|
|
private FGCD_StateAndParam m_StatAndParam;
|
private FGCD_VCData vc_data;
|
|
private BattData_RT[] m_RTData = new BattData_RT[FGCD_ComBase.BattGroupCountMax];
|
|
private FGCD_BattTestParam testParam; //µç³Ø²âÊÔ²ÎÊý
|
private FGCD_SysState sysState; //ϵͳ״̬
|
private FGCD_OnlineInfo onlineInfo; //ÔÚÏßÄ£¿é״̬
|
private FGCD_Cmd m_FBS_Cmd = new FGCD_Cmd();
|
public FGCD_TestFBOFile fboFile; //ÀúÊ·Êý¾ÝÎļþ
|
|
|
|
private ByteBuffer bytebuffer_for_socket_RX = ByteBuffer.allocate(1500);
|
public boolean isRuning = false;
|
|
|
public MysqlConnPool m_ConnPool;
|
public BattData_RT_Array m_Data;
|
public Socket socket;
|
private Logger logger;
|
private boolean FGCD_Thread_Mark = false;
|
|
private int errcount = 0;
|
private int DevReadCount = 0;
|
private int m_BattMonCount;
|
|
private boolean readMonData = false; //ÊÇ·ñÁ¢¼´¶ÁÈ¡µ¥ÌåÊý¾Ý ¼Ç¼ÀúÊ·Êý¾ÝʱÁ¢¼´¶ÁÈ¡µ¥ÌåÊý¾Ý
|
private boolean readCharData = false; //ÊÇ·ñÁ¢¼´¶ÁÈ¡·ÅµçÊý¾Ý ¼Ç¼ÀúÊ·Êý¾ÝʱÁ¢¼´¶ÁÈ¡·ÅµçÊý¾Ý
|
|
private int readMonData_lock = 1; //µ¥ÌåÊý¾Ý·µ»Ø
|
private int readCharData_lock = 1; //³ä·ÅµçÊý¾Ý·µ»Ø
|
|
private int sendlock_state_mon = 1; //µ¥Ìå·¢ËÍÊý¾Ý
|
private int sendlock_state_char = 1; //³ä·Åµç·¢ËÍÊý¾Ý
|
|
public FGCD_SocketClient_Thread(MysqlConnPool m_ConnPool,BattData_RT_Array m_Data,Socket socket){
|
this.socket = socket;
|
this.m_ConnPool = m_ConnPool;
|
this.m_Data = m_Data;
|
|
testParam = new FGCD_BattTestParam();
|
m_StatAndParam = new FGCD_StateAndParam();
|
sysState = m_StatAndParam.getSysState();
|
onlineInfo = m_StatAndParam.getOnlineInfo();
|
vc_data = new FGCD_VCData();
|
logger = LogManager.getLogger(this);
|
}
|
|
|
/**
|
* ɸѡÉ豸idÊÇ·ñºÏ·¨
|
* @return
|
*/
|
private boolean initFGCD_A059Comm() {
|
boolean reg_in_st = false;
|
for(int cnt=0; cnt<3; cnt++) {
|
try {
|
Thread.sleep(500);
|
boolean f = SocketComm(FGCD_ComBase.CMD_ENTERMACHINECONTROL,ByteBuffer.allocate(0));
|
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);
|
//System.out.println(((m_StatAndParam.check_dev_id/100000) == 8059)+"==="+f);
|
if(((m_StatAndParam.check_dev_id/100000) == 8059) && 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;
|
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) {
|
break;
|
}
|
}
|
logger.trace("reg_in_st:" + reg_in_st);
|
/*if(false == reg_in_st) {
|
break;
|
}*/
|
|
if(true == reg_in_st) {
|
logger.info("devid:" + m_StatAndParam.check_dev_id
|
+ ", Êý¾Ý¿âÖÐÆ¥Åädevid³É¹¦!!!!!, IP:" + socket.getInetAddress().getHostAddress());
|
} else {
|
logger.info("devid:" + m_StatAndParam.check_dev_id
|
+ ", Êý¾Ý¿âÖÐδÕÒµ½Æ¥ÅäµÄdevid, IP:" + socket.getInetAddress().getHostAddress());
|
break;
|
}
|
} else {
|
logger.info(this.getName() + " initFGCD_A059Comm() devid:" + m_StatAndParam.check_dev_id
|
+ ", ʶ±ðFGCD_A059É豸ʧ°Ü ");
|
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) {
|
logger.error(e.toString(), e);
|
}
|
}
|
|
return reg_in_st;
|
}
|
|
/*********************************************************************************************/
|
public void run()
|
{
|
FGCD_Thread_Mark = initFGCD_A059Comm();
|
boolean isOnlineMode = false;
|
if(FGCD_Thread_Mark) {
|
//³õʼ»¯µ±Ç°É豸ÐÅÏ¢
|
|
int group_max = FGCD_ComBase.BattGroupCountMax;
|
for(int n=0; n<group_max; n++) {
|
m_RTData[n] = null;
|
}
|
|
for(int n=0; n < m_Data.getItemCount(); n++) {
|
BattData_RT bt_data = m_Data.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;
|
|
m_BattMonCount += bt_data.MonCount;
|
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();
|
}
|
}
|
|
fboFile = new FGCD_TestFBOFile(m_StatAndParam.dev_id);
|
|
sysState.dev_data_flowsum += FGCD_SocketClient_Thread_SQL.getFbs9100DataCommFlowSum_ById(m_ConnPool, m_StatAndParam);
|
|
|
FGCD_SocketClient_Thread_SQL.insertOrUpdateFbs9100SetParamBydev_id(m_ConnPool,m_StatAndParam.dev_id);
|
FGCD_SocketClient_Thread_SQL.insertFBS9100StateTableOnRam(m_ConnPool, m_StatAndParam.dev_id);
|
|
FGCD_SocketClient_Thread_SQL.insertFBS9100_SysParamDefaultData(m_ConnPool, m_StatAndParam);
|
FGCD_SocketClient_Thread_SQL.insertTb_Fgcd_Filedownload_Table(m_ConnPool, m_StatAndParam.dev_id);
|
|
BattData_RT_SQL.checkTbFbs9100StateIntegrity(m_ConnPool, m_StatAndParam.dev_id);
|
|
if(m_BattMonCount > (FGCD_ComBase.MonomerCountMax-120)) {
|
m_BattMonCount = (FGCD_ComBase.MonomerCountMax-120);
|
}
|
logger.warn("DevId: " + m_StatAndParam.dev_id + " - FBS9100S_SocketClient Thread Started");
|
}
|
while(FGCD_Thread_Mark) {
|
try {
|
if(m_StatAndParam != null) {
|
//¸ù¾Ý tb_fbs9100_setparam±íÖеÄÊý¾Ý¸øÖ¸¶¨É豸idµÄm_FBS_DiscParam²ÎÊýÉèÖÃÖµ
|
FGCD_SocketClient_Thread_SQL.queryFbs9100SetParamCmdBydev_id(m_ConnPool, m_StatAndParam);
|
}
|
if(FGCD_ComBase.CMD_NULL == m_StatAndParam.op_cmd_ack) {
|
if(FGCD_ComBase.CMD_GetDischargeParm == m_StatAndParam.op_cmd) {
|
//¶ÁÈ¡·Åµç²ÎÊý
|
SocketComm(FGCD_ComBase.CMD_GETDISCHARGEPARAM, ByteBuffer.allocate(0));
|
//logger.info("DevId:" + m_StatAndParam.dev_id + " ¶ÁÈ¡·Åµç²ÎÊý");
|
}
|
|
if(FGCD_ComBase.CMD_SetDischargeParm == m_StatAndParam.op_cmd) {
|
//ÉèÖ÷ŵç²ÎÊý
|
FGCD_BattTestParam tmp_set_pm = testParam.clone();
|
FGCD_SocketClient_Thread_SQL.queryFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam, tmp_set_pm);
|
//System.out.println(tmp_set_pm);
|
logger.warn("DevId:" + m_StatAndParam.dev_id + " ÉèÖ÷ŵç²ÎÊý"+tmp_set_pm);
|
if(SocketComm(FGCD_ComBase.CMD_SETDISCHARGEPARAM, tmp_set_pm.getByteBuffer())) {
|
//¸üе±Ç°»î»¯´ÎÊý
|
sysState.hhCount = tmp_set_pm.cycleTimes;
|
testParam = tmp_set_pm.clone();
|
}
|
//tmp_set_pm = null;
|
}
|
|
if(FGCD_ComBase.CMD_StartDischarge == m_StatAndParam.op_cmd) {
|
//logger.info("¼ì²âÆô¶¯·Åµç²âÊÔ");
|
//ͬ²½½øÈë·Åµç²ÎÊý½çÃæ
|
SocketComm(FGCD_ComBase.CMD_RETURNMAIN,FGCD_ComBase.CMD_InterFace_Disc);
|
//Æô¶¯·Åµç²âÊÔ
|
SocketComm(FGCD_ComBase.CMD_STARTDISCHARGE, ByteBuffer.allocate(0));
|
}else if(FGCD_ComBase.CMD_StopDischarge == m_StatAndParam.op_cmd) {
|
//Í£Ö¹·Åµç²âÊÔ
|
SocketComm(FGCD_ComBase.CMD_STOPDISCHARGE, ByteBuffer.allocate(0));
|
}else if(FGCD_ComBase.CMD_PauseDischarge == m_StatAndParam.op_cmd) {
|
//ÔÝÍ£·Åµç²âÊÔ
|
SocketComm(FGCD_ComBase.CMD_PAUSEDISCHARGE, ByteBuffer.allocate(0));
|
}
|
|
if(FGCD_ComBase.CMD_StartCharTest == m_StatAndParam.op_cmd) {
|
//ͬ²½½øÈë·Åµç²ÎÊý½çÃæ
|
SocketComm(FGCD_ComBase.CMD_RETURNMAIN,FGCD_ComBase.CMD_InterFace_Char);
|
//Æô¶¯³äµç²âÊÔ
|
SocketComm(FGCD_ComBase.CMD_STARTCHARGE, ByteBuffer.allocate(0));
|
}else if(FGCD_ComBase.CMD_StopCharTest == m_StatAndParam.op_cmd){
|
//Í£Ö¹³äµç²âÊÔ
|
SocketComm(FGCD_ComBase.CMD_STOPCHARGE, ByteBuffer.allocate(0));
|
}else if(FGCD_ComBase.CMD_PauseCharTest == m_StatAndParam.op_cmd){
|
//ÔÝÍ£³äµç²âÊÔ
|
SocketComm(FGCD_ComBase.CMD_PAUSECHARGE, ByteBuffer.allocate(0));
|
}
|
|
if(FGCD_ComBase.CMD_StartHUOHUATest == m_StatAndParam.op_cmd) {
|
SocketComm(FGCD_ComBase.CMD_RETURNMAIN,FGCD_ComBase.CMD_InterFace_HuoH);
|
//Æô¶¯»î»¯²âÊÔ
|
SocketComm(FGCD_ComBase.CMD_STARTHHTEST, ByteBuffer.allocate(0));
|
}else if(FGCD_ComBase.CMD_StopHUOHUATest == m_StatAndParam.op_cmd){
|
//Í£Ö¹»î»¯²âÊÔ
|
SocketComm(FGCD_ComBase.CMD_STOPHHTEST, ByteBuffer.allocate(0));
|
}else if(FGCD_ComBase.CMD_PauseHUOHUATest == m_StatAndParam.op_cmd){
|
//ÔÝÍ£»î»¯²âÊÔ
|
SocketComm(FGCD_ComBase.CMD_PAUSEHHTEST, ByteBuffer.allocate(0));
|
}
|
|
|
if(FGCD_ComBase.CMD_SetNowBatt == m_StatAndParam.op_cmd) {
|
FGCD_BattTestParam tmp_set_pm = testParam.clone();
|
FGCD_SocketClient_Thread_SQL.queryFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam, tmp_set_pm);
|
logger.debug("dev_id:"+m_StatAndParam.dev_id+"\tÇл»µç³Ø×éºÅ:" + tmp_set_pm.groupCount);
|
//ÉèÖÃµç³Ø×éºÅ
|
SocketComm(FGCD_ComBase.CMD_SETNOWWORKBATT, tmp_set_pm.groupCount);
|
tmp_set_pm = null;
|
isOnlineMode = true;
|
}else if(FGCD_ComBase.CMD_StartShowPic == m_StatAndParam.op_cmd) {
|
//¿ªÊ¼ÏÔʾͼƬ
|
SocketComm(FGCD_ComBase.CMD_STARTSHOWPIC, 1);
|
}else if(FGCD_ComBase.CMD_StopShowPic == m_StatAndParam.op_cmd) {
|
//Í£Ö¹ÏÔʾͼƬ
|
SocketComm(FGCD_ComBase.CMD_STARTSHOWPIC, 0);
|
}
|
}
|
|
if(DevReadCount % 13 == 0 || isOnlineMode) {
|
//
|
logger.info("»ñÈ¡ÔÚÏßÄ£¿é״̬");
|
FGCD_Cmd tmp_cmd = new FGCD_Cmd(FGCD_ComBase.CMD_READONLINEMODEINFO);
|
SocketComm(tmp_cmd, ByteBuffer.allocate(0));
|
tmp_cmd = null;
|
isOnlineMode = false;
|
}
|
|
/************************ Çå³ý¸æ¾¯ *****************************************************/
|
{
|
int op_cmd = FGCD_SocketClient_Thread_SQL.queryClearAlarmState(m_ConnPool, m_StatAndParam);
|
if(FGCD_ComBase.CMD_ClearSysAlarm == op_cmd) {
|
//Çå³ýÉ豸¸æ¾¯
|
SocketComm(FGCD_ComBase.CMD_CLEARALARM, ByteBuffer.allocate(0));
|
}
|
}
|
Thread.sleep(200);
|
/************************ ÎļþÏÂÔØ *****************************************************/
|
{
|
|
FGCD_SocketClient_Thread_SQL.queryTb_Fgcd_Filedownload_Table(m_ConnPool, fboFile);
|
if(FGCD_ComBase.CMD_ReadFBDFile == fboFile.op_cmd) {
|
System.out.println("¶ÁÈ¡FBOÎļþ");
|
fboFile.clearState();
|
//System.err.println(fboFile);
|
//¶ÁÈ¡ÎļþÁбí
|
SocketComm(fboFile.createCmd(FGCD_ComBase.CMD_GETFILELIST), ByteBuffer.allocate(0));
|
}else if(FGCD_ComBase.CMD_DownLoadFBDFile == fboFile.op_cmd) {
|
//¿ªÊ¼ÏÂÔØÎļþ
|
FGCD_TestDataDownLoad download = new FGCD_TestDataDownLoad(fboFile, socket,m_ConnPool);
|
FGCD_SocketClient_Thread_SQL.updateFgcd_Filedownload_TableCmdByDevId(m_ConnPool, fboFile);
|
download.downLoadTestData();
|
fboFile.clearState();
|
}
|
}
|
if(DevReadCount %10 == 0 || readMonData) {
|
//logger.info("»ñÈ¡µ¥ÌåÊý¾Ý");
|
FGCD_Cmd tmp_cmd = new FGCD_Cmd(FGCD_ComBase.CMD_GETBATTDATA);
|
tmp_cmd.Db3 = sendlock_state_mon;
|
SocketComm(tmp_cmd, ByteBuffer.allocate(0));
|
tmp_cmd = null;
|
readMonData = false;
|
}
|
|
if(DevReadCount %12 == 0 || readCharData) {
|
//logger.info("»ñÈ¡·ÅµçÊý¾Ý");
|
FGCD_Cmd tmp_cmd = new FGCD_Cmd(FGCD_ComBase.CMD_GETDISCHARGEDATA);
|
tmp_cmd.Db1 = sendlock_state_char;
|
SocketComm(tmp_cmd, ByteBuffer.allocate(0));
|
tmp_cmd = null;
|
readCharData = false;
|
}
|
|
if(DevReadCount % 50 == 0) {
|
//15s¶Áȡһ´Î°æ±¾ÐÅÏ¢
|
//logger.info("»ñÈ¡É豸°æ±¾ºÅ");
|
FGCD_Cmd tmp_cmd = new FGCD_Cmd(FGCD_ComBase.CMD_READDEVICEVERSION);
|
SocketComm(tmp_cmd, ByteBuffer.allocate(0));
|
tmp_cmd = null;
|
}
|
|
|
|
DevReadCount++;
|
if(DevReadCount >= 2400) {
|
DevReadCount = 0;
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
/**
|
* ÏòÖ¸¶¨µÄsocketͨµÀ·¢ËÍÊý¾Ý£¬ÒÔ¼°½ÓÊÕÊý¾Ý
|
* @return
|
*/
|
public boolean SocketComm(int cmd,ByteBuffer byteBuffer)
|
{
|
boolean res_t = false;
|
InputStream in = null;
|
OutputStream out = null;
|
try
|
{
|
if(null != this.socket && !this.socket.isClosed())
|
{
|
in = this.socket.getInputStream();
|
out = this.socket.getOutputStream();
|
//----------------- clear rx buff for tcp resend packet ----------------//
|
byte[] rx_buf_t = new byte[1024];
|
|
//----------------------------------------------------------------------//
|
bytebuffer_for_socket_RX.order(ByteOrder.LITTLE_ENDIAN);
|
bytebuffer_for_socket_RX.clear();
|
//--------------------- socket write -----------------------------------//
|
//--------------------- socket write -----------------------------------//
|
boolean aes_en = false;
|
byte[] plain_tx_t = makeCommBuf(cmd, byteBuffer, aes_en);
|
Date d1 = new Date();
|
int rx_read_time_out = 0;
|
//int rx_len = 0;
|
//System.out.println("Êý¾Ý³¤¶È" + plain_tx_t.length + "\t·¢ËÍÊý¾Ý:" + ComFn.bytesToHexString(plain_tx_t, plain_tx_t.length));
|
out.write(plain_tx_t);
|
out.flush();
|
sysState.makeDevCommDataFlowSum(plain_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);
|
}
|
//bytebuffer_for_socket_RX.put((byte)in.read());
|
} else {
|
rx_read_time_out++;
|
if((bytebuffer_for_socket_RX.position() >= 20) && (rx_read_time_out>10)){
|
// res = true;
|
break;
|
}
|
if(rx_read_time_out > 300) {
|
break;
|
}
|
}
|
Thread.sleep(10);
|
}
|
|
bytebuffer_for_socket_RX.flip();
|
|
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
|
+ " d2-d1:" + (comm_tms)+"ms"
|
+ " rx_len:" + bytebuffer_for_socket_RX.limit()
|
+ " tx_count:" + m_FBS_VCData.m_SysState.CommCount
|
+ " rx_err_sum:" + 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()];
|
bytebuffer_for_socket_RX.get(cipher_buf);
|
|
sysState.makeDevCommDataFlowSum(cipher_buf.length);
|
|
//System.err.println("Êý¾Ý³¤¶È"+cipher_buf.length+"\t·µ»ØÊý¾Ý£º"+ ComFn.bytesToHexString(cipher_buf, cipher_buf.length));
|
//Log.e(TAG, "SocketComm: "+ComFn.bytesToHexString(plain_buf, plain_buf.length));
|
if(true == getDataFromCommBuf(cipher_buf)) {
|
res_t = true;
|
errcount = 0;
|
sysState.addCommCount();
|
} else {
|
errcount ++;
|
res_t = false;
|
sysState.addErrorCount();
|
}
|
} else {
|
//System.out.println(this.getName() + "-------socket Òì³£¹Ø±Õ-------" + Com.getNowTimeWithAt());
|
FGCD_Thread_Mark = false;
|
}
|
} catch (IOException | InterruptedException e) {
|
errcount ++;
|
} finally {
|
if(errcount > 5){
|
FGCD_Thread_Mark = false;
|
}
|
}
|
return res_t;
|
}
|
|
/**
|
* ÏòÖ¸¶¨µÄsocketͨµÀ·¢ËÍÊý¾Ý£¬ÒÔ¼°½ÓÊÕÊý¾Ý
|
* @return
|
*/
|
|
public boolean SocketComm(FGCD_Cmd cmd,ByteBuffer byteBuffer)
|
{
|
boolean res_t = false;
|
InputStream in = null;
|
OutputStream out = null;
|
try
|
{
|
if(null != this.socket && !this.socket.isClosed())
|
{
|
in = this.socket.getInputStream();
|
out = this.socket.getOutputStream();
|
//----------------- clear rx buff for tcp resend packet ----------------//
|
byte[] rx_buf_t = new byte[1024];
|
|
//----------------------------------------------------------------------//
|
bytebuffer_for_socket_RX.order(ByteOrder.LITTLE_ENDIAN);
|
bytebuffer_for_socket_RX.clear();
|
//--------------------- socket write -----------------------------------//
|
//--------------------- socket write -----------------------------------//
|
boolean aes_en = false;
|
byte[] plain_tx_t = makeCommBuf(cmd, byteBuffer);
|
Date d1 = new Date();
|
int rx_read_time_out = 0;
|
//int rx_len = 0;
|
//System.out.println("Êý¾Ý³¤¶È" + plain_tx_t.length + "\t·¢ËÍÊý¾Ý:" + ComFn.bytesToHexString(plain_tx_t, plain_tx_t.length));
|
out.write(plain_tx_t);
|
out.flush();
|
sysState.makeDevCommDataFlowSum(plain_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);
|
}
|
//bytebuffer_for_socket_RX.put((byte)in.read());
|
} else {
|
rx_read_time_out++;
|
if((bytebuffer_for_socket_RX.position() >= 20) && (rx_read_time_out>10)){
|
// res = true;
|
break;
|
}
|
if(rx_read_time_out > 300) {
|
break;
|
}
|
}
|
Thread.sleep(10);
|
}
|
|
bytebuffer_for_socket_RX.flip();
|
|
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
|
+ " d2-d1:" + (comm_tms)+"ms"
|
+ " rx_len:" + bytebuffer_for_socket_RX.limit()
|
+ " tx_count:" + m_FBS_VCData.m_SysState.CommCount
|
+ " rx_err_sum:" + 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()];
|
bytebuffer_for_socket_RX.get(cipher_buf);
|
|
sysState.makeDevCommDataFlowSum(cipher_buf.length);
|
|
//System.err.println("Êý¾Ý³¤¶È"+cipher_buf.length+"\t·µ»ØÊý¾Ý£º"+ ComFn.bytesToHexString(cipher_buf, cipher_buf.length));
|
//Log.e(TAG, "SocketComm: "+ComFn.bytesToHexString(plain_buf, plain_buf.length));
|
if(true == getDataFromCommBuf(cipher_buf)) {
|
res_t = true;
|
errcount = 0;
|
sysState.addCommCount();
|
} else {
|
errcount ++;
|
res_t = false;
|
sysState.addErrorCount();
|
}
|
} else {
|
//System.out.println(this.getName() + "-------socket Òì³£¹Ø±Õ-------" + Com.getNowTimeWithAt());
|
FGCD_Thread_Mark = false;
|
}
|
} catch (IOException | InterruptedException e) {
|
errcount ++;
|
} finally {
|
if(errcount > 5){
|
FGCD_Thread_Mark = false;
|
}
|
}
|
return res_t;
|
}
|
|
/**
|
* ÏòÖ¸¶¨µÄsocketͨµÀ·¢ËÍÊý¾Ý½çÃæÍ¬²½ÇëÇó
|
* @return
|
*/
|
|
public boolean SocketComm(int cmd,int RecState)
|
{
|
boolean res_t = false;
|
InputStream in = null;
|
OutputStream out = null;
|
try
|
{
|
if(null != this.socket && !this.socket.isClosed())
|
{
|
in = this.socket.getInputStream();
|
out = this.socket.getOutputStream();
|
//----------------- clear rx buff for tcp resend packet ----------------//
|
byte[] rx_buf_t = new byte[1024];
|
|
//----------------------------------------------------------------------//
|
bytebuffer_for_socket_RX.order(ByteOrder.LITTLE_ENDIAN);
|
bytebuffer_for_socket_RX.clear();
|
//--------------------- socket write -----------------------------------//
|
//--------------------- socket write -----------------------------------//
|
boolean aes_en = false;
|
byte[] plain_tx_t = makeCommBuf(cmd, RecState, aes_en);
|
Date d1 = new Date();
|
int rx_read_time_out = 0;
|
//int rx_len = 0;
|
//System.out.println("Êý¾Ý³¤¶È" + plain_tx_t.length + "\t·¢ËÍÊý¾Ý:" + ComFn.bytesToHexString(plain_tx_t, plain_tx_t.length));
|
out.write(plain_tx_t);
|
out.flush();
|
sysState.makeDevCommDataFlowSum(plain_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);
|
}
|
//bytebuffer_for_socket_RX.put((byte)in.read());
|
} else {
|
rx_read_time_out++;
|
if((bytebuffer_for_socket_RX.position() >= 20) && (rx_read_time_out>10)){
|
// res = true;
|
break;
|
}
|
if(rx_read_time_out > 300) {
|
break;
|
}
|
}
|
Thread.sleep(10);
|
}
|
|
bytebuffer_for_socket_RX.flip();
|
|
/*
|
System.out.println(this.getName()
|
+ " dev_id: " + m_StatAndParam.dev_id
|
+ " d2-d1:" + (comm_tms)+"ms"
|
+ " rx_len:" + bytebuffer_for_socket_RX.limit()
|
+ " tx_count:" + m_FBS_VCData.m_SysState.CommCount
|
+ " rx_err_sum:" + 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()];
|
bytebuffer_for_socket_RX.get(cipher_buf);
|
|
sysState.makeDevCommDataFlowSum(cipher_buf.length);
|
|
//System.err.println("Êý¾Ý³¤¶È"+cipher_buf.length+"\t·µ»ØÊý¾Ý£º"+ ComFn.bytesToHexString(cipher_buf, cipher_buf.length));
|
//Log.e(TAG, "SocketComm: "+ComFn.bytesToHexString(plain_buf, plain_buf.length));
|
if(true == getDataFromCommBuf(cipher_buf)) {
|
res_t = true;
|
errcount = 0;
|
sysState.addCommCount();
|
} else {
|
errcount ++;
|
res_t = false;
|
sysState.addErrorCount();
|
}
|
} else {
|
//System.out.println(this.getName() + "-------socket Òì³£¹Ø±Õ-------" + Com.getNowTimeWithAt());
|
FGCD_Thread_Mark = false;
|
}
|
} catch (IOException | InterruptedException e) {
|
errcount ++;
|
} finally {
|
if(errcount > 5){
|
FGCD_Thread_Mark = false;
|
}
|
}
|
return res_t;
|
}
|
|
|
// /**
|
// * ¸ù¾ÝÖ¸¶¨µÄÃüÁî¹¹ÔìbyteBuffer
|
// * @return
|
// */
|
// public ByteBuffer createByteBuffer(ServiceModel model){
|
// ByteBuffer buffer = ByteBuffer.allocate(0);
|
// if(FGCD_ComBase.CMD_CREATENEWBATT == model.cmd
|
// || FGCD_ComBase.CMD_CHANGEBATT == model.cmd
|
// || FGCD_ComBase.CMD_DELETENOWBATT == model.cmd
|
// ){
|
// //н¨µç³Ø×é/Çл»µç³Ø×é/ɾ³ýµç³Ø×é
|
// testParam.battName = model.msg;
|
// buffer = testParam.getNewBattByteBuffer();
|
// }else if(FGCD_ComBase.CMD_SETDISCHARGEPARAM == model.cmd){
|
// Gson gson = new Gson();
|
// FGCD_BattTestParam param = gson.fromJson(model.msg,FGCD_BattTestParam.class);
|
// buffer = param.getByteBuffer();
|
// }else if(FGCD_ComBase.CMD_RETURNMAIN == model.cmd){
|
// buffer = ByteBuffer.allocate(1);
|
// buffer.order(ByteOrder.LITTLE_ENDIAN);
|
// buffer.position(0);
|
// buffer.put(FGCD_ComBase.changeIntToByte(Integer.parseInt(model.msg)));
|
// buffer.flip();
|
// }
|
// return buffer;
|
// }
|
|
/*********************************************************************************************/
|
public byte[] makeCommBuf(final int cmd, ByteBuffer bf, boolean aes_en)
|
{
|
ByteBuffer bbf = FGCD_ComBuf.makeFbs9100CommBuf(0xFF, cmd, bf);
|
byte byte_rest[] = new byte[bbf.limit()];
|
bbf.get(byte_rest);
|
return byte_rest;
|
}
|
|
public byte[] makeCommBuf(FGCD_Cmd cmd, ByteBuffer bf)
|
{
|
ByteBuffer bbf = FGCD_ComBuf.makeFbs9100CommBuf(cmd, bf);
|
byte byte_rest[] = new byte[bbf.limit()];
|
bbf.get(byte_rest);
|
return byte_rest;
|
}
|
|
public byte[] makeCommBuf(final int cmd, int recstate, boolean aes_en)
|
{
|
ByteBuffer bf = ByteBuffer.allocate(0);
|
ByteBuffer bbf = FGCD_ComBuf.makeFbs9100CommBuf(cmd, recstate, aes_en);
|
byte byte_rest[] = new byte[bbf.limit()];
|
bbf.get(byte_rest);
|
return byte_rest;
|
}
|
/*********************************************************************************************/
|
|
/*********************************************************************************************/
|
public 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))
|
{
|
int errcode = m_FBS_Cmd.RecState;
|
if(errcode > 0) {
|
logger.error(this.getName(), "FGCD_Cmd.CMD:"+m_FBS_Cmd.CMD+"\t RTN:"+errcode);
|
}
|
sysState.dev_captest_stop_type = m_FBS_Cmd.Alarm;
|
//sysState.dev_workstate = 2;
|
//--------------------- ÐÄÌø°ü²âÊÔ ----------------------------------
|
if(FGCD_ComBase.CMD_HEARTBEAT == m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
byte[] b = new byte[bf.limit()];
|
bf.get(b);
|
try {
|
String nowbattname = new String(b,"utf-8");
|
//System.out.println("µ±Ç°µç³Ø×éÊÇ£º"+new String(b,"utf-8"));
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
isSuccess = true;
|
//System.out.println("»ñÈ¡ÐÄÌø°ü³É¹¦");
|
}
|
}
|
//--------------------- н¨µç³Ø×é ----------------------------------
|
else if(FGCD_ComBase.CMD_CREATENEWBATT == m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
isSuccess = true;
|
//System.out.println("н¨µç³Ø×é³É¹¦");
|
}
|
}
|
|
//--------------------- Çл»µç³Ø×é ----------------------------------
|
else if(FGCD_ComBase.CMD_CHANGEBATT == m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
isSuccess = true;
|
//logger.info(TAG, "getDataFromCommBuf: Çл»µç³Ø×é³É¹¦");
|
|
}
|
}
|
|
|
//--------------------- ɾ³ýµç³Ø×é ----------------------------------
|
else if(FGCD_ComBase.CMD_DELETENOWBATT == m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
isSuccess = true;
|
//System.out.println("ɾ³ýµç³Ø×é³É¹¦");
|
}
|
}
|
//--------------------- »ñÈ¡µ¥ÌåÊý¾Ý ----------------------------------------------
|
else if(FGCD_ComBase.CMD_GETBATTDATA == m_FBS_Cmd.CMD) {
|
//System.out.println("»ñÈ¡µ¥ÌåÊý¾Ý");
|
if(vc_data.putByteBuffer(bf, m_FBS_Cmd.ByteLen-m_FBS_Cmd.BYTE_LEN)) {
|
readMonData_lock = m_FBS_Cmd.Db3;
|
//System.out.println("µ¥ÌåÊý¾Ý·µ»Ø:"+readMonData_lock);
|
if(m_FBS_Cmd.Db3 == 2) {
|
sendlock_state_mon = 2;
|
readCharData = true;
|
}else{
|
sendlock_state_mon = 1;
|
}
|
//System.out.println("»ñÈ¡µ¥ÌåÊý¾Ý³É¹¦");
|
getFBS9100MonVolData(vc_data, sysState);
|
isSuccess = true;
|
}
|
}
|
//--------------------- »ñÈ¡·Åµç²ÎÊý ----------------------------------------------
|
else if(FGCD_ComBase.CMD_GETDISCHARGEPARAM == m_FBS_Cmd.CMD) {
|
if(testParam.putByteBuffer(bf)) {
|
|
m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_GetDischargeParmAck;
|
FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam, testParam);
|
isSuccess = true;
|
sysState.hhCount = testParam.cycleTimes; //¸üе±Ç°»î»¯×Ü´ÎÊý
|
//System.out.println(testParam);
|
logger.trace("getDataFromCommBuf: »ñÈ¡·Åµç²ÎÊý³É¹¦" + testParam );
|
}
|
}
|
//---------------------- ÉèÖ÷ŵç²ÎÊý --------------------------------------------------
|
else if(FGCD_ComBase.CMD_SETDISCHARGEPARAM == m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
//System.out.println("getDataFromCommBuf: ÉèÖ÷ŵç²ÎÊý³É¹¦¡£¡£¡£¡£¡£¡£¡£" );
|
m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_SetDischargeParmAck;
|
FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
|
isSuccess = true;
|
logger.warn("getDataFromCommBuf: ÉèÖ÷ŵç²ÎÊý³É¹¦" + testParam );
|
}
|
}
|
//--------------------- Æô¶¯·Åµç ----------------------------------
|
else if(FGCD_ComBase.CMD_STARTDISCHARGE == m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
|
m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StartDischargeAck;
|
FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
|
|
isSuccess = true;
|
logger.warn("getDataFromCommBuf: Æô¶¯·Åµç³É¹¦");
|
}
|
}
|
//--------------------- ·ÅµçÔÝÍ£ ----------------------------------
|
else if(FGCD_ComBase.CMD_PAUSEDISCHARGE == m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_PauseDischargeAck;
|
FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
|
|
isSuccess = true;
|
logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t getDataFromCommBuf: ÔÝÍ£·Åµç³É¹¦");
|
}
|
}
|
//--------------------- Í£Ö¹·Åµç ----------------------------------
|
else if(FGCD_ComBase.CMD_STOPDISCHARGE == m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StopDischargeAck;
|
FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
|
isSuccess = true;
|
logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t getDataFromCommBuf: Í£Ö¹·Åµç³É¹¦");
|
}
|
}
|
//--------------------- »ñÈ¡·ÅµçÊý¾Ý ----------------------------------
|
else if(FGCD_ComBase.CMD_GETDISCHARGEDATA == m_FBS_Cmd.CMD) {
|
if(sysState.putByteBuffer(bf)) {
|
readCharData_lock = m_FBS_Cmd.Db1;
|
//System.out.println("·ÅµçÊý¾Ý·µ»Ø:"+readCharData_lock);
|
if(m_FBS_Cmd.Db1 == 2) {
|
sendlock_state_char = 2;
|
readMonData = true;
|
}else {
|
sendlock_state_char = 1;
|
}
|
|
//¶ÁÈ¡µ±Ç°É豸µÄÍ£Ö¹ÔÒòºÍµ±Ç°¹¤×÷״̬
|
sysState.dev_captest_stop_type = m_FBS_Cmd.Alarm;
|
sysState.dev_workstate = m_FBS_Cmd.WorkState;
|
sysState.hhstate = m_FBS_Cmd.Db2; //»î»¯×´Ì¬
|
for(int i=0;i<sysState.montmps.length;i++) {
|
vc_data.tmp[i] = sysState.montmps[i];
|
}
|
FGCD_SocketClient_Thread_SQL.updateFbs9100StateOnlyByDev_Id(m_ConnPool, m_StatAndParam);;
|
isSuccess = true;
|
}
|
|
}
|
|
//--------------------- Æô¶¯³äµç ----------------------------------
|
else if(FGCD_ComBase.CMD_STARTCHARGE== m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StartCharTestAck;
|
FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
|
isSuccess = true;
|
logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t getDataFromCommBuf: Æô¶¯³äµç³É¹¦");
|
}
|
}
|
//--------------------- ÔÝÍ£³äµç ----------------------------------
|
else if(FGCD_ComBase.CMD_PAUSECHARGE== m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_PauseCharTestAck;
|
FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
|
isSuccess = true;
|
logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t getDataFromCommBuf: ÔÝÍ£³äµç³É¹¦");
|
}
|
}
|
//--------------------- Í£Ö¹³äµç ----------------------------------
|
else if(FGCD_ComBase.CMD_STOPCHARGE== m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StopCharTestAck;
|
FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
|
isSuccess = true;
|
logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t getDataFromCommBuf: Í£Ö¹³äµç³É¹¦");
|
}
|
}
|
|
//--------------------- »ñÈ¡³äµçÊý¾Ý ----------------------------------
|
else if(FGCD_ComBase.CMD_GETCHARGEDATA == m_FBS_Cmd.CMD) {
|
if(sysState.putByteBuffer(bf)) {
|
isSuccess = true;
|
//System.out.println("»ñÈ¡³äµçÊý¾Ý³É¹¦"+sysState);
|
}
|
|
}
|
//--------------------- Çå³ý¸æ¾¯ ----------------------------------
|
else if(FGCD_ComBase.CMD_CLEARALARM == m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
//m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_ClearSysAlarm_ACK;
|
//FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
|
FGCD_SocketClient_Thread_SQL.updateClearAlarmState(m_ConnPool, m_StatAndParam, FGCD_ComBase.CMD_ClearSysAlarm_ACK);
|
isSuccess = true;
|
logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t Çå³ý¸æ¾¯³É¹¦");
|
}
|
}
|
//--------------------- ½øÈë Android¿ØÖÆ ----------------------------------
|
else if(FGCD_ComBase.CMD_ENTERMACHINECONTROL == m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
m_StatAndParam.check_dev_id = m_FBS_Cmd.getCheck_dev_id();
|
|
isSuccess = true;
|
//System.out.println("½øÈëÉÏλ»ú¿ØÖÆÄ£Ê½³É¹¦");
|
}
|
}
|
|
|
//--------------------- ½øÈë½çÃæÍ¬²½Çл» ----------------------------------
|
else if(FGCD_ComBase.CMD_RETURNMAIN == m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
isSuccess = true;
|
//System.out.println("Çл»½çÃæ³É¹¦");
|
}
|
}
|
|
//--------------------- Í˳öÉÏλ»ú¿ØÖÆ ----------------------------------
|
else if(FGCD_ComBase.CMD_EXITMACHINECONTROL == m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
isSuccess = true;
|
//System.out.println("Í˳öÉÏλ»ú¿ØÖÆ");
|
}
|
}
|
|
//--------------------- ¿ØÖƻ(Æô¶¯/Í£Ö¹/ÔÝÍ£) ----------------------------------
|
else if(FGCD_ComBase.CMD_STARTHHTEST == m_FBS_Cmd.CMD) {
|
//Æô¶¯»î»¯²âÊÔ
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StartHUOHUATestACK;
|
FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
|
isSuccess = true;
|
logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t Æô¶¯»î»¯²âÊԳɹ¦");
|
}
|
}else if(FGCD_ComBase.CMD_PAUSEHHTEST == m_FBS_Cmd.CMD) {
|
//ÔÝÍ£»î»¯²âÊÔ
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_PauseHUOHUATestACK;
|
FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
|
isSuccess = true;
|
logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t ÔÝÍ£»î»¯²âÊԳɹ¦");
|
}
|
}else if(FGCD_ComBase.CMD_STOPHHTEST == m_FBS_Cmd.CMD) {
|
//Í£Ö¹»î»¯²âÊÔ
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StopHUOHUATestACK;
|
FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
|
isSuccess = true;
|
logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t Í£Ö¹»î»¯²âÊԳɹ¦");
|
}
|
}else if(FGCD_ComBase.CMD_GETFILELIST == m_FBS_Cmd.CMD) {
|
|
//»ñÈ¡ÎļþÁбí
|
if(fboFile.putByteBuffer(bf,m_FBS_Cmd.Db2)) {
|
//¶ÁÈ¡ÎļþÁбí³É¹¦
|
fboFile.op_cmd = FGCD_ComBase.CMD_ReadFBDFile_ACK;
|
logger.debug("dev_id:"+m_StatAndParam.dev_id+"¶ÁÈ¡ÎļþÁбí³É¹¦");
|
FGCD_SocketClient_Thread_SQL.updateTb_Fgcd_Filedownload_Table(m_ConnPool, fboFile);
|
isSuccess = true;
|
}
|
}else if(FGCD_ComBase.CMD_READDEVICEVERSION == m_FBS_Cmd.CMD) {
|
if(bf.limit() >0) {
|
byte[] ver = new byte[bf.limit()];
|
bf.get(ver);
|
//System.err.println(ComFn.bytesToHexString(ver, ver.length));
|
try {
|
m_StatAndParam.m_DevVersion = new String(ver, "utf-8");
|
logger.debug("dev_id:"+m_StatAndParam.dev_id+"\t¶ÁÈ¡É豸°æ±¾ºÅ³É¹¦:"+m_StatAndParam.m_DevVersion);
|
isSuccess = true;
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
}
|
}else if(FGCD_ComBase.CMD_READONLINEMODEINFO == m_FBS_Cmd.CMD) {
|
if(onlineInfo.putByteBuffer(bf)) {
|
logger.debug("dev_id:"+m_StatAndParam.dev_id+"\t ¶ÁÈ¡ÔÚÏßÄ£¿éÐÅÏ¢³É¹¦"+onlineInfo);
|
isSuccess = true;
|
|
FGCD_SocketClient_Thread_SQL.updateFbs9100StateOnlineMode(m_ConnPool, m_StatAndParam);
|
}
|
}else if(FGCD_ComBase.CMD_SETNOWWORKBATT == m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_SetNowBatt_ACK;
|
FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
|
isSuccess = true;
|
logger.debug("dev_id:"+m_StatAndParam.dev_id+"\t ÉèÖÃµç³Ø×éºÅ" + testParam.groupCount + "³É¹¦");
|
}
|
}else if(FGCD_ComBase.CMD_STARTSHOWPIC == m_FBS_Cmd.CMD) {
|
if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
|
if(FGCD_ComBase.CMD_StartShowPic == m_StatAndParam.op_cmd) {
|
m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StartShowPic_ACK;
|
logger.debug("dev_id:"+m_StatAndParam.dev_id+"\t ¿ªÊ¼ÏÔʾÄÚ¿ú¾µ³É¹¦¡¤");
|
} else if(FGCD_ComBase.CMD_StopShowPic == m_StatAndParam.op_cmd){
|
m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StopShowPic_ACK;
|
logger.debug("dev_id:"+m_StatAndParam.dev_id+"\t Í£Ö¹ÏÔʾÄÚ¿ú¾µ³É¹¦¡¤");
|
} else {
|
m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_NULL;
|
}
|
FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
|
isSuccess = true;
|
}
|
}
|
}
|
return isSuccess;
|
}
|
|
|
/*********************************************************************************************/
|
private void getFBS9100MonVolData(FGCD_VCData vc_data, FGCD_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];
|
m_RTData[n].al_MonVol.get(index).monTmp = (float) vc_data.tmp[mon_index];
|
mon_index++;
|
}
|
} catch (Exception e) {
|
logger.error(e.toString(), e);
|
}
|
int now_test_type = FGCD_ComBase.TestType_NULL;
|
int test_stoptype = -1;
|
//¼Ç¼ֹͣÔÒòʱÊý¾Ý´¦Àí
|
if(sys_state.dev_captest_stop_type >= 0x80) {
|
|
test_stoptype = sys_state.dev_captest_stop_type - 0x80; //¸üе±Ç°µÄÍ£Ö¹ÔÒò
|
}else {
|
test_stoptype = sys_state.dev_captest_stop_type;
|
}
|
//System.out.println("Í£Ö¹ÔÒò:"+m_RTData[n].mTestData.test_stoptype);
|
int now_dev_workstate = 0;
|
if(FGCD_ComBase.WORK_STATE_DISTEST == sys_state.dev_workstate ||
|
(FGCD_ComBase.WORK_STATE_STOPDIS == sys_state.dev_workstate)){
|
//vc_data.battcurr[n] = (-1)*Math.abs(vc_data.battcurr[n]);
|
//System.out.println("vc_data.battcurr[n]:"+vc_data.battcurr[n]);
|
now_test_type = FGCD_ComBase.TestType_CAP;
|
}else if(FGCD_ComBase.WORK_STATE_CHARTEST == sys_state.dev_workstate ||
|
FGCD_ComBase.WORK_STATE_STOPCHAR == sys_state.dev_workstate ){
|
//vc_data.battcurr[n] = Math.abs(vc_data.battcurr[n]);
|
//System.out.println("vc_data.battcurr[n]:"+vc_data.battcurr[n]);
|
now_test_type = FGCD_ComBase.TestType_Charge;
|
}
|
now_dev_workstate = sys_state.dev_workstate;
|
if(sys_state.hhstate > 0) {
|
//É豸µ±Ç°×´Ì¬Îª»î»¯×´Ì¬
|
now_dev_workstate = FGCD_ComBase.WORK_STATE_HUOHUA;
|
now_test_type = FGCD_ComBase.TestType_HuoHua;
|
}
|
//--------------------- ÔÙ¶Áȡϵͳ״̬ ---------------------------------------//
|
// if(((FBS9100_ComBase.SYS_STATE_STOPPED!=sys_state.dev_workstate) && ((n+1)==sys_state.TestGroupNum))
|
// || (FGCD_ComBase.WORK_STATE_STOPPED == sys_state.dev_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(test_stoptype,
|
now_test_type,
|
now_dev_workstate);
|
// }
|
|
//--------------------- ÔÙ¶ÁÈ¡¶Ëµçѹ -----------------------------------------//
|
//--------------------- Èç¹ûÈí¼þ°æ±¾´óÓÚ35,ÔÚÏßµçѹºÍ×é¶Ëµçѹ±£Áô2λСÊý-------//
|
//m_RTData[n].mTestData.updateGroupTempFrom_FBSDev((float)(vc_data.batttemp[n]));
|
m_RTData[n].mTestData.updateOnlineVolFrom_FBSDev((float)(sysState.on_online_vol));
|
m_RTData[n].mTestData.updateGroupVolFrom_FBSDev((float)(sysState.tatalVol));
|
//---------------------------------------------------------------------------//
|
//--------------------- ½Ó×ŶÁÈ¡µçÁ÷ -----------------------------------------//
|
m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n]);
|
m_RTData[n].mTestData.updateNewDataRCTime(new Date());
|
//---------------------------------------------------------------------------//
|
//---------------------------------------------------------------------------//
|
//--------------------- Ïȸüе¥ÌåÊý¾Ý,ÔÙ¸üÐÂµç³Ø×´Ì¬Êý¾Ý ----------------------//
|
m_RTData[n].updata_BattRtData_To_RamDb();
|
m_RTData[n].updata_BattRtSate_To_RamDb();
|
//---------------------------------------------------------------------------//
|
}
|
}
|
}
|
public static void main(String[] args) {
|
byte[] b = new byte[]{0x46 ,0x47, 0x43 ,0x44,0x2D ,0x41 ,0x30 ,0x35 ,0x39 ,0x58 ,0x54 ,0x20 ,0x50 ,0x72 ,0x6F ,0x2C ,0x56 ,0x31 ,0x2E ,0x38 ,0x2E ,0x30 ,0x2E ,0x38 ,0x2C ,0x31 ,0x3A ,0x49 ,0x44 ,0x43 ,0x45 ,0x2D ,0x50 ,0x72 ,0x6F ,0x2D ,0x38 ,0x4B ,0x57 ,0x2D ,0x56 ,0x33 ,0x2E ,0x30 ,0x31 ,0x2E ,0x31 ,0x39 ,0x20 };
|
try {
|
System.out.println(new String(b,"utf-8"));
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
|
}
|
}
|