/********************************* 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.util.Date;
|
|
import com.battmonitor.base.Com;
|
import com.battmonitor.data.BattData_RT;
|
import com.battmonitor.data.BattData_RT_Array;
|
import com.battmonitor.sql.MysqlConnPool;
|
import com.dev.btse.data.FBS9100_CMCC_Power;
|
import com.dev.btse.data.FBS9100_CapState;
|
import com.dev.btse.data.FBS9100_ChargeState;
|
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_DeviceInf;
|
import com.dev.btse.data.FBS9100_ParamBatt;
|
import com.dev.btse.data.FBS9100_ParamCharge;
|
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 FBS9100_SocketClient2 extends Thread
|
{
|
private FBS9100_Cmd m_FBS_Cmd = new FBS9100_Cmd();
|
private FBS9100_ParamBatt m_FBS_BattParam = new FBS9100_ParamBatt();
|
private FBS9100_ParamSystem m_FBS_SystemParam = new FBS9100_ParamSystem();
|
private FBS9100_ParamDischarge m_FBS_DiscParam = null;
|
private FBS9100_ParamCharge m_FBS_ChargeParam = new FBS9100_ParamCharge();
|
private FBS9100_ResState m_ResTestState = new FBS9100_ResState();
|
private FBS9100_CapState m_CapTestState = new FBS9100_CapState();
|
private FBS9100_ChargeState m_ChrTestState = new FBS9100_ChargeState();
|
private FBS9100_ResCapData m_FBS_ResCapData = new FBS9100_ResCapData();
|
private FBS9100_CMCC_Power m_CMCC_Power = new FBS9100_CMCC_Power();
|
|
private FBS9100_StatAndParam m_StatAndParam = null;
|
private BattData_RT[] m_RTData = new BattData_RT[FBS9100_ComBase.BattGroupCountMax];
|
private Socket socket = null;
|
private ByteBuffer bytebuffer_for_socket_RX = ByteBuffer.allocate(1500);
|
private int m_FBSDevId = 0;
|
private int m_BattMonCount = 0;
|
|
private static final String TAG = "9100S_Thread";
|
private MysqlConnPool m_ConnPool = null;
|
private boolean thread_run_flag = true;
|
private int rx_errcount_for_live_of_thread = 0 ; //ÓÃÓÚͳ¼ÆsocketͨÐÅÖеÄÒì³£´ÎÊýͳ¼Æ
|
private BattData_RT_Array AL_RTdata = null;
|
private int PowerCount = 0;
|
|
/*********************************************************************************************/
|
public FBS9100_SocketClient2(MysqlConnPool m_ConnPool, BattData_RT_Array AL_RTdata_t, Socket socket)
|
{
|
this.m_StatAndParam = new FBS9100_StatAndParam(socket.getInetAddress().getHostAddress(), 0);
|
this.socket = socket;
|
this.m_ConnPool = m_ConnPool;
|
this.AL_RTdata = AL_RTdata_t;
|
}
|
|
public FBS9100_SocketClient2() {
|
// TODO Auto-generated constructor stub
|
}
|
|
/**
|
* ɸѡÉ豸idÊÇ·ñºÏ·¨
|
* @return
|
*/
|
private boolean init(BattData_RT_Array m_Data) {
|
boolean reg_in_rest = false;
|
for(int cnt=0; cnt<3; cnt++) {
|
try {
|
Thread.sleep(1000);
|
boolean f = SocketComm(FBS9100_ComBase.CMD_GetDeviceInf, ByteBuffer.allocate(0), socket);
|
//------- Ϊ±£Ö¤Ö®Ç°¶õÖݶ«·½ÊÀ¼Í³ÇºÍ˾ͽվµãÁ½Ì¨×îÔçÆÚÑù»úͨÐÅ,ÔÝʱʹÓÃ910ϵidʶ±ð -------//
|
if( (((m_StatAndParam.dev_id/100000) == 910)
|
||((m_StatAndParam.dev_id/100000) == 911))
|
&& f) {
|
for(int i=0; i<m_Data.getItemCount(); i++) {
|
if(m_Data.getItem(i).FBSDeviceId == m_StatAndParam.dev_id){
|
//m_StatAndParam.dev_name = m_Data.getItem(i).FBSDeviceName;
|
reg_in_rest = true;
|
break;
|
}
|
}
|
} else {
|
System.err.println("FBS9100_SocketClient2::init() ʶ±ðÒ»ÆÚFBS9100SÉ豸ʧ°Ü @ "
|
+ Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
|
reg_in_rest = false;
|
}
|
|
if(true == reg_in_rest) {
|
break;
|
}
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
}
|
}
|
|
return reg_in_rest;
|
}
|
|
|
/*********************************************************************************************/
|
public void run()
|
{
|
this.setName(TAG + ": " + this.getId());
|
|
//ʶ±ðµ±Ç°µÄ»úÆ÷ÊÇ·ñÊÇ9100É豸
|
thread_run_flag = init(AL_RTdata);
|
if(true == thread_run_flag) {
|
System.out.println("ʶ±ðÒ»ÆÚFBS9100É豸³É¹¦ " + Com.getNowTimeWithAt());
|
}
|
if(true == thread_run_flag) {
|
FBS9100_Task_Thread_SQL.updateFbs9100StateOnlyByDev_Id(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;
|
//FBS9100_Task_Thread_SQL.updateFbs9100CmccPowerDataByDev_Id(m_ConnPool, m_CMCC_Power, m_StatAndParam.dev_id);
|
|
//this.m_FBS_VCData = m_StatAndParam.m_FBS_VCData;
|
//m_FBS_DiscParam = m_StatAndParam.m_FBS_DiscParam;
|
//this.m_FBS_DiscParamFromDev = m_StatAndParam.m_FBS_DiscParamFromDev;
|
//m_StatAndParam.m_CMCC_Power = m_CMCC_Power;
|
this.m_FBSDevId = m_StatAndParam.dev_id;
|
|
int group_max = FBS9100_ComBase.BattGroupCountMax;
|
for(int n=0; n < group_max; n++)
|
{
|
m_RTData[n] = null;
|
}
|
|
for(int n=0; n < AL_RTdata.getItemCount(); n++)
|
{
|
if( AL_RTdata.getItem(n).FBSDeviceId == m_FBSDevId )
|
{
|
m_RTData[AL_RTdata.getItem(n).GroupIndexInFBSDevice % group_max] = AL_RTdata.getItem(n);
|
m_BattMonCount += AL_RTdata.getItem(n).MonCount;
|
/*BattData_RT_SQL.createBattData_RT_RamDB_Table(m_ConnPool,
|
AL_RTdata.getItem(n).BattGroupId,
|
AL_RTdata.getItem(n).getBattCount());*/
|
}
|
}
|
|
if(m_BattMonCount > (FBS9100_ComBase.MonomerCountMax-120)) {
|
m_BattMonCount = (FBS9100_ComBase.MonomerCountMax-120);
|
}
|
} else {
|
return;
|
}
|
/*
|
System.out.println(this.getName() + " Ò»ÆÚ "
|
+ " DevId: " + m_StatAndParam.dev_id + ", DevVer: " + m_StatAndParam.m_DevVersion
|
+ " - FBS9100S_SocketServer For GPRS Thread Started @ "
|
+ Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
|
*/
|
while(thread_run_flag)
|
{
|
try {
|
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_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);
|
if(true == SocketComm(FBS9100_ComBase.CMD_SetDischargeParm, tmp_set_pm.getByteBuffer(),socket))
|
{
|
System.err.println("ÉèÖ÷ŵç²ÎÊý³É¹¦");
|
//m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_SetDischargeParmAck;
|
}
|
} else if(FBS9100_ComBase.CMD_Start == m_FBS_DiscParam.op_cmd) {
|
|
System.out.println("Æô¶¯²âÊÔ");
|
int cmd = FBS9100_ComBase.CMD_StartDischarge; //Æô¶¯·Åµç²âÊÔ
|
if(cmd != m_FBS_DiscParam.test_cmd) {
|
cmd = FBS9100_ComBase.CMD_StartResDischarge; //Æô¶¯ÄÚ×è²âÊÔ
|
}
|
|
if(true == SocketComm(cmd, ByteBuffer.allocate(0),socket)) {
|
System.err.println("Æô¶¯²âÊԳɹ¦");
|
//m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_StartAck;
|
}
|
|
} else if(FBS9100_ComBase.CMD_Stop == m_FBS_DiscParam.op_cmd) {
|
System.out.println("Í£Ö¹²âÊÔ");
|
if(true == SocketComm(FBS9100_ComBase.CMD_Stop, ByteBuffer.allocate(0),socket)) {
|
System.err.println("Í£Ö¹·Åµç²âÊԳɹ¦");
|
//m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_StopAck;
|
}
|
} else if(FBS9100_ComBase.CMD_GetDischargeParm == m_FBS_DiscParam.op_cmd) {
|
System.out.println("¶ÁÈ¡·Åµç²ÎÊý");
|
if(true == SocketComm( FBS9100_ComBase.CMD_GetDischargeParm , ByteBuffer.allocate(0),socket)) {
|
/*System.err.println("¶ÁÈ¡·Åµç²âÊÔ²ÎÊý³É¹¦");
|
m_StatAndParam.op_cmd_ack = FBS9100_ComBase.CMD_GetDischargeParmAck;
|
System.out.println(m_FBS_DiscParam);
|
FBS9100_Task_Thread_SQL.updateFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam);*/
|
}
|
}
|
|
//FBS9100_Task_Thread_SQL.updateFbs9100SetParamCmdBydev_id(m_ConnPool, m_StatAndParam);
|
}
|
//-----------------------------------------------------------------------------------//
|
sleep(100);
|
SocketComm(FBS9100_ComBase.CMD_GetVIData, ByteBuffer.allocate(0),socket);
|
//---------------------------------------------------------------------//
|
/*
|
if(0 == (PowerCount%10)) {
|
SocketComm(FBS9100_ComBase.CMD_ReadCMCCVolCurr, ByteBuffer.allocate(0) , socket);
|
}
|
*/
|
//---------------------------------------------------------------------//
|
//-----------------------------------------------------------------------------------//
|
/*
|
if(FBS9100_ComBase.BattState_Discharge == m_FBS_VCData.m_SysState.WorkState)
|
{
|
//------------- Èç¹ûÊÇÄÚ×è²âÊÔ,Ôò×Ô¶¯¶Áȡһ´ÎFBS9100É豸ÉϵIJÎÊý -----------//
|
if(FBS9100_ComBase.TestType_RES == m_FBS_VCData.m_SysState.TestType) {
|
if ((FBS9100_ComBase.TestType_RES != m_StatAndParam.test_type)
|
&& (FBS9100_ComBase.CMD_NULL == m_StatAndParam.op_cmd)) {
|
//System.out.println("¶ÁÈ¡·Åµç²ÎÊý $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
|
if(true == SocketComm(FBS9100_ComBase.CMD_GetDischargeParm, ByteBuffer.allocate(0),socket)) {
|
m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_GetDischargeParmAck;
|
|
m_StatAndParam.test_type = FBS9100_ComBase.TestType_RES;
|
}
|
}
|
} else {//------ Èç¹ûÊÇÈÝÁ¿·Åµç²âÊÔ,Ôò×Ô¶¯¶Áȡһ´ÎFBS9100É豸ÉϵIJÎÊý ------//
|
if ((FBS9100_ComBase.TestType_CAP != m_StatAndParam.test_type)
|
&&(FBS9100_ComBase.CMD_NULL == m_StatAndParam.op_cmd)) {
|
//System.out.println("ÈÝÁ¿·Åµç²âÊÔ¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£");
|
if(true == SocketComm(FBS9100_ComBase.CMD_GetDischargeParm, ByteBuffer.allocate(0),socket)) {
|
m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_GetDischargeParmAck;
|
m_StatAndParam.test_type = FBS9100_ComBase.TestType_CAP;
|
//System.err.println("ÈÝÁ¿·Åµç²âÊԳɹ¦ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
|
}
|
}
|
}
|
}
|
*/
|
if((PowerCount % 7) == 0) {
|
sleep(100);
|
SocketComm(FBS9100_ComBase.CMD_GetMonomerRES , ByteBuffer.allocate(0) ,socket);
|
}
|
if((PowerCount % 13) == 0) {
|
sleep(100);
|
SocketComm(FBS9100_ComBase.CMD_GetMonomerTMP , ByteBuffer.allocate(0) ,socket);
|
}
|
if((PowerCount % 19) == 0) {
|
sleep(100);
|
SocketComm(FBS9100_ComBase.CMD_GetMonomerJHcurr , ByteBuffer.allocate(0) ,socket);
|
}
|
/*
|
if(FBS9100_ComBase.TestType_RES == m_StatAndParam.test_type)
|
{
|
sleep(20);
|
//¶ÁÈ¡ÄÚ×è²âÊÔ״̬
|
if(true == SocketComm(FBS9100_ComBase.CMD_GetResTestState, ByteBuffer.allocate(0),socket))
|
{
|
m_FBS_VCData.m_SysState.ResBattIndexMax = m_ResTestState.ResBattIndexMax;
|
m_FBS_VCData.m_SysState.ResBattIndex = m_ResTestState.ResBattIndex;
|
}
|
|
//------ ÄÚ×è²âÊÔÍ£Ö¹µÄʱºò,×Ô¶¯¼Ç¼һ´ÎÄÚ×èÖµµ½Êý¾Ý¿â ------//
|
if(FBS9100_ComBase.TestType_RES != m_FBS_VCData.m_SysState.TestType)
|
{
|
//System.err.println("ÄÚ×è²âÊÔ½áÊø");
|
m_StatAndParam.test_type = FBS9100_ComBase.TestType_NULL;
|
|
int index = m_ResTestState.BattGroupNum - 1;
|
if((index >= 0) && (index < m_RTData.length) && (null != m_RTData[index])) {
|
m_RTData[index].setStoreBattRes_DataEnStat(true);
|
}
|
}
|
} else if (FBS9100_ComBase.TestType_CAP == m_StatAndParam.test_type) {
|
if(FBS9100_ComBase.TestType_CAP != m_FBS_VCData.m_SysState.TestType)
|
{
|
m_StatAndParam.test_type = FBS9100_ComBase.TestType_NULL;
|
}
|
}
|
*/
|
//-----------------------------------------------------------------------------------//
|
//-----------------------------------------------------------------------------------//
|
if(m_StatAndParam != null){
|
//¸ù¾ÝÉ豸µÄid¸üÐÂtb_fbs9100_state±íÖеÄÐÅÏ¢
|
// FBS9100_Task_Thread_SQL.updateFbs9100StateByDev_Id(m_ConnPool, m_StatAndParam);
|
// FBS9100_Task_Thread_SQL.updateFbs9100CmccPowerDataByDev_Id(m_ConnPool, m_CMCC_Power, m_StatAndParam.dev_id);
|
}
|
PowerCount++;
|
sleep(250);
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
try {
|
sleep(2000);
|
} catch (InterruptedException e1) {
|
e1.printStackTrace();
|
}
|
}
|
}
|
try {
|
if(socket != null){
|
socket.close();
|
}
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
/*
|
System.out.println(this.getName() + "Ï߳̽áÊø: Error Count: " + m_FBS_VCData.m_SysState.ErrCommCount
|
+ Com.getNowTimeWithAt());
|
*/
|
}
|
/*********************************************************************************************/
|
/*********************************************************************************************/
|
|
/**
|
* ÏòÖ¸¶¨µÄ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(/*socket.isConnected() && (!socket.isClosed()) && */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) {
|
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[] b = makeCommBuf(cmd, bf);
|
Date d1 = new Date();
|
//=====================================================================//
|
/*
|
for(int n=0; n<3; n++) {
|
out.write(b);
|
out.flush();
|
//-----------------------------------------------------------------//
|
try {
|
while(true) {
|
int rx_len_t = in.read(rx_buf_t);
|
if(rx_len_t > 0) {
|
if((bytebuffer_for_socket_RX.position()+rx_len_t)
|
< (bytebuffer_for_socket_RX.capacity()-16)) {
|
|
bytebuffer_for_socket_RX.put(rx_buf_t, 0, rx_len_t);
|
}
|
}
|
if(bytebuffer_for_socket_RX.position() > 8) {
|
break;
|
}
|
}
|
} catch (SocketTimeoutException soe) {
|
//soe.printStackTrace();
|
}
|
//-----------------------------------------------------------------//
|
}
|
//=====================================================================//
|
*/
|
|
int rx_read_time_out = 0;
|
//int rx_len = 0;
|
//System.err.println("TX: " + ComFn.bytesToHexString(b, b.length));
|
out.write(b);
|
out.flush();
|
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()>8) && (rx_read_time_out>10)){
|
// res = true;
|
break;
|
}
|
if(rx_read_time_out > 220) {
|
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[] buffer = new byte[bytebuffer_for_socket_RX.limit()];
|
bytebuffer_for_socket_RX.get(buffer);
|
if(true == getDataFromCommBuf(buffer)) {
|
m_StatAndParam.m_SysState.setCommCountInc();
|
rx_errcount_for_live_of_thread = 0;
|
res_t = true;
|
} else {
|
/*
|
System.err.println(ComFn.bytesToHexString(buffer, buffer.length));
|
System.err.println(this.getName() + " DevId: " + m_StatAndParam.dev_id
|
+ "---- cmd:" + cmd + " RxLen: " + buffer.length
|
+ " ͨÐÅʧ°Ü" + Com.getNowTimeWithAt());
|
*/
|
m_StatAndParam.m_SysState.setErrCommCountInc(bytebuffer_for_socket_RX.limit());
|
rx_errcount_for_live_of_thread++;
|
res_t = false;
|
}
|
} else {
|
m_StatAndParam.m_SysState.setErrCommCountInc(0);
|
//System.out.println(this.getName() + "-------socket Òì³£¹Ø±Õ-------" + Com.getNowTimeWithAt());
|
thread_run_flag = false;
|
}
|
} catch (IOException e) {
|
//e.printStackTrace();
|
/*
|
System.err.println(this.getName() + " DevId: " + m_StatAndParam.dev_id
|
+ " ---- cmd:" + cmd + " ͨÐŹÊÕÏ, IOÒì³£...... " + Com.getNowTimeWithAt());
|
*/
|
thread_run_flag = false;
|
m_StatAndParam.m_SysState.setErrCommCountInc(0);
|
} finally {
|
//ÈôÔÚͨÐŵĹý³ÌÖгöÏÖ4´ÎͨÐÅÒì³£¹Ø±ÕÁ¬½Ó
|
if(rx_errcount_for_live_of_thread >= 5){
|
thread_run_flag = false;
|
}
|
}
|
return res_t;
|
}
|
/*********************************************************************************************/
|
/*********************************************************************************************/
|
public byte[] makeCommBuf(final int cmd, ByteBuffer bf)
|
{
|
return (FBS9100_ComBuf.makeFbs9100CommBuf(0xFF, cmd, bf, false).array());
|
}
|
/*********************************************************************************************/
|
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))
|
{
|
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µçѹµçÁ÷Êý¾Ý --------------------
|
if(FBS9100_ComBase.CMD_GetVIData == m_FBS_Cmd.CMD)
|
{
|
if(true == m_StatAndParam.m_SysState.putByteBuffer(bf))
|
{
|
FBS9100_VCData vc_data = new FBS9100_VCData();
|
//System.err.println(m_FBS_VCData.putByteBuffer(bf));
|
if(true == vc_data.putByteBuffer(bf, 0, 1))
|
{
|
getFBS9100MonVolData(vc_data, m_StatAndParam.m_SysState);
|
FBS9100_Task_Thread_SQL.updateFbs9100StateByDev_Id(m_ConnPool, vc_data, m_StatAndParam);
|
isSuccess = true;
|
}
|
vc_data = null;
|
}
|
}
|
//------------------- ¶ÁÈ¡FBS9100ÄÚ×è²âÊÔ״̬ -----------------------
|
if(FBS9100_ComBase.CMD_GetResTestState == m_FBS_Cmd.CMD)
|
{
|
if(true == m_ResTestState.putByteBuffer(bf)){
|
//System.err.println("¶ÁÈ¡FBS9100ÄÚ×è²âÊÔ״̬³É¹¦\t"+FBS9100_ComBase.CMD_GetResTestState);
|
//msg = "Get ResTest State from FBS9100 OK!!!";
|
isSuccess = true;
|
}
|
}
|
//------------------- ¶ÁÈ¡FBS9100·Åµç²âÊÔ״̬ -----------------------
|
if(FBS9100_ComBase.CMD_GetDischargeState == m_FBS_Cmd.CMD)
|
{
|
if(true == m_CapTestState.putByteBuffer(bf)){
|
isSuccess = true;
|
}
|
}
|
//------------------- ¶ÁÈ¡FBS9100³äµç²âÊÔ״̬ -----------------------
|
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)
|
{
|
if(true == m_FBS_BattParam.putByteBuffer(bf)){
|
isSuccess = true;
|
}
|
}
|
//------------------- ÉèÖÃFBS9100µç³Ø²ÎÊý -------------------------
|
else if(FBS9100_ComBase.CMD_SetBattParam == m_FBS_Cmd.CMD) {
|
if(true == m_FBS_BattParam.putByteBuffer(bf)){
|
isSuccess = true;
|
}
|
}
|
//------------------- ¶ÁÈ¡FBS9100ϵͳ²ÎÊý -------------------------
|
else if(FBS9100_ComBase.CMD_GetSYSSetParam == m_FBS_Cmd.CMD)
|
{
|
if(true == m_FBS_SystemParam.putByteBuffer(bf)){
|
isSuccess = true;
|
}
|
}
|
//------------------- ÉèÖÃFBS9100ϵͳ²ÎÊý -------------------------
|
else if(FBS9100_ComBase.CMD_SetSYSSetParam == m_FBS_Cmd.CMD)
|
{
|
if(true == m_FBS_SystemParam.putByteBuffer(bf)){
|
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;
|
}
|
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)
|
/*||(FBS_ComBase.CMD_GetMonomerCAP == m_FBS_Cmd.CMD)
|
||(FBS_ComBase.CMD_GetMonomerChargeCAP == m_FBS_Cmd.CMD)*/)
|
{
|
if(true == m_FBS_ResCapData.putByteBuffer(bf, m_FBS_Cmd.CMD))
|
{
|
isSuccess = true;
|
//System.err.println("½ÓÊÕFBS9100ÈÝÁ¿ÄÚ×è²âÊÔÊý¾Ý³É¹¦\t"+m_FBS_Cmd.CMD);
|
//System.out.println(m_FBS_ResCapData);
|
getFBS9100MonResData(m_FBS_Cmd.CMD, m_FBS_ResCapData);
|
//msg = "Get MonomerCAP or MonomerRES from FBS9100 OK!!!";
|
}
|
}else if(FBS9100_ComBase.CMD_GetDeviceInf == m_FBS_Cmd.CMD){
|
FBS9100_DeviceInf deviceinf = new FBS9100_DeviceInf();
|
if(deviceinf.putByteBuffer(bf) == true){
|
//System.out.println(deviceinf);
|
m_StatAndParam.dev_id = 91000000 + deviceinf.BackUp3*256 + deviceinf.BackUp4;
|
//System.out.println(m_StatAndParam.dev_id+"%%%%%");
|
isSuccess = true;
|
//System.out.println("¶ÁÈ¡É豸idºÅ³É¹¦"+FBS9100_ComBase.CMD_GetDeviceInf);
|
}
|
}else if(FBS9100_ComBase.CMD_ReadCMCCVolCurr == m_FBS_Cmd.CMD){
|
if(m_CMCC_Power.putByteBuffer(bf)){
|
//System.out.println(m_CMCC_Power);
|
isSuccess = true;
|
}
|
}
|
}
|
return isSuccess;
|
}
|
|
/*********************************************************************************************/
|
private void getFBS9100MonVolData(FBS9100_VCData vc_data, FBS9100_SysState sys_state)
|
{
|
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].MonCount; index++) {
|
if(mon_index >= FBS9100_ComBase.MonomerCountMax) {
|
break;
|
}
|
|
m_RTData[n].al_MonVol.get(index).monVol = (float) vc_data.vol[mon_index];
|
mon_index++;
|
}
|
//--------------------- ÔÙ¶Áȡϵͳ״̬ ---------------------------------------//
|
m_RTData[n].mTestData.setDevFBS9100S_WorkState(sys_state.CapTestStopType,
|
sys_state.TestType,
|
sys_state.WorkState);
|
//--------------------- ÔÙ¶ÁÈ¡¶Ëµçѹ -----------------------------------------//
|
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].updata_BattRtData_To_RamDb();
|
m_RTData[n].updata_BattRtSate_To_RamDb();
|
//---------------------------------------------------------------------------//
|
}
|
} catch (Exception e) {
|
System.err.println("FBS9100_SocketClient2.getFBS9100MonVolData():" + e.getMessage());
|
}
|
}
|
}
|
/*********************************************************************************************/
|
private void getFBS9100MonResData(int cmd, FBS9100_ResCapData res_data)
|
{
|
//System.out.println(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].MonCount; 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) {
|
m_RTData[n].al_MonVol.get(index).monTmp = (float) res_data.m_DATA[mon_index];
|
} else if(FBS9100_ComBase.CMD_GetMonomerJHcurr == cmd) {
|
m_RTData[n].al_MonVol.get(index).monJHcurr = (float) res_data.m_DATA[mon_index];
|
}
|
|
mon_index++;
|
}
|
}
|
} catch (Exception e) {
|
System.err.println("FBS9100_SocketClient2.getFBS9100MonResData():" + e.getMessage());
|
}
|
}
|
}
|
/*********************************************************************************************/
|
}
|
/********************************* end of file SocketClient.java *************************************/
|