diff --git a/src/main/java/com/ccsens/pelma_analyse/service/impl/SerialServiceImpl.java b/src/main/java/com/ccsens/pelma_analyse/service/impl/SerialServiceImpl.java index 8d50707..5d26eba 100644 --- a/src/main/java/com/ccsens/pelma_analyse/service/impl/SerialServiceImpl.java +++ b/src/main/java/com/ccsens/pelma_analyse/service/impl/SerialServiceImpl.java @@ -100,24 +100,39 @@ public class SerialServiceImpl implements SerialService { System.out.println("配置band:680008900309A416"); break; + case 3: + //配置mac + SerialTool.sendToPort(SerialTool.HexString2Bytes("68000D9001616162626363EA16"), openSerial); + + System.out.println("配置mac:68000D9001616162626363EA16"); + + break; + case 4: + //配置log + SerialTool.sendToPort(SerialTool.HexString2Bytes("680008900801A116"), openSerial); + + System.out.println("配置log:680008900801A116"); + + break; + + case 5: //查询白名单 SerialTool.sendToPort(SerialTool.HexString2Bytes("68000781038B16"), openSerial); System.out.println("查询白名单"); break; - case 4: + case 6: //将缺少的mac添加到白名单 white_list.removeAll(query_white_list); if (white_list.size() > 0){ add_while = white_list.get(0); - System.out.println(add_while); int while_len = add_while.length() / 2 + 7; String while_len_zero_str = String.format("%4s", Integer.toHexString(while_len).toUpperCase()).replace(" ", "0"); - String add_while_str = while_len_zero_str + "'8101'" + add_while; + String add_while_str = while_len_zero_str + "8101" + add_while; String check_code = getCheckCode(add_while_str); add_while_str = "68" + add_while_str + check_code + "16"; @@ -126,7 +141,7 @@ public class SerialServiceImpl implements SerialService { System.out.println("配置白名单:" + add_while_str); } else { - init_status = 5; + init_status = 7; } break; @@ -138,28 +153,27 @@ public class SerialServiceImpl implements SerialService { String res_ack = joinData(openSerial); if (res_ack != null){ - if (res_ack.equalsIgnoreCase(ack_success) && Arrays.asList(1, 2).contains(init_status)){ + if (res_ack.equalsIgnoreCase(ack_success) && Arrays.asList(1, 2, 3, 4).contains(init_status)){ ++init_status; limit_time = start_time; - } else if (init_status == 3){ + } else if (init_status == 5){ //过滤白名单 String command = res_ack.substring(6, 10); if (command.equalsIgnoreCase("2000") || command.equalsIgnoreCase("2006")){ String white_list_str = res_ack.substring(10, (res_ack.length() - 4)); query_white_list = stringToStringArray(white_list_str, 12); - ++init_status; limit_time = start_time; } - } else if (res_ack.equalsIgnoreCase(ack_success) && init_status == 4){ + } else if (res_ack.equalsIgnoreCase(ack_success) && init_status == 6){ query_white_list.add(add_while); limit_time = start_time; } } - if (init_status >= 5){ + if (init_status >= 7){ break; } } @@ -176,15 +190,19 @@ public class SerialServiceImpl implements SerialService { while (true){ String res_ack = joinData(openSerial); if (res_ack != null ){ - String node = res_ack.substring(8, 20); - String send_data = res_ack.substring(28, 44); - - RestTemplate restTemplate = new RestTemplate(); - String url = pelma_url + "/storeBlood?node=" + node + "&data=" + send_data; - restTemplate.getForEntity(url, String.class); + if (res_ack.substring(6, 8).equalsIgnoreCase("05")){ + String node = res_ack.substring(8, 20); + String send_data = res_ack.substring(28, 44); + + try { + RestTemplate restTemplate = new RestTemplate(); + String url = pelma_url + "/storeBlood?node=" + node + "&data=" + send_data; + restTemplate.getForEntity(url, String.class); + } catch (Exception e){ + System.out.println(e.getMessage()); + } + } } - - Thread.sleep(1000); } } @@ -201,7 +219,6 @@ public class SerialServiceImpl implements SerialService { bytes = SerialTool.readFromPort(openSerial); - String join_str = ""; if (bytes != null){ join_data = ArrayUtils.addAll(join_data, bytes); @@ -227,7 +244,8 @@ public class SerialServiceImpl implements SerialService { } } } - Thread.sleep(2000); + //睡眠 + Thread.sleep(1000); return null; } @@ -271,10 +289,10 @@ public class SerialServiceImpl implements SerialService { public ArrayList stringToStringArray(String src, int length){ // 检查参数是否合法 if(null == src || src.equals("")){ - return null; + return new ArrayList<>(); } if(length <= 0){ - return null; + return new ArrayList<>(); } // 获取整个字符串可以被切割成字符子串的个数 int n = (src.length() + length - 1) / length;