|
|
|
@ -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 ){ |
|
|
|
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; |
|
|
|
|