| | |
| | | * 电池组组操作相关类
|
| | | */
|
| | | public class BattDataThread extends Thread{
|
| | | public static final int TESTTYPE_NULL = 0; //
|
| | | public static final int TESTTYPE_CHRTEST = 2; //充电测试
|
| | | public static final int TESTTYPE_DISTEST = 3; //放电测试
|
| | | public static final int TESTTYPE_RESTEST = 5; //内阻测试
|
| | |
| | |
|
| | | public Handler mSocketHandler = null;
|
| | | private CommSockClientThread clientThread = null;
|
| | | public boolean isInstall = false; //是否安装
|
| | | public int battIndex = 1; //电池组ID 默认电池组ID
|
| | | public Concentrator_Param param; //汇集器参数
|
| | | public Concentrator_State state; //汇集器状态
|
| | | public boolean isInstall = false; //是否安装
|
| | | public int battIndex = 1; //电池组ID 默认电池组ID
|
| | | public Concentrator_Param param; //汇集器参数
|
| | | public Concentrator_State state; //汇集器状态
|
| | | public Battinf battinf; //电池组信息
|
| | | public DBHelper dbHelper;
|
| | | public WebView webView;
|
| | |
|
| | |
|
| | | public Date lastUpdateTime = new Date(); //上一次获取数据时间
|
| | | public boolean isOutTime = true; //通讯是否超时 超时重连时会重新获取设备的系统参数
|
| | |
|
| | | public boolean isOutTime = true; //通讯是否超时 超时重连时会重新获取设备的系统参数
|
| | | public long loseTimeLong = 0; //断开连接时长
|
| | |
|
| | | public BattDataThread(int battIndex, DBHelper dbHelper,WebView webView){
|
| | | this.webView = webView;
|
| | |
| | | param = new Concentrator_Param();
|
| | | state = new Concentrator_State();
|
| | | clientThread = CommSockClientThread.createClientThread(); //串口通讯线程 //每个电池组通用同一个串口线程
|
| | |
|
| | |
|
| | | BattResDataRecordThread battResDataRecordThread = new BattResDataRecordThread(this,dbHelper);
|
| | | battResDataRecordThread.start();
|
| | |
| | | //Log.e(TAG, "handleMessage: 获取设备状态成功" );
|
| | | }else if(model.cmd >= Concentrator_ComBase.CMD_MODEBUS_BATTMONVOL_INDEX && model.cmd < Concentrator_ComBase.CMD_MODEBUS_BATTMONTMP_INDEX){
|
| | | //读取单体电压成功
|
| | | int index = (model.cmd - Concentrator_ComBase.CMD_MODEBUS_BATTMONVOL_INDEX);
|
| | | //Log.e(TAG, "handleMessage: 获取单体电压成功" );
|
| | | state.cloneMonVol((Concentrator_State)model.data);
|
| | | state.cloneMonVol((Concentrator_State)model.data,index);
|
| | | }else if(model.cmd >= Concentrator_ComBase.CMD_MODEBUS_BATTMONTMP_INDEX && model.cmd < Concentrator_ComBase.CMD_MODEBUS_BATTMONRES_INDEX){
|
| | | //读取单体温度成功
|
| | | int index = (model.cmd - Concentrator_ComBase.CMD_MODEBUS_BATTMONTMP_INDEX);
|
| | | //Log.e(TAG, "handleMessage: 获取单体温度成功" );
|
| | | state.cloneMonTmp((Concentrator_State)model.data);
|
| | | state.cloneMonTmp((Concentrator_State)model.data,index);
|
| | | }else if(model.cmd >= Concentrator_ComBase.CMD_MODEBUS_BATTMONRES_INDEX && model.cmd < (Concentrator_ComBase.CMD_MODEBUS_BATTMONRES_INDEX+300)){
|
| | | //读取单体内阻成功
|
| | | int index = (model.cmd - Concentrator_ComBase.CMD_MODEBUS_BATTMONRES_INDEX);
|
| | | //Log.e(TAG, "handleMessage: 获取单体内阻成功" );
|
| | | state.cloneMonRes((Concentrator_State)model.data);
|
| | | state.cloneMonRes((Concentrator_State)model.data,index);
|
| | | }
|
| | | }else if(model.cmd_type == Concentrator_ComBase.CMD_MODEBUS_WRITECMD){
|
| | | //设置成功
|
| | |
| | | while(true){
|
| | | try {
|
| | |
|
| | | //Log.e(TAG, "run: &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&install" + isInstall+"\tOutTime"+isOutTime);
|
| | | //Log.e(TAG, "run: &&&&&&&&&&&&&&&&"+battIndex+"&&&&&&&&&&&&&&&&&&&&&&&&&&&install" + isInstall+"\tOutTime"+isOutTime);
|
| | | if(isInstall){
|
| | | //如果当前电池组已安装则实时获取当前电池组的单体信息
|
| | | if( isOutTime ){
|
| | | //超时之后只获取当前的系统参数
|
| | | readSystemParam(""); //读取系统参数
|
| | | if(runCount %15 == 0) {
|
| | | //超时之后只获取当前的系统参数
|
| | | readSystemParam(""); //读取系统参数
|
| | | }
|
| | | }else{
|
| | | if(runCount %15 == 0){
|
| | | //读取系统状态
|
| | | readSystemState("");
|
| | | }
|
| | |
|
| | | if(runCount % 15 == 0){
|
| | | if(runCount % 20 == 0){
|
| | | int maxCount = (int)Math.ceil((double)state.monCount/100); //最多需要读取次数
|
| | | int monindex = monRCount % maxCount; //单体索引
|
| | | //读取单体电压
|
| | |
| | | }
|
| | | runCount ++;
|
| | | nowTime = new Date();
|
| | | long timeCount = (nowTime.getTime() - lastUpdateTime.getTime())/1000;
|
| | | if(timeCount > 60){
|
| | | loseTimeLong = (nowTime.getTime() - lastUpdateTime.getTime())/1000;
|
| | | if(loseTimeLong > 60){
|
| | | isOutTime = true; //60秒未通讯判定为通讯超时
|
| | | }else{
|
| | | isOutTime = false;
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | sleep(200);
|
| | | } catch (Exception e) {
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | //获取系统参数
|
| | | public void readSystemParam(String method){
|
| | |
| | |
|
| | | Message childMsg = clientThread.mHandler.obtainMessage();
|
| | | childMsg.obj = model;
|
| | | //Log.e(TAG, battIndex+"sendMessageToSocketClient: isStall"+ isInstall);
|
| | | return (clientThread.mHandler.sendMessage(childMsg));
|
| | | }
|
| | |
|