package com.dev.fg;
|
|
import com.base.Com;
|
import com.battdata_rt.BattData_RT;
|
import com.battdata_rt.BattData_RT_Array;
|
import com.battdata_rt.BattData_RT_SQL;
|
import com.battdata_rt.MonVolData;
|
import com.dev.fbs9100.ComFn;
|
import com.dev.modbus4j.MyModbusFactory;
|
import com.dev.modbus4j.MyModbusMaster;
|
import com.dev.modbus4j.MyModbusUtils;
|
import com.serotonin.modbus4j.BatchRead;
|
import com.serotonin.modbus4j.BatchResults;
|
import com.serotonin.modbus4j.code.DataType;
|
import com.sql.MysqlConnPool;
|
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 org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
public class FBS9600_SocketClient2 extends Thread {
|
|
private static final int SocketMode_Server = 0; //服务器
|
private static final int SocketMode_Clinet = 1; //客户端
|
|
private ByteBuffer bytebuffer_for_socket_RX = ByteBuffer.allocate(1500);
|
private static final int BATT_MAXGOROUP_COUNT = 16;
|
|
private int rx_errcount_for_live_of_thread = 0;
|
private static final String TAG = "FBS9600_SocketClient2";
|
private String socketServerIp = "192.168.0.66"; //客户端IP地址
|
private FBS9600_State m_FBS9600_State;
|
|
private BattData_RT[] m_RTData = new BattData_RT[BATT_MAXGOROUP_COUNT];
|
private int[] m_MonCount = new int[BATT_MAXGOROUP_COUNT]; //每组电池组的单体数目
|
|
public int m_FBSDevId = 0;
|
private int m_BattMonCount = 0;
|
|
private MysqlConnPool pool = null;
|
private int[] a_BattMonCount = new int[4]; //每组电池的单体个数
|
private int batt_Group_Num = 0;
|
private int data_Num = 0; //电池组组数
|
|
private int[] reg_count_arr = new int[4];
|
private int reg_count_last = 0;
|
|
private Socket m_socket;
|
private MyModbusMaster master;
|
private Logger logger;
|
private BattData_RT_Array m_Data;
|
private boolean S_thread_run_flag = true;
|
private boolean m_CheckDev = false;
|
|
private int salveId = 0xFF; //设备地址
|
|
private int run_count = 0;
|
private int read_group_index = 0;
|
private int read_mon_index = 0;
|
|
private int m_SocketMode = SocketMode_Server;
|
|
private FBS9600_ComBuf m_ComBuf;
|
|
@Override
|
public void run() {
|
this.setName(TAG + ": " + this.getId());
|
logger.info("识别当前的机器是否是FBS9611设备");
|
S_thread_run_flag = initFBS9611CommDev();
|
if(S_thread_run_flag) {
|
m_CheckDev = true;
|
|
this.m_FBSDevId = this.m_FBS9600_State.check_dev_id;
|
this.socketServerIp = this.m_FBS9600_State.ip_addr;
|
for (int n = 0; n < BATT_MAXGOROUP_COUNT; n++)
|
this.m_RTData[n] = null;
|
for (int n = 0; n < m_Data.getItemCount(); n++) {
|
if (m_Data.getItem(n).FBSDeviceId == this.m_FBSDevId) {
|
this.m_RTData[(m_Data.getItem(n).GroupIndexInFBSDevice % BATT_MAXGOROUP_COUNT)] = m_Data.getItem(n);
|
this.data_Num = (m_Data.getItem(n).GroupIndexInFBSDevice % BATT_MAXGOROUP_COUNT)+1;
|
|
this.m_MonCount[(m_Data.getItem(n).GroupIndexInFBSDevice % BATT_MAXGOROUP_COUNT)] = m_Data.getItem(n).MonCount;
|
this.a_BattMonCount[(m_Data.getItem(n).GroupIndexInFBSDevice % BATT_MAXGOROUP_COUNT)] = m_Data.getItem(n).MonCount;
|
}
|
}
|
if (this.m_BattMonCount > 392) {
|
this.m_BattMonCount = 392;
|
}
|
m_ComBuf = new FBS9600_ComBuf();
|
m_ComBuf.setSalveId(salveId);
|
|
FBS9600_State_SQL.insertFBS9100SetParam_Table(pool, m_FBS9600_State);
|
|
FBS9600_State_SQL.insertFBS9100State_Table(pool, m_FBS9600_State);
|
|
logger.info("设备ID:"+this.m_FBSDevId+"\t电池组组数:"+this.data_Num+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
|
}
|
|
|
try {
|
while(S_thread_run_flag) {
|
try {
|
if(run_count % 30 == 0) {
|
//读取组端数据信息(1托1 3.6s/次)
|
if(null != m_RTData[read_group_index]) {
|
// //System.out.println("读取组端数据"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
|
// readGroupData(m_RTData[read_group_index],read_group_index);
|
//
|
|
m_ComBuf.setCmdCode(FBS9600_ComBase.CMD_READ_HOLDING_REGISTER, FBS9600_ComBase.CMD_SysState_Addr+(read_group_index*0x1000), FBS9600_State.GroupRegCount);
|
SocketComm(m_ComBuf, ByteBuffer.allocate(0), this.m_socket);
|
//logger.info("读取组端数据");
|
read_group_index++;
|
if(!(read_group_index < data_Num)) {
|
read_group_index = 0;
|
}
|
Thread.sleep(100);
|
|
}
|
FBS9600_State_SQL.updateFBS9100State_Table(pool,m_FBS9600_State);
|
}
|
if(run_count % 60 == 0) {
|
if(null != m_RTData[read_mon_index]) {
|
//读取单体数据 (1托1 8.3s/次)
|
//readMonData(m_RTData[read_mon_index],read_mon_index);
|
//System.out.println("读取单体数据"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
|
|
|
m_ComBuf.setCmdCode(FBS9600_ComBase.CMD_READ_HOLDING_REGISTER, FBS9600_ComBase.CMD_MonVol_Addr+(read_group_index*0x1000), m_RTData[read_mon_index].MonCount);
|
SocketComm(m_ComBuf, ByteBuffer.allocate(0), this.m_socket);
|
Thread.sleep(50);
|
|
|
m_ComBuf.setCmdCode(FBS9600_ComBase.CMD_READ_HOLDING_REGISTER, FBS9600_ComBase.CMD_MonRes_Addr+(read_group_index*0x1000), m_RTData[read_mon_index].MonCount);
|
SocketComm(m_ComBuf, ByteBuffer.allocate(0), this.m_socket);
|
Thread.sleep(50);
|
|
|
m_ComBuf.setCmdCode(FBS9600_ComBase.CMD_READ_HOLDING_REGISTER, FBS9600_ComBase.CMD_MonTmp_Addr+(read_group_index*0x1000), m_RTData[read_mon_index].MonCount);
|
SocketComm(m_ComBuf, ByteBuffer.allocate(0), this.m_socket);
|
Thread.sleep(50);
|
|
|
|
m_RTData[read_group_index].mTestData.updateNewDataRCTime(new Date());
|
m_RTData[read_mon_index].updata_BattRtData_To_RamDb();
|
|
//logger.info("读取单体数据");
|
read_mon_index++;
|
if(!(read_mon_index < data_Num)) {
|
read_mon_index = 0;
|
}
|
Thread.sleep(100);
|
}
|
|
}
|
|
FBS9600_State_SQL.queryFBS9100SetParam_Table(pool, m_FBS9600_State);
|
if(m_FBS9600_State.op_cmd == FBS9600_ComBase.CMD_Start) {
|
//if(param.TestCmd == Concentrator_ComBase.CMD_StartResDischarge) {
|
if(m_FBS9600_State.BattGroupNum >3) {
|
m_FBS9600_State.BattGroupNum = 0;
|
}
|
m_ComBuf.setCmdCode(FBS9600_ComBase.CMD_WRITE_SINGLE_REGISTER, FBS9600_ComBase.CMD_ResTest_Addr, 1);
|
if(SocketComm(m_ComBuf,m_FBS9600_State.crateControlByteBuffer(1), this.m_socket)) {
|
logger.info("设备ID:"+m_FBS9600_State.dev_id+"\t 启动内阻测成功");
|
|
m_FBS9600_State.op_cmd = FBS9600_ComBase.CMD_StartAck;
|
|
FBS9600_State_SQL.updateFBS9100SetParam_Table(pool, m_FBS9600_State);
|
}
|
Thread.sleep(50);
|
//}
|
}else if(m_FBS9600_State.op_cmd == FBS9600_ComBase.CMD_Stop) {
|
//停止内阻测试
|
if(m_FBS9600_State.BattGroupNum >3) {
|
m_FBS9600_State.BattGroupNum = 0;
|
}
|
|
//停止内阻测试
|
m_ComBuf.setCmdCode(FBS9600_ComBase.CMD_WRITE_SINGLE_REGISTER, FBS9600_ComBase.CMD_ResTest_Addr, 1);
|
if(SocketComm(m_ComBuf,m_FBS9600_State.crateControlByteBuffer(0), this.m_socket)) {
|
logger.info("设备ID:"+m_FBS9600_State.dev_id+"\t 停止内阻测成功");
|
m_FBS9600_State.op_cmd = FBS9600_ComBase.CMD_StopAck;
|
}
|
FBS9600_State_SQL.updateFBS9100SetParam_Table(pool, m_FBS9600_State);
|
}
|
|
run_count++;
|
if(run_count > 9999999) {
|
run_count = 0;
|
}
|
|
//m_FBS9600_State.setCommData(master);
|
|
Thread.sleep(100);
|
} catch (Exception e) {
|
logger.error(e.toString(), e);
|
}
|
}
|
} catch (Exception e1) {
|
logger.error(e1.toString(), e1);
|
}finally {
|
master.destory();
|
if(null != this.m_socket) {
|
try {
|
this.m_socket.close();
|
} catch (IOException e) {
|
logger.error(e.toString(), e);
|
}
|
}
|
logger.trace(m_FBS9600_State.dev_id+" 通信中断 at " + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
|
}
|
}
|
|
public boolean initFBS9611CommDev() {
|
boolean isReadOk = false;
|
//System.out.println(this.m_SocketMode);
|
if(SocketMode_Server == m_SocketMode) {
|
isReadOk = checkClientDeviceId();
|
}else if(SocketMode_Clinet == m_SocketMode) {
|
isReadOk = checkClientDeviceIp();
|
}
|
return isReadOk;
|
}
|
|
//通过IP匹配数据库中的数据
|
private boolean checkClientDeviceIp() {
|
boolean reg_in_st = false;
|
//System.out.println(((m_FBS9600_State.check_dev_id/100000) == 9611)+"==="+f);
|
for(int i=0; i < m_Data.getItemCount(); i++) {
|
if(((m_Data.getItem(i).FBSDeviceId/10000000) == 96)) {
|
byte[] ipaddr = new byte[4];
|
Com.getIPFromStr(m_FBS9600_State.ip_addr, ipaddr);
|
byte[] dev_ipaddr = m_Data.getItem(i).FBSDevIp;
|
int FBSDevId = m_Data.getItem(i).FBSDeviceId;
|
if((ipaddr[0]==dev_ipaddr[0])&&(ipaddr[1]==dev_ipaddr[1])
|
&&(ipaddr[2]==dev_ipaddr[2])&&(ipaddr[3]==dev_ipaddr[3])) {
|
m_FBS9600_State.dev_id = FBSDevId;
|
reg_in_st = true;
|
break;
|
}
|
}
|
|
}
|
if(true == reg_in_st) {
|
logger.trace("devid:" + m_FBS9600_State.dev_id
|
+ ", 数据库中匹配devid成功!!!!!, IP:" + this.m_FBS9600_State.ip_addr);
|
} else {
|
logger.trace("devid:" + m_FBS9600_State.check_dev_id
|
+ ", 数据库中未找到匹配的devid, IP:" + this.m_FBS9600_State.ip_addr);
|
}
|
return reg_in_st;
|
}
|
|
//通过socket连接匹配设备
|
public boolean checkClientDeviceId() {
|
boolean reg_in_st = false;
|
//m_FBS9600_State.check_dev_id = 960500255;
|
//int dev_num = readSocketComm(m_socket);
|
for(int cnt=1; cnt<=0xFF; cnt++) {
|
try {
|
m_ComBuf.setSalveId(cnt);
|
m_ComBuf.setCmdCode(FBS9600_ComBase.CMD_READ_HOLDING_REGISTER, FBS9600_ComBase.CMD_SysInfo_Addr, FBS9600_State.GroupRegCount-1);
|
boolean flag = SocketComm(m_ComBuf, ByteBuffer.allocate(0), this.m_socket);
|
|
//System.out.println(flag + "=="+m_FBS9600_State.check_dev_id);
|
if(flag) {
|
|
for(int i=0; i < m_Data.getItemCount(); i++) {
|
//System.out.println((m_Data.getItem(i).FBSDeviceId == m_FBS9600_State.check_dev_id));
|
if(((m_Data.getItem(i).FBSDeviceId/10000000) == 96) && (m_Data.getItem(i).FBSDeviceId == m_FBS9600_State.check_dev_id)) {
|
logger.trace("m_StatAndParam.check_dev_id:" + m_FBS9600_State.check_dev_id);
|
byte[] ipaddr = this.m_socket.getInetAddress().getAddress();
|
byte[] dev_ipaddr = m_Data.getItem(i).FBSDevIp;
|
int dev_id_t = m_Data.getItem(i).FBSDeviceId;
|
|
m_FBS9600_State.dev_id = m_FBS9600_State.check_dev_id;
|
|
salveId = cnt;
|
reg_in_st = true;
|
break;
|
}
|
}
|
}
|
logger.trace("reg_in_st:" + reg_in_st);
|
|
if(true == reg_in_st) {
|
logger.trace("devid:" + m_FBS9600_State.dev_id
|
+ ", 数据库中匹配devid成功!!!!!, IP:" + this.m_socket.getInetAddress().getHostAddress());
|
} else {
|
logger.trace("devid:" + m_FBS9600_State.dev_id
|
+ ", 数据库中未找到匹配的devid, IP:" + this.m_socket.getInetAddress().getHostAddress());
|
}
|
|
if(true == reg_in_st) {
|
break;
|
}
|
Thread.sleep(10);
|
} catch (InterruptedException e) {
|
logger.error(e.toString(), e);
|
}
|
}
|
return reg_in_st;
|
}
|
|
|
|
private boolean writeResTestControl(int battGroupNum, boolean b) {
|
int offset = battGroupNum*0x1000+0x0FF7;
|
return MyModbusUtils.writeHoldingRegister(offset,b?1:0, DataType.TWO_BYTE_INT_UNSIGNED, master);
|
}
|
|
private void readGroupData(BattData_RT battData_RT,int index) {
|
BatchRead<Integer> batch = m_FBS9600_State.createGruopBatchRead(master,index);
|
BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
|
if(m_FBS9600_State.putGroupBatchResult(res,index,battData_RT)) {
|
battData_RT.updata_BattRtSate_To_RamDb(); //更新电池组端数据
|
}
|
}
|
|
private void readMonData(BattData_RT battData_RT,int index) {
|
//Date start = new Date();
|
//读取单体电压
|
BatchRead<Integer> batch1 = m_FBS9600_State.createMonVolBatchRead(master,index,battData_RT.MonCount);
|
BatchResults<Integer> res1 = MyModbusUtils.readMutilRegisters(batch1, master);
|
m_FBS9600_State.putMonVolBatchResult(res1,index,battData_RT);
|
|
//读取单体内阻
|
BatchRead<Integer> batch2 = m_FBS9600_State.createMonResBatchRead(master,index,battData_RT.MonCount);
|
BatchResults<Integer> res2 = MyModbusUtils.readMutilRegisters(batch2, master);
|
m_FBS9600_State.putMonResBatchResult(res2,index,battData_RT);
|
|
//读取单体温度
|
BatchRead<Integer> batch3 = m_FBS9600_State.createMonTmpBatchRead(master,index,battData_RT.MonCount);
|
BatchResults<Integer> res3 = MyModbusUtils.readMutilRegisters(batch3, master);
|
m_FBS9600_State.putMonTmpBatchResult(res3,index,battData_RT);
|
|
//读取单体剩余容量
|
BatchRead<Integer> batch4 = m_FBS9600_State.createMonCapBatchRead(master,index,battData_RT.MonCount);
|
BatchResults<Integer> res4 = MyModbusUtils.readMutilRegisters(batch4, master);
|
m_FBS9600_State.putMonCapBatchResult(res4,index,battData_RT);
|
//Date end = new Date();
|
//logger.info("读取单体数据耗时"+(end.getTime()-start.getTime()));
|
battData_RT.updata_BattRtData_To_RamDb(); //更新电池组端数据
|
}
|
|
/**
|
* 服务器模式
|
* @param m_socket
|
* @param AL_RTdata
|
* @param mConnPool
|
*/
|
public FBS9600_SocketClient2(Socket m_socket,BattData_RT_Array AL_RTdata, MysqlConnPool mConnPool) {
|
this.m_socket = m_socket;
|
this.m_Data = AL_RTdata;
|
this.master = new MyModbusMaster(m_socket, MyModbusFactory.ModBus_TCP, 255);
|
this.m_FBS9600_State = new FBS9600_State(m_socket.getInetAddress().toString(), 0);
|
this.logger = LogManager.getLogger(this);
|
this.pool = mConnPool;
|
this.m_ComBuf = new FBS9600_ComBuf();
|
this.m_SocketMode = SocketMode_Server;
|
|
}
|
|
/**
|
* 客户端模式
|
* @param fbs9600_State
|
* @param m_Data
|
* @param pool
|
*/
|
public FBS9600_SocketClient2(FBS9600_State fbs9600_State, BattData_RT_Array m_Data, MysqlConnPool pool) {
|
this.m_Data = m_Data;
|
this.pool = pool;
|
this.m_FBS9600_State = fbs9600_State;
|
this.logger = LogManager.getLogger(this);
|
this.m_ComBuf = new FBS9600_ComBuf();
|
this.master = new MyModbusMaster(fbs9600_State.ip_addr, 1);
|
this.m_SocketMode = SocketMode_Clinet;
|
}
|
|
public void updateVersion_Infor(MysqlConnPool mConnPool) {
|
BattData_RT_SQL.updateVersion_Infor_Table(mConnPool);
|
}
|
|
public void updateThread_Time(MysqlConnPool mConnPool) {
|
BattData_RT_SQL.updateThread_Time_Table(mConnPool);
|
}
|
|
private short getbattGroupAddr(short addr, int num) {
|
int all_addr = addr + num * 4096;
|
short batt_group_addr = (short) all_addr;
|
return batt_group_addr;
|
}
|
|
private void getBattMonCount() {
|
if (this.batt_Group_Num > this.data_Num)
|
this.batt_Group_Num = 0;
|
int h = 0;
|
if (h < 4) {
|
if (this.a_BattMonCount[(h + this.batt_Group_Num)] != 0)
|
this.m_BattMonCount = this.a_BattMonCount[(h + this.batt_Group_Num)];
|
}
|
}
|
|
private boolean readDev_IdFromModbus(MyModbusMaster master2) {
|
BatchRead<Integer> batch = m_FBS9600_State.createBatchRead(master);
|
BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
|
return m_FBS9600_State.putBatchResult(res);
|
}
|
|
/**
|
* 向指定的socket通道发送数据,以及接收数据
|
* @param cmd
|
* @param bf
|
* @return
|
* @throws InterruptedException
|
*/
|
|
public boolean SocketComm(FBS9600_ComBuf cmd, ByteBuffer bf, Socket socket) throws InterruptedException
|
{
|
boolean res_t = false;
|
try {
|
socket.setSoTimeout(3000);
|
if(S_thread_run_flag) {
|
InputStream in = socket.getInputStream();
|
OutputStream out = socket.getOutputStream();
|
//----------------- clear rx buff for tcp resend packet ----------------//
|
byte[] rx_buf_t = new byte[1024];
|
//----------------------------------------------------------------------//
|
bytebuffer_for_socket_RX.order(ByteOrder.BIG_ENDIAN);
|
bytebuffer_for_socket_RX.clear();
|
//--------------------- socket write -----------------------------------//
|
ByteBuffer tmpbf = cmd.getByteBuffer(bf);
|
byte[] cipher_tx_t = new byte[tmpbf.limit()];
|
tmpbf.get(cipher_tx_t);
|
//=====================================================================//
|
Date d1 = new Date();
|
//System.err.println("发送数据:"+ComFn.bytesToHexString(cipher_tx_t, cipher_tx_t.length));
|
int rx_read_time_out = 0;
|
out.write(cipher_tx_t);
|
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);
|
}
|
} else {
|
rx_read_time_out += 1;
|
if((bytebuffer_for_socket_RX.position()>8) && (rx_read_time_out>10)){
|
res_t = true;
|
break;
|
}
|
|
if(rx_read_time_out > 220) {
|
break;
|
}
|
}
|
Thread.sleep(10);
|
}
|
|
bytebuffer_for_socket_RX.flip();
|
|
Date d2 = new Date();
|
long comm_tms = (d2.getTime() - d1.getTime());
|
if(comm_tms < 200) {
|
Thread.sleep(200 - comm_tms);
|
}
|
/*
|
System.out.println(this.getName()
|
+ " dev_id:" + m_StatAndParam.dev_id
|
+ " cmd:" + cmd
|
+ " d2-d1:" + (comm_tms)+"ms"
|
+ " rx_len:" + bytebuffer_for_socket_RX.limit()
|
//+ " tx_count:" + m_StatAndParam.m_FBS_VCData.m_SysState.CommCount
|
//+ " rx_err_sum:" + m_StatAndParam.m_FBS_VCData.m_SysState.ErrCommCount
|
//+ " rx_err_count:" + rx_errcount_for_live_of_thread
|
+ Com.getNowTimeWithAt());
|
*/
|
byte[] cipher_buf = new byte[bytebuffer_for_socket_RX.limit()];
|
byte[] plain_buf = new byte[bytebuffer_for_socket_RX.limit()];
|
bytebuffer_for_socket_RX.get(cipher_buf);
|
//System.out.println("接收数据:"+ComFn.bytesToHexString(cipher_buf,cipher_buf.length));
|
if((cipher_buf.length > 8) && (true == getDataFromCommBuf(cipher_buf))) {
|
rx_errcount_for_live_of_thread = 0;
|
res_t = true;
|
} else {
|
res_t = false;
|
rx_errcount_for_live_of_thread++;
|
m_FBS9600_State.setComErrCountInc();
|
//System.err.println(m_FBS9600_State.com_err_count);
|
}
|
m_FBS9600_State.setComCountInc();
|
//System.out.println(cmd+"===="+m_StatAndParam.m_SysState.ErrCommCount);
|
} else {
|
S_thread_run_flag = false;
|
}
|
} catch (Exception e) {
|
logger.error(e.toString(), e);
|
S_thread_run_flag = false;
|
} finally {
|
//若在通信的过程中出现5次通信异常关闭连接
|
if(rx_errcount_for_live_of_thread >= 5 && m_CheckDev){
|
S_thread_run_flag = false;
|
}
|
}
|
return res_t;
|
}
|
|
private boolean getDataFromCommBuf(final byte[] bytes)
|
{
|
boolean isSuccess = false;
|
ByteBuffer bf = ByteBuffer.allocate(bytes.length);
|
bf.order(ByteOrder.BIG_ENDIAN);
|
bf.put(bytes);
|
bf.flip();
|
FBS9600_ComBuf tmp_buf = new FBS9600_ComBuf();
|
if(true == tmp_buf.putByteBuffer(bf))
|
{
|
if((FBS9600_ComBase.CMD_SysState_Addr+read_group_index*0x1000) == tmp_buf.getTrans()) {
|
if(m_FBS9600_State.putGroupInfo(bf, read_group_index, m_RTData[read_group_index])) {
|
isSuccess = true;
|
}
|
}
|
//System.out.println(tmp_buf);
|
//System.out.println(bf.limit());
|
if(FBS9600_ComBase.CMD_SysInfo_Addr == tmp_buf.getTrans()) {
|
System.err.println(bf.limit());
|
|
if(bf.limit() >0) {
|
|
m_FBS9600_State.check_dev_id = 960500000 + tmp_buf.getSalveId();
|
//System.out.println("读取设备ID成功:"+m_FBS9600_State.check_dev_id);
|
isSuccess = true;
|
}
|
}
|
|
if((FBS9600_ComBase.CMD_MonVol_Addr+read_mon_index*0x1000) == tmp_buf.getTrans()) {
|
if(m_FBS9600_State.putMonVolData(bf, read_mon_index, m_RTData[read_mon_index])) {
|
isSuccess = true;
|
}
|
}
|
if((FBS9600_ComBase.CMD_MonRes_Addr+read_mon_index*0x1000) == tmp_buf.getTrans()) {
|
if(m_FBS9600_State.putMonResData(bf, read_mon_index, m_RTData[read_mon_index])) {
|
isSuccess = true;
|
}
|
}
|
if((FBS9600_ComBase.CMD_MonTmp_Addr+read_mon_index*0x1000) == tmp_buf.getTrans()) {
|
if(m_FBS9600_State.putMonTmpData(bf, read_mon_index, m_RTData[read_mon_index])) {
|
isSuccess = true;
|
}
|
}
|
if(FBS9600_ComBase.CMD_ResTest_Addr == tmp_buf.getTrans()) {
|
//启动或停止测试成功
|
isSuccess = true;
|
}
|
}
|
return isSuccess;
|
}
|
|
private void getFBS9600MonData(FBS9600_CommData c_data) {
|
int mon_index = 0;
|
for (int n = 0; n < 4; n++) {
|
if (this.m_RTData[n] != null) {
|
float curr = c_data.battcurr[n];
|
|
if (1 == c_data.battcurrdir[n]) {
|
curr *= -1.0F;
|
}
|
|
this.m_RTData[n].mTestData.updateCurrFrom_FBSDev(curr);
|
this.m_RTData[n].mTestData.updateGroupVolFrom_FBSDev(c_data.groupvol[n]);
|
|
for (int index = 0; index < this.m_RTData[n].MonCount; index++) {
|
if (mon_index >= 512)
|
break;
|
MonVolData tmp_m_data = (MonVolData) this.m_RTData[n].al_MonVol.get(index);
|
tmp_m_data.monVol = c_data.battvol[mon_index];
|
tmp_m_data.monTmp = c_data.batttmp[mon_index];
|
|
tmp_m_data.monRes = c_data.battres[mon_index];
|
|
mon_index++;
|
}
|
|
for (int index = 0; index < this.m_RTData[n].MonCount; index++) {
|
((MonVolData) this.m_RTData[n].al_MonVol.get(index)).connRes = 0.0F;
|
}
|
this.m_RTData[n].updata_BattRtData_To_RamDb();
|
this.m_RTData[n].updata_BattRtSate_To_RamDb();
|
}
|
}
|
}
|
|
|
}
|