|
|
@ -52,6 +52,10 @@ import java.text.SimpleDateFormat;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
|
|
|
|
|
import java.util.concurrent.Executors;
|
|
|
|
|
|
|
|
import java.util.concurrent.ThreadPoolExecutor;
|
|
|
|
|
|
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
|
import java.util.logging.Level;
|
|
|
|
import java.util.logging.Level;
|
|
|
|
import java.util.logging.Logger;
|
|
|
|
import java.util.logging.Logger;
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger;;
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger;;
|
|
|
@ -144,6 +148,29 @@ public class MpMasterService extends Service {
|
|
|
|
private String mIccid1 = null;
|
|
|
|
private String mIccid1 = null;
|
|
|
|
private String mIccid2 = null;
|
|
|
|
private String mIccid2 = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//用于创建单例线程保证该线程在项目中唯一
|
|
|
|
|
|
|
|
private static final AtomicBoolean created = new AtomicBoolean(false);
|
|
|
|
|
|
|
|
// private static Thread batteryVoltageThread;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// public static Thread getInstance(Runnable runnable) {
|
|
|
|
|
|
|
|
// if (!created.getAndSet(true)) {
|
|
|
|
|
|
|
|
// batteryVoltageThread = new Thread(runnable);
|
|
|
|
|
|
|
|
// batteryVoltageThread.start();
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// return batteryVoltageThread;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static ExecutorService batteryVoltageThread;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static synchronized ExecutorService getSingleThreadExecutor() {
|
|
|
|
|
|
|
|
if (batteryVoltageThread == null || batteryVoltageThread.isShutdown()) {
|
|
|
|
|
|
|
|
batteryVoltageThread = Executors.newSingleThreadExecutor();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return batteryVoltageThread;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AtomicInteger reqCode = new AtomicInteger(0);
|
|
|
|
AtomicInteger reqCode = new AtomicInteger(0);
|
|
|
|
|
|
|
|
|
|
|
|
public MpMasterService() {
|
|
|
|
public MpMasterService() {
|
|
|
@ -1087,14 +1114,28 @@ public class MpMasterService extends Service {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void buildChargingBatteryVoltage(long ts) {
|
|
|
|
private void buildChargingBatteryVoltage(long ts) {
|
|
|
|
|
|
|
|
if (batteryVoltageThread != null && !batteryVoltageThread.isShutdown()) {
|
|
|
|
|
|
|
|
logger.info("电压线程在执行退出");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
getSingleThreadExecutor().execute(new Runnable() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void run() {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
Thread.sleep(1000);
|
|
|
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
logger.info("电压线程编号" + batteryVoltageThread.hashCode());
|
|
|
|
int val = 0;
|
|
|
|
int val = 0;
|
|
|
|
for (int idx = 0; idx < 3; idx++) {
|
|
|
|
for (int idx = 0; idx < 3; idx++) {
|
|
|
|
|
|
|
|
logger.info("电压测试第" + idx + "次开始读取");
|
|
|
|
val = MpMasterService.getInt(112);
|
|
|
|
val = MpMasterService.getInt(112);
|
|
|
|
|
|
|
|
logger.info("电压测试第" + idx + "次读取结束 " + val);
|
|
|
|
if (val > 0) {
|
|
|
|
if (val > 0) {
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (val > 0) {
|
|
|
|
if (val > 0) {
|
|
|
|
if (val > mMaxBCV) {
|
|
|
|
if (val > mMaxBCV) {
|
|
|
|
mMaxBCV = val;
|
|
|
|
mMaxBCV = val;
|
|
|
@ -1102,6 +1143,9 @@ public class MpMasterService extends Service {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public String getAndResetMaxBCV() {
|
|
|
|
public String getAndResetMaxBCV() {
|
|
|
|
String val = Integer.toString(mMaxBCV / 1000) + "." + Integer.toString((mMaxBCV % 1000) / 100)
|
|
|
|
String val = Integer.toString(mMaxBCV / 1000) + "." + Integer.toString((mMaxBCV % 1000) / 100)
|
|
|
|