package com.comm;
|
|
|
import com.fbo2206.FBO_ParamDischarge;
|
import com.fbo2206.FBO_ReadData;
|
import com.fbs9100.ComFn;
|
import com.fbs9100.Ecb_Aes;
|
import com.fbs9100.FBS_CapState;
|
import com.fbs9100.FBS_ChargeState;
|
import com.fbs9100.FBS_Cmd;
|
import com.fbs9100.FBS_ComBase;
|
import com.fbs9100.FBS_ComBuf;
|
import com.fbs9100.FBS_ParamBatt;
|
import com.fbs9100.FBS_ParamCharge;
|
import com.fbs9100.FBS_ParamDischarge;
|
import com.fbs9100.FBS_ParamSystem;
|
import com.fbs9100.FBS_ResCapData;
|
import com.fbs9100.FBS_ResState;
|
import com.fbs9100.FBS_VCData;
|
import com.google.gson.Gson;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.io.OutputStream;
|
import java.io.Serializable;
|
import java.net.Socket;
|
import java.nio.ByteBuffer;
|
import java.nio.ByteOrder;
|
import java.util.Date;
|
|
/**
|
* Created by LiJun on 2019-04-28.
|
*/
|
|
public class MyWebSocketTestThread implements Serializable
|
{
|
|
private FBS_Cmd m_FBS_Cmd = new FBS_Cmd();
|
private FBS_VCData m_FBS_VCData = new FBS_VCData();
|
private FBS_ParamBatt m_FBS_BattParam = new FBS_ParamBatt();
|
private FBS_ParamSystem m_FBS_SystemParam = new FBS_ParamSystem();
|
private FBS_ParamDischarge m_FBS_DiscParam = new FBS_ParamDischarge();
|
private FBS_ParamCharge m_FBS_ChargeParam = new FBS_ParamCharge();
|
private FBS_ResState m_ResTestState = new FBS_ResState();
|
private FBS_CapState m_CapTestState = new FBS_CapState();
|
private FBS_ChargeState m_ChrTestState = new FBS_ChargeState();
|
|
public FBO_ParamDischarge fbo_DiscParam = new FBO_ParamDischarge();
|
public FBO_ReadData fbo_ReadData = new FBO_ReadData();
|
|
|
private FBS_ResCapData m_FBS_BaseData = new FBS_ResCapData(); //单体基础数据
|
private FBS_ResCapData m_FBS_ResCapData = new FBS_ResCapData(); //单体内阻数据
|
private FBS_ResCapData m_FBS_TmpCapData = new FBS_ResCapData(); //单体温度数据
|
|
private static final String TAG = "SocketClient_Thread";
|
|
private ServiceModel revicemodel;
|
private ServiceModel returnmodel;
|
|
private static String server_ip = "127.0.0.1"; //设备iP
|
private static int server_port = 9006; //设备监听断开
|
|
private ByteBuffer sendByteBuffer = ByteBuffer.allocate(0);
|
|
|
private ByteBuffer bytebuffer_for_socket_RX = ByteBuffer.allocate(1500);
|
private boolean thread_run_flag = true;
|
|
public static Socket socket;
|
|
public static Date lastConTime = new Date();
|
|
private static volatile MyWebSocketTestThread client = null;
|
/*********************************************************************************************/
|
public MyWebSocketTestThread() {
|
//initConnectDevice();
|
}
|
|
/*public static SerialPortSocketClient createSerialPortSocketClient(){
|
if(client == null){
|
synchronized (SerialPortSocketClient.class) {
|
if(client == null){
|
client = new SerialPortSocketClient();
|
}
|
}
|
}
|
return client;
|
}*/
|
|
/*********************************************************************************************/
|
/* public void run()
|
{
|
|
|
|
mHandler = new Handler()
|
{
|
@Override
|
public void handleMessage(Message msg)
|
{
|
MyWebSocketTestThread.SocketMsgObj msgs = (MyWebSocketTestThread.SocketMsgObj)(msg.obj);
|
try
|
{
|
if(null != msgs.mhandle)
|
{
|
//Log.i(TAG, "Message from main thread - $$$$$$$$$$$$$$$$$$$$$$$$$$ \t" + msgs.FBS_cmd);
|
msgs.msg = null;
|
if(true == SocketComm(msgs.FBS_cmd, (ByteBuffer)(msgs.FBS_data), msgs))
|
{
|
msgs.FBS_cmd = m_FBS_Cmd.CMD;
|
|
if(FBS_ComBase.CMD_GetVIData == msgs.FBS_cmd)
|
{
|
msgs.FBS_data = m_FBS_VCData.clone();
|
}
|
else if(FBS_ComBase.CMD_GetResTestState == msgs.FBS_cmd)
|
{
|
msgs.FBS_data = m_ResTestState.clone();
|
}
|
else if(FBS_ComBase.CMD_GetDischargeState == msgs.FBS_cmd)
|
{
|
msgs.FBS_data = m_CapTestState.clone();
|
}
|
else if(FBS_ComBase.CMD_GetChargeState == msgs.FBS_cmd)
|
{
|
msgs.FBS_data = m_ChrTestState.clone();
|
}
|
else if((FBS_ComBase.CMD_GetMonomerRES == msgs.FBS_cmd)
|
||(FBS_ComBase.CMD_GetMonomerTMP == msgs.FBS_cmd)
|
||(FBS_ComBase.CMD_GetMonomerCAP == msgs.FBS_cmd)
|
||(FBS_ComBase.CMD_GetMonomerChargeCAP == msgs.FBS_cmd))
|
{
|
sleep(200);
|
if(FBS_ComBase.CMD_GetMonomerRES == msgs.FBS_cmd){
|
msgs.FBS_data = m_FBS_ResCapData.clone();
|
}else if(FBS_ComBase.CMD_GetMonomerTMP == msgs.FBS_cmd){
|
for (int i = 0 ;i<m_FBS_TmpCapData.m_DATA.length;i++){
|
m_FBS_TmpCapData.m_DATA[i] = m_FBS_TmpCapData.m_DATA[i]-10; //实际的单体温度比实际的单体温度低10度
|
}
|
msgs.FBS_data = m_FBS_TmpCapData.clone();
|
|
}
|
}
|
else if((FBS_ComBase.CMD_GetBattParam == msgs.FBS_cmd)
|
||(FBS_ComBase.CMD_GetSYSSetParam == msgs.FBS_cmd)
|
||(FBS_ComBase.CMD_GetDischargeParm == msgs.FBS_cmd)
|
||(FBS_ComBase.CMD_GetChargeParm == msgs.FBS_cmd))
|
{
|
sleep(200);
|
if(FBS_ComBase.CMD_GetBattParam == msgs.FBS_cmd)
|
msgs.FBS_data = m_FBS_BattParam.clone();
|
if(FBS_ComBase.CMD_GetSYSSetParam == msgs.FBS_cmd)
|
msgs.FBS_data = m_FBS_SystemParam.clone();
|
if(FBS_ComBase.CMD_GetDischargeParm == msgs.FBS_cmd)
|
msgs.FBS_data = m_FBS_DiscParam.clone();
|
if(FBS_ComBase.CMD_GetChargeParm == msgs.FBS_cmd)
|
msgs.FBS_data = m_FBS_ChargeParam.clone();
|
}
|
else if((FBS_ComBase.CMD_StartResDischarge == msgs.FBS_cmd)
|
||(FBS_ComBase.CMD_StartDischarge == msgs.FBS_cmd)
|
||(FBS_ComBase.CMD_Stop == msgs.FBS_cmd)
|
){
|
//Log.e(TAG, "handleMessage: "+msgs.msg);
|
}
|
//--------------- 新建消息与句柄 -----------------
|
Handler handler = msgs.mhandle;
|
Message toMain = handler.obtainMessage();
|
toMain.obj = msgs;
|
handler.sendMessage(toMain);
|
//-----------------------------------------------
|
sleep(100);
|
}
|
}
|
}
|
catch (InterruptedException e)
|
{
|
e.printStackTrace();
|
}
|
}
|
};
|
|
}*/
|
/*********************************************************************************************/
|
/*
|
public boolean isConnect(Context context)
|
{
|
try
|
{
|
ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
if (connectivity != null)
|
{
|
// 获取网络连接管理的对象
|
NetworkInfo info = connectivity.getActiveNetworkInfo();
|
if ((info != null) && info.isConnected())
|
{
|
// 判断当前网络是否已经连接
|
if(info.getState() == NetworkInfo.State.CONNECTED)
|
return true;
|
}
|
}
|
}
|
catch (Exception e)
|
{
|
Log.v("error",e.toString());
|
}
|
return false;
|
}
|
*/
|
|
|
/**
|
* 向指定的socket通道发送数据,以及接收数据
|
* @return
|
*/
|
|
public boolean SocketComm()
|
{
|
boolean res_t = false;
|
InputStream in = null;
|
OutputStream out = null;
|
try
|
{
|
socket = new Socket(server_ip, server_port);
|
|
if(this.socket != null)
|
{
|
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(revicemodel.cmd, sendByteBuffer, aes_en);
|
byte[] cipher_tx_t = new byte[plain_tx_t.length];
|
Ecb_Aes my_aes = new Ecb_Aes();
|
my_aes.ecb_encrypt(plain_tx_t, cipher_tx_t, plain_tx_t.length);
|
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.out.println("数据长度"+plain_tx_t.length+"\t发送数据:"+ComFn.bytesToHexString(plain_tx_t, plain_tx_t.length));
|
out.write(plain_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);
|
}
|
//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[] 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);
|
my_aes.ecb_decrypt(cipher_buf, plain_buf, 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;
|
/*
|
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());
|
*/
|
returnmodel.code = 1;
|
} else {
|
res_t = false;
|
returnmodel.code = 0;
|
}
|
} else {
|
//System.out.println(this.getName() + "-------socket 异常关闭-------" + Com.getNowTimeWithAt());
|
thread_run_flag = false;
|
}
|
} catch (IOException | InterruptedException e) {
|
thread_run_flag = false;
|
} finally {
|
if(in != null) {
|
try {
|
in.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
if(out != null) {
|
try {
|
out.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
if(socket != null){
|
try {
|
socket.close();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
return res_t;
|
}
|
|
|
/*********************************************************************************************/
|
// @SuppressWarnings("finally")
|
// public boolean SocketComm1(int cmd, ByteBuffer bf, MyWebSocketTestThread.ServiceModel msgobj) throws InterruptedException
|
// {
|
// boolean res = false;
|
// try
|
// {
|
// //Socket socket = new Socket();
|
// //socket.connect(new InetSocketAddress("192.168.1.48", 9001), 200);
|
//
|
// if(this.socket != null)
|
// {
|
// InputStream in = socket.getInputStream();
|
// OutputStream out = socket.getOutputStream();
|
//
|
// out.write(makeCommBuf(cmd, bf,false));
|
//
|
// for(int n=0; n<10; n++)
|
// {
|
// sleep(10);
|
// int len1 = in.available();
|
// if(len1 <= 0)
|
// continue;
|
//
|
// sleep(10);
|
//
|
// if(in.available() == len1)
|
// break;
|
// }
|
//
|
// byte[] buffer = new byte[in.available()];
|
// in.read(buffer);
|
//
|
// msgobj.msg = getDataFromCommBuf(buffer);
|
//
|
// in.close();
|
// socket.close();
|
// res = true;
|
// }
|
// }
|
// catch (UnknownHostException e)
|
// {
|
// //e.printStackTrace();
|
// msgobj.msg = e.getMessage();
|
// }
|
// catch (IOException e)
|
// {
|
// //e.printStackTrace();
|
// msgobj.msg = e.getMessage();
|
// }
|
// finally
|
// {
|
// return res;
|
// }
|
// }
|
/*********************************************************************************************/
|
|
|
|
|
/*********************************************************************************************/
|
public byte[] makeCommBuf(final int cmd, ByteBuffer bf, boolean aes_en)
|
{
|
ByteBuffer bbf = FBS_ComBuf.makeFbs9100CommBuf(0xFF, cmd, bf, aes_en);
|
byte byte_rest[] = new byte[bbf.limit()];
|
bbf.get(byte_rest);
|
return byte_rest;
|
}
|
/*********************************************************************************************/
|
public Boolean getDataFromCommBuf(final byte[] bytes)
|
{
|
returnmodel = new ServiceModel();
|
boolean isSuccess = false;
|
ByteBuffer bf = ByteBuffer.allocate(bytes.length);
|
bf.order(ByteOrder.LITTLE_ENDIAN);
|
bf.put(bytes);
|
bf.flip();
|
|
String msg = "";
|
if(true == m_FBS_Cmd.putByteBuffer(bf))
|
{
|
lastConTime = new Date();
|
|
//------------------- 开始通讯 --------------------
|
if(FBS_ComBase.CMD_STARTCNNECT == m_FBS_Cmd.CMD
|
&& FBS_ComBase.DataReturn_Successs == m_FBS_Cmd.RES_Index
|
) {
|
returnmodel.msg = "Connect Device Success !!!";
|
isSuccess = true;
|
}
|
//------------------- 读取FBS9100电压电流数据 --------------------
|
else if(FBS_ComBase.CMD_GetVIData == m_FBS_Cmd.CMD)
|
{
|
if(true == fbo_ReadData.putByteBuffer(bf)) {
|
System.out.println("读取实时数据成功:"+fbo_ReadData);
|
returnmodel.data = fbo_ReadData;
|
returnmodel.msg = "Get realdata from FBS9100 OK!!!";
|
isSuccess = true;
|
}
|
/*if(true == m_FBS_VCData.m_SysState.putByteBuffer(bf))
|
{
|
if(true == m_FBS_VCData.putByteBuffer(bf)){
|
returnmodel.data = m_FBS_VCData;
|
returnmodel.msg = "Get data from FBS9100 OK!!!";
|
isSuccess = true;
|
}
|
}*/
|
}
|
//------------------- 读取FBS9100内阻测试状态 -----------------------
|
if(FBS_ComBase.CMD_GetResTestState == m_FBS_Cmd.CMD)
|
{
|
if(true == m_ResTestState.putByteBuffer(bf)) {
|
returnmodel.data = m_ResTestState;
|
returnmodel.msg = "Get ResTest State from FBS9100 OK!!!";
|
isSuccess = true;
|
}
|
}
|
//------------------- 读取FBS9100容量测试状态 -----------------------
|
if(FBS_ComBase.CMD_GetDischargeState == m_FBS_Cmd.CMD)
|
{
|
if(true == m_CapTestState.putByteBuffer(bf)) {
|
returnmodel.msg = "Get CapTest State from FBS9100 OK!!!";
|
returnmodel.data = m_CapTestState;
|
isSuccess = true;
|
}
|
}
|
//------------------- 读取FBS9100充电测试状态 -----------------------
|
if(FBS_ComBase.CMD_GetChargeState == m_FBS_Cmd.CMD)
|
{
|
if(true == m_ChrTestState.putByteBuffer(bf)) {
|
returnmodel.msg = "Get ChrTest State from FBS9100 OK!!!";
|
returnmodel.data = m_ChrTestState;
|
isSuccess = true;
|
}
|
}
|
//------------------- 读取FBS9100电池参数 -------------------------
|
else if(FBS_ComBase.CMD_GetBattParam == m_FBS_Cmd.CMD)
|
{
|
if(true == m_FBS_BattParam.putByteBuffer(bf)) {
|
returnmodel.msg = "Get battparam from FBS9100 OK!!!";
|
returnmodel.data = m_FBS_BattParam;
|
isSuccess = true;
|
}
|
}
|
//------------------- 设置FBS9100电池参数 -------------------------
|
else if(FBS_ComBase.CMD_SetBattParam == m_FBS_Cmd.CMD)
|
{
|
if(true == m_FBS_BattParam.putByteBuffer(bf)) {
|
returnmodel.msg = "Set battparam to FBS9100 OK!!!";
|
returnmodel.data = m_FBS_BattParam;
|
isSuccess = true;
|
}
|
}
|
//------------------- 读取FBS9100系统参数 -------------------------
|
else if(FBS_ComBase.CMD_GetSYSSetParam == m_FBS_Cmd.CMD)
|
{
|
if(true == m_FBS_SystemParam.putByteBuffer(bf)) {
|
returnmodel.msg = "Get sysparam from FBS9100 OK!!!";
|
returnmodel.data = m_FBS_SystemParam;
|
isSuccess = true;
|
}
|
}
|
//------------------- 设置FBS9100系统参数 -------------------------
|
else if(FBS_ComBase.CMD_SetSYSSetParam == m_FBS_Cmd.CMD)
|
{
|
if(true == m_FBS_SystemParam.putByteBuffer(bf)) {
|
returnmodel.msg = "Set sysparam to FBS9100 OK!!!";
|
returnmodel.data = m_FBS_SystemParam;
|
isSuccess = true;
|
}
|
}
|
//------------------- 读取FBS9100放电参数 -------------------------
|
else if(FBS_ComBase.CMD_GetDischargeParm == m_FBS_Cmd.CMD)
|
{
|
//System.out.println("获取FBO参数");
|
if(true == fbo_DiscParam.putByteBuffer(bf)){
|
System.out.println("读取放电参数成功" + fbo_DiscParam);
|
returnmodel.msg = "Get DischargeParm from FBS9100S OK!!!";
|
returnmodel.data = fbo_DiscParam;
|
isSuccess = true;
|
}
|
}
|
//------------------- 设置FBS9100放电参数 -------------------------
|
else if(FBS_ComBase.CMD_SetDischargeParm == m_FBS_Cmd.CMD)
|
{
|
System.out.println("设置放电参数");
|
if(FBS_ComBase.DataReturn_Successs == m_FBS_Cmd.RES_Index){
|
System.out.println("设置放电参数成功:" + fbo_DiscParam);
|
returnmodel.msg = "Set DischargeParam to FBS9100 OK!!!";
|
returnmodel.data = fbo_DiscParam;
|
isSuccess = true;
|
}
|
}
|
//------------------- 读取FBS9100充电参数 -------------------------
|
else if(FBS_ComBase.CMD_GetChargeParm == m_FBS_Cmd.CMD)
|
{
|
if(true == m_FBS_ChargeParam.putByteBuffer(bf)){
|
returnmodel.msg = "Get ChargeParam from FBS9100 OK!!!";
|
returnmodel.data = m_FBS_ChargeParam;
|
isSuccess = true;
|
}
|
}
|
//------------------- 设置FBS9100充电参数 -------------------------
|
else if(FBS_ComBase.CMD_SetChargeParm == m_FBS_Cmd.CMD)
|
{
|
if(true == m_FBS_ChargeParam.putByteBuffer(bf)){
|
returnmodel.msg = "Set ChargeParam to FBS9100 OK!!!";
|
returnmodel.data = m_FBS_ChargeParam;
|
isSuccess = true;
|
}
|
}
|
//------------------- 读取FBS9100内阻温度测试数据 ------------------
|
else if((FBS_ComBase.CMD_GetMonomerRES == m_FBS_Cmd.CMD)
|
||(FBS_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_BaseData.putByteBuffer(bf, m_FBS_Cmd.CMD)) {
|
//getFBS9100MonResData(m_FBS_Cmd.CMD, m_FBS_ResCapData);
|
returnmodel.msg = "Get MonomerRES or MonomerTMP from FBS9100 OK!!!"; //获取单体内阻和单体温度数据成功
|
returnmodel.data = m_FBS_BaseData;
|
isSuccess = true;
|
}
|
|
}
|
//------------------- 启动内阻测试启动核容测试成功 ---------------------------------------------
|
else if((FBS_ComBase.CMD_StartDischarge == m_FBS_Cmd.CMD)
|
|| (FBS_ComBase.CMD_StartResDischarge == m_FBS_Cmd.CMD)
|
&&(FBS_ComBase.DataReturn_Successs == m_FBS_Cmd.RES_Index)
|
){
|
System.out.println("启动放电成功");
|
returnmodel.msg = "Start MonomerRESTest or MonomerCapTest from FBS9100 OK!!!";
|
isSuccess = true;
|
}
|
//------------------- 启动充电测试 ---------------------------------------------
|
else if(FBS_ComBase.CMD_StartCharge == m_FBS_Cmd.CMD
|
&& (FBS_ComBase.DataReturn_Successs == m_FBS_Cmd.RES_Index)
|
){
|
System.out.println("启动充电成功");
|
returnmodel.msg = "Start MonomerChargeTest from FBS9100 OK!!!";
|
isSuccess = true;
|
}
|
//-------------------- 停止测试成功 -----------------------------------------
|
else if(FBS_ComBase.CMD_Stop == m_FBS_Cmd.CMD
|
&& (FBS_ComBase.DataReturn_Successs == m_FBS_Cmd.RES_Index)
|
){
|
System.out.println("停止成功");
|
returnmodel.msg = "Stop MonomerCapTest from FBS9100 OK!!!";
|
isSuccess = true;
|
}
|
//-------------------- 暂停测试成功 -----------------------------------------
|
else if(FBS_ComBase.CMD_Suspended == m_FBS_Cmd.CMD
|
&& (FBS_ComBase.DataReturn_Successs == m_FBS_Cmd.RES_Index)
|
){
|
System.out.println("暂停成功");
|
returnmodel.msg = "Suspended MonomerCapTest from FBS9100 OK!!!";
|
isSuccess = true;
|
}
|
|
}
|
return isSuccess;
|
}
|
|
/**
|
* 根据指定的命令给制定的但他数据赋值
|
* @param cmd
|
* @param res_data
|
*/
|
private void getFBS9100MonResData(int cmd, FBS_ResCapData res_data)
|
{
|
int mon_index = 0;
|
if(null != m_FBS_BaseData)
|
{
|
if(FBS_ComBase.CMD_GetMonomerRES == cmd) {
|
m_FBS_ResCapData = m_FBS_BaseData.clone();
|
//Log.d(TAG, "getFBS9100MonResData: 获取单体内阻数据成功。。。");
|
} else if(FBS_ComBase.CMD_GetMonomerTMP == cmd) {
|
m_FBS_TmpCapData = m_FBS_BaseData.clone();
|
//Log.d(TAG, "getFBS9100MonResData: 获取单体内阻数据成功。。。");
|
}
|
|
}
|
}
|
|
public FBS_ResCapData getM_FBS_ResCapData() {
|
return m_FBS_ResCapData;
|
}
|
|
public FBS_ResCapData getM_FBS_TmpCapData() {
|
return m_FBS_TmpCapData;
|
}
|
|
/**
|
* js前台接收返回数据
|
* @return
|
*/
|
public String getServiceModel() {
|
Gson gson = new Gson();
|
return gson.toJson(returnmodel);
|
}
|
|
/**
|
* js前台传入的数据
|
* @param json
|
*/
|
public void setServiceModel(String json) {
|
Gson gson = new Gson();
|
revicemodel = gson.fromJson(json, ServiceModel.class);
|
|
sendByteBuffer = ByteBuffer.allocate(0);
|
if(revicemodel.cmd == FBS_ComBase.CMD_SetDischargeParm) {
|
//设置放电参数时
|
FBO_ParamDischarge param = (FBO_ParamDischarge)revicemodel.data;
|
sendByteBuffer = param.getByteBuffer();
|
}
|
}
|
|
public void setFBO2206Param(MyWebSocketTestThread therad) {
|
FBO_ParamDischarge param = therad.fbo_DiscParam;
|
|
param.test_mode = 1; //放电模式 0-离线放电 1在线放电
|
param.acstop_op = 1; //停电处理 0-停止放电 1继续放电
|
param.nominal_cap = 300; //标称容量
|
param.hourly_rate = 10 ; //小时率
|
param.preset_cur = 20; //预放电流 (0.1)
|
param.preset_cap = 50; //预放容量
|
param.preset_time = 60; //预放时间(分钟)
|
param.mon_lower = 10.8; //单体下限 (0.01)
|
param.group_lower = 45; //组端下限 (0.1)
|
param.mon_number = 12; //单体数量
|
param.group_number = 4; //电池组数
|
param.lower_number = 5; //单体下限个数
|
param.mon_vol = 12; //标称单体电压
|
param.booster_ceiling = 56; //升压上限
|
param.charge_limit = 20; //充电电流 (0.1)
|
param.onlinevol_lowlimit = 60 ; //在线阀值 (0.1)
|
param.battName = "新建"; //电池组名称
|
|
sendByteBuffer = fbo_DiscParam.getByteBuffer();
|
|
}
|
|
/**
|
* 修改服务器的ip和通讯的端口号
|
* @param server_ip 服务器IP
|
* @param server_port 服务器端口号
|
*/
|
public void setServerParam(String server_ip,int server_port){
|
this.server_ip = server_ip;
|
this.server_port = server_port;
|
}
|
|
|
|
public static void main(String[] args) {
|
|
|
|
MyWebSocketTestThread thread = new MyWebSocketTestThread();
|
ServiceModel model = new ServiceModel();
|
thread.server_ip = "192.168.1.126";
|
thread.server_port = 9600;
|
|
thread.revicemodel = model;
|
model.cmd = FBS_ComBase.CMD_STARTCNNECT; //开始通讯
|
thread.SocketComm();
|
|
|
//thread.setFBO2206Param(thread);
|
//model.cmd = FBS_ComBase.CMD_SetDischargeParm; //设置放电参数
|
|
|
model.cmd = FBS_ComBase.CMD_GetDischargeParm; //获取放电参数
|
|
|
model.cmd = FBS_ComBase.CMD_GetVIData; //获取电池组状态
|
|
|
|
thread.SocketComm();
|
|
|
}
|
/*********************************************************************************************/
|
}
|
/********************************* end of file SocketClient1.java *************************************/
|