diff --git a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java index d6a587f5..df136235 100644 --- a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java +++ b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java @@ -135,7 +135,7 @@ public class RealtimeDataLogic implements ServiceLogic { if (socInt != 0) cacheOrder.put("endSoc", socInt); if (cachePile.get("version").equals("0B")) { final String hex = realtimeData.getHex(); - String cdhex = hex.substring(0x40 * 2 + 4, hex.length() - 4); + String cdhex = hex.substring(0x40 * 2 + 3, hex.length() - 4); if (cdhex.length() > 0) { cacheOrder.put("em1", calcem(cdhex)); } @@ -264,9 +264,9 @@ public class RealtimeDataLogic implements ServiceLogic { public static List calcem(String hex) { - int sumPeriod = Integer.parseInt(hex.substring(0, 2), 16); + int sumPeriod = Integer.parseInt(hex.substring(30, 32), 16); List cds = new ArrayList<>(); - for (int i = 10; i < sumPeriod * 16 + 10; i = i + 16) { // todo + for (int i = 32; i <= sumPeriod * 16 + 32; i = i + 16) { // todo ChargeDetails cd = new ChargeDetails(); cd.setDetailPower(HexUtils.reverseHexInt(hex.substring(i, i + 8)) / 100000.0); cd.setDetailElecMoney(HexUtils.reverseHexInt(hex.substring(i + 8, i + 16)) / 100000.0); diff --git a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/server/ChargingPileBinaryHandler.java b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/server/ChargingPileBinaryHandler.java index c4b9e1a3..2dc0aa97 100644 --- a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/server/ChargingPileBinaryHandler.java +++ b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/server/ChargingPileBinaryHandler.java @@ -131,7 +131,7 @@ public class ChargingPileBinaryHandler implements ClientBinaryHandler { } if (SERVICE_HB.equals(serviceName) && OK.equals(resultCode)) { Boolean tcfg = (Boolean) cachePile.get("tcfg"); - if (!tcfg) { + if (tcfg == null || !tcfg) { String skey = pilekey.concat(".seqhex"); Thread.sleep(500); Date date = Calendar.getInstance().getTime();