package com.service;
|
|
import android.os.Handler;
|
import android.os.Looper;
|
import android.os.Message;
|
import android.util.Log;
|
|
import com.ftpfile.FTPFileUtil;
|
import com.ftpfile.FileAttribute;
|
import com.google.gson.Gson;
|
import com.mode.BattTestParam;
|
import com.mode.DeviceState;
|
import com.mode.ServiceModel;
|
import com.socket.MySocketClientThread;
|
import com.util.FBS_ComBase;
|
|
import java.util.List;
|
|
import io.hybird.jsbridge.JsInterface;
|
|
public class MyInteractionService {
|
public static final String TAG = "MyInteractionService";
|
|
private String serverip;
|
|
private Handler handler = new Handler();
|
private MySocketClientThread sockethread = null;
|
private Runnable runnable = null;
|
private Handler mSocketHandle = null;
|
private DeviceState deviceState = null;
|
private FTPFileUtil ftpFileUtil = null;
|
|
private boolean isRunning = false;
|
|
public MyInteractionService(String serverip, JsInterface jsInterface){
|
sockethread = MySocketClientThread.createThread(serverip);
|
ftpFileUtil = new FTPFileUtil();
|
|
this.serverip = serverip;
|
|
this.mSocketHandle = new Handler(){
|
@Override
|
public void handleMessage(Message msg) {
|
ServiceModel model = (ServiceModel)msg.obj;
|
if(FBS_ComBase.CMD_GETDISCHARGEPARAM == model.cmd){
|
//获取测试参数
|
if(deviceState != null && model.code ==1){
|
BattTestParam param = (BattTestParam)model.data;
|
param.battName = deviceState.nowBattName;
|
}
|
jsInterface.SendCallDataToJS("getTestParam",model);
|
}else if(FBS_ComBase.CMD_HEARTBEAT == model.cmd){
|
//心跳包返
|
deviceState = (DeviceState)model.data;
|
jsInterface.SendCallDataToJS("getNowWorkBattState",model);
|
}else if(FBS_ComBase.CMD_CREATENEWBATT == model.cmd){
|
//新建电池组
|
//model.data = deviceState;
|
jsInterface.SendCallDataToJS("newBatt",model);
|
}else if(FBS_ComBase.CMD_CHANGEBATT == model.cmd){
|
//切换电池组
|
//model.data = deviceState;
|
jsInterface.SendCallDataToJS("changeBatt",model);
|
|
}else if(FBS_ComBase.CMD_DELETENOWBATT == model.cmd){
|
//删除电池组
|
//model.data = deviceState;
|
jsInterface.SendCallDataToJS("delectBatt",model);
|
}else if(FBS_ComBase.CMD_DELETENOWBATT == model.cmd){
|
//获取单体实时数据
|
jsInterface.SendCallDataToJS("getBattRTData",model);
|
}else if(FBS_ComBase.CMD_SETDISCHARGEPARAM == model.cmd){
|
//设置放电参数
|
jsInterface.SendCallDataToJS("setTestParam",model);
|
}else if(FBS_ComBase.CMD_STARTDISCHARGE == model.cmd){
|
//启动放电
|
jsInterface.SendCallDataToJS("startDischarge",model);
|
}else if(FBS_ComBase.CMD_PAUSEDISCHARGE == model.cmd){
|
//暂停放电
|
jsInterface.SendCallDataToJS("pauseDischarge",model);
|
}else if(FBS_ComBase.CMD_STOPDISCHARGE == model.cmd){
|
//停止放电
|
jsInterface.SendCallDataToJS("stopDischarge",model);
|
}else if(FBS_ComBase.CMD_GETDISCHARGEDATA == model.cmd){
|
//获取放电数据
|
jsInterface.SendCallDataToJS("getTestData",model);
|
}else if(FBS_ComBase.CMD_STARTCHARGE == model.cmd){
|
//启动充电
|
jsInterface.SendCallDataToJS("startCharge",model);
|
}else if(FBS_ComBase.CMD_PAUSECHARGE == model.cmd){
|
//暂停充电
|
jsInterface.SendCallDataToJS("pauseCharge",model);
|
}else if(FBS_ComBase.CMD_STOPCHARGE == model.cmd){
|
//停止充电
|
jsInterface.SendCallDataToJS("stopCharge",model);
|
}else if(FBS_ComBase.CMD_GETCHARGEDATA == model.cmd){
|
//获取充电数据
|
jsInterface.SendCallDataToJS("getChargeData",model);
|
}else if(FBS_ComBase.CMD_CLEARALARM == model.cmd){
|
jsInterface.SendCallDataToJS("clearAllAlarm",model);
|
}else if(FBS_ComBase.CMD_RETURNMAIN == model.cmd){
|
jsInterface.SendCallDataToJS("changeAppForm",model);
|
}
|
}
|
};
|
|
new Thread(new Runnable() {
|
@Override
|
public void run() {
|
while (true){
|
try {
|
if(isRunning){
|
//发送心跳包给设备
|
sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_HEARTBEAT, "");
|
Log.e(TAG, "run: ######################################" );
|
}
|
//handler.removeCallbacks(runnable);
|
Thread.sleep(4000);
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}).start();
|
|
this.sockethread.start();
|
}
|
|
//设置设备ip
|
public boolean setUpDeviceIp(String serverip){
|
boolean flag = true;
|
this.serverip = serverip;
|
this.ftpFileUtil.server_ip = serverip;
|
|
flag = sockethread.setUpDeviceIp(serverip);
|
isRunning = true;
|
return flag;
|
}
|
|
//测试当前连接是否可以连接上
|
public boolean testDeviceIp(String serverip){
|
boolean flag = false;
|
flag = sockethread.testSockConn(serverip);
|
return flag;
|
}
|
|
//获取测试参数
|
public boolean getTestParam(){
|
sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_HEARTBEAT, "");
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_GETDISCHARGEPARAM, "");
|
}
|
|
//新建电池组
|
public boolean newBatt(String battName){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_CREATENEWBATT, battName);
|
}
|
|
//切换电池组
|
public boolean changeBatt(String battName){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_CHANGEBATT, battName);
|
}
|
|
//删除电池组
|
public boolean delectBatt(String battName){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_DELETENOWBATT, battName);
|
}
|
|
//获取单体实时数据
|
public boolean getBattRTData(){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_GETBATTDATA, "");
|
}
|
|
//设置电池测试参数
|
public boolean setTestParam(String param){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_SETDISCHARGEPARAM, param);
|
}
|
|
//启动放电
|
public boolean startDischarge(){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_STARTDISCHARGE, "");
|
}
|
|
//暂停放电
|
public boolean pauseDischarge(){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_PAUSEDISCHARGE, "");
|
}
|
|
//停止放电
|
public boolean stopDischarge(){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_STOPDISCHARGE, "");
|
}
|
|
//获取放电数据
|
public boolean getTestData(){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_GETDISCHARGEDATA, "");
|
}
|
|
//启动充电测试
|
public boolean startCharge(){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_STARTCHARGE, "");
|
}
|
|
//暂停充电测试
|
public boolean pauseCharge(){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_PAUSECHARGE, "");
|
}
|
|
//停止充电测试
|
public boolean stopCharge(){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_STOPCHARGE, "");
|
}
|
|
//获取充电数据
|
public boolean getChargeData(){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_GETCHARGEDATA, "");
|
}
|
|
//读取所有的电池组
|
public List getBattNames(){
|
return ftpFileUtil.readAllBattt(serverip);
|
}
|
|
//获取当前选中的电池组以及其状态
|
public boolean getNowWorkBattState(){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_HEARTBEAT, "");
|
}
|
|
//清除告警
|
public boolean clearAllAlarm(){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_CLEARALARM, "");
|
}
|
|
//切换界面
|
public boolean changeAppForm(String code){
|
return sendMessageToSocketClient(mSocketHandle, FBS_ComBase.CMD_RETURNMAIN, code);
|
}
|
|
private boolean sendMessageToSocketClient(Handler handler, int cmd, String json)
|
{
|
ServiceModel model = new ServiceModel();
|
model.setCmd(cmd);
|
model.handler = handler;
|
model.msg = json;
|
|
Message childMsg = sockethread.mHandler.obtainMessage();
|
childMsg.obj = model;
|
return (sockethread.mHandler.sendMessage(childMsg));
|
}
|
|
}
|