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);
|
if(FGCD_ComBase.WORK_STATE_STOPPED == sysState.dev_workstate) {
|
SocketComm(FGCD_ComBase.CMD_SETNOWWORKBATT, tmp_set_pm.groupCount);
|
|
//Çл»µç³Ø×éºó£¬Á¢¼´¶Áȡһ´Î×é¶ËºÍµ¥ÌåÊý¾Ý
|
isOnlineMode = true;
|
readMonData = true;
|
readCharData = true;
|
logger.debug("dev_id:"+m_StatAndParam.dev_id+"\tÇл»µç³Ø×éºÅ:" + tmp_set_pm.groupCount);
|
|
}else {
|
logger.debug("dev_id:"+m_StatAndParam.dev_id+"\t É豸ÕýÔÚ¹¤×÷ÎÞ·¨,Çл»µç³Ø×éºÅ:" + tmp_set_pm.groupCount);
|
}
|
|
//ÉèÖÃµç³Ø×éºÅ
|
tmp_set_pm = null;
|
}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)) {
|
if(vc_data.putByteBuffer(bf, m_FBS_Cmd.getDb1()*256+m_FBS_Cmd.Db2)) {
|
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.checkTestCurr();
|
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)
|
{
|
int mon_index = 0;
|
int batt_index_now = onlineInfo.currBattNum-1; //µ±Ç°µç³Ø×éºÅ 0->µç³Ø×é1 1->µç³Ø×é2
|
for(int n=0; n<FBS9100_ComBase.BattGroupCountMax; n++) {
|
if(null != m_RTData[n]) {
|
if(onlineInfo.currBattNum > 0) {
|
mon_index = batt_index_now * m_RTData[n].MonCount;
|
//--------------------- ÏȶÁÈ¡µ¥Ìåµçѹ ---------------------------------------//
|
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[index];
|
mon_index++;
|
}
|
} catch (Exception e) {
|
logger.error(e.toString(), e);
|
}
|
m_RTData[n].setA059_num(onlineInfo.currBattNum);
|
}
|
|
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.updateGroupVolFrom_FBSDev((float)(onlineInfo.getGroupVol())); //¸üÐÂµç³Ø×é×é¶Ëµçѹ
|
m_RTData[n].mTestData.updateCurrFrom_FBSDev((float)sys_state.chargeCurr);
|
|
//---------------------------------------------------------------------------//
|
//--------------------- ½Óןüе±Ç°Ê±¼ä -----------------------------------------//
|
m_RTData[n].mTestData.updateNewDataRCTime(new Date());
|
//---------------------------------------------------------------------------//
|
//---------------------------------------------------------------------------//
|
m_RTData[n].mTestData.updateGroupNumFrom_FBSDev(onlineInfo.currBattNum); //¸üе±Ç°µç³Ø×éºÅ
|
//--------------------- Ïȸüе¥ÌåÊý¾Ý,ÔÙ¸üÐÂµç³Ø×´Ì¬Êý¾Ý ----------------------//
|
m_RTData[n].updata_BattRtData_To_RamDb();
|
m_RTData[n].updata_BattRtSate_To_RamDb();
|
//---------------------------------------------------------------------------//
|
}
|
}
|
}
|
|
/*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));
|
//---------------------------------------------------------------------------//
|
//--------------------- ½Ó×ŶÁÈ¡µçÁ÷ -----------------------------------------//
|
double test_curr = Math.abs(sysState.chargeCurr);
|
if(vc_data.battstate[n] == FGCD_ComBase.BattState_Discharge ||
|
vc_data.battstate[n] == FGCD_ComBase.BattState_PauseDischarge) {
|
//·Åµç»òÕßÔÝÍ£·Åµçʱ
|
test_curr = test_curr * (-1);
|
}
|
m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) test_curr);
|
//m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n]);
|
m_RTData[n].mTestData.updateNewDataRCTime(new Date());
|
m_RTData[n].mTestData.updateGroupNumFrom_FBSDev(onlineInfo.currBattNum);
|
//---------------------------------------------------------------------------//
|
//---------------------------------------------------------------------------//
|
//--------------------- Ïȸüе¥ÌåÊý¾Ý,ÔÙ¸üÐÂµç³Ø×´Ì¬Êý¾Ý ----------------------//
|
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"));
|
System.out.println(String.format("%1.2f", 9999.5555));
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
|
}
|
}
|