package com.socket; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.util.Log; import com.concentrator.Concentrator_State; import com.fgkj.dao.DBHelper; import com.util.Com; import java.util.Date; /** * 内阻数据记录线程 */ public class BattResDataRecordThread extends Thread{ public static final String TAG = "BattResDataRecordThread"; public BattDataThread battData; //电池实时数据 public DBHelper dbHelper; //数据库对象 public int lastResTestCount = 0; //上一次内阻测试的次数 public BattResDataRecordThread(BattDataThread battData,DBHelper dbHelper){ this.battData = battData; this.dbHelper = dbHelper; dbHelper.Create_battresdata(dbHelper.getWritableDatabase(),battData.battIndex); //创建当前电池组的内阻数据表 } @Override public void run() { Log.d(TAG, "run: BattResDataRecordThread start at" + Com.getDateTimeFormat(new Date(),Com.DTF_YMDhms)); while(true){ try { //Log.e(TAG, "run: "+ battData.isOutTime+"\tlastResTestCount:"+lastResTestCount+"\t count:"+battData.state.getRestestcount()); if(!battData.isOutTime){ if(lastResTestCount != battData.state.getRestestcount()){ if(battData.state.monCount >0 && battData.state.mon_ress[battData.state.monCount-1] > 0){ //开始记录内阻历史数据 int max_test_record_count = queryMaxTestRecordCount(battData.battIndex,dbHelper); //查询当前电池组最大的记录笔数 Log.e(TAG, "run: MAXCOUNT:"+max_test_record_count ); //插入 tb_battresdata_inf 表中 insertBattResDataInf(battData.battIndex, battData.state,dbHelper,max_test_record_count); //插入 tb_battresdata_id 表中 insertBattResDataID(battData.battIndex,battData.state,dbHelper,max_test_record_count); //Log.e(TAG, "run: battindex:"+battData.battIndex+"记录历史数据成功 #############################"); lastResTestCount = battData.state.getRestestcount(); } } } sleep(3000); } catch (Exception e) { e.printStackTrace(); } } } public static void insertBattResDataID(int battgroupid,Concentrator_State state,DBHelper dbHelper,int test_record_count){ String sql_str_start = "INSERT INTO tb_battresdata_1(BattGroupId,test_record_count,test_type,test_starttime,group_vol,test_curr,mon_num,mon_vol,mon_tmp,mon_res) VALUES "; String sql_str_base = ""; for(int i = 0;i