public static List<Map<String, String>> analyzingHJ212Protocol(String data) {
// 解析数据头
List<Map<String, String>> list = new ArrayList<>();
int index = data.indexOf("CP=&&");
String headStr = StringUtils.substring(data, 6, index);
String[] headers = headStr.split(";");
Map<String, String> map = new HashMap<>();
Map<String, String> mapStr = new HashMap<>();
for (int i = 0; i < headers.length; i++) {
String key = headers[i].split("=")[0];
String value = headers[i].split("=")[1];
map.put(key,value);
}
// 解析数据体
String body = StringUtils.substring(data,index + 5,data.length() - 6);
String[] bodyArr = body.split(";");
for (int i = 0; i < bodyArr.length; i++) {
String[] items = bodyArr[i].split(",");
for (int j = 0; j < items.length; j++) {
int strIndex = items[j].indexOf("=");
if (strIndex != -1) {
String key = items[j].split("=")[0];
String value = items[j].split("=")[1];
map.put(key,value);
}
}
}
mapStr.putAll(map);
list.add(mapStr);
return list;
}
示例:
##0357QN=20230613085100076;ST=39;CN=2011;PW=123456;MN=123456789;Flag=5;CP=&&DataTime=20230613085100;a34004-Rtd=0.0,a34004-Flag=N;a34002-Rtd=61.9,a34002-Flag=N;a34001-Rtd=0.0,a34001-Flag=N;LA-Rtd=35.6,LA-Flag=N;a01001-Rtd=28.40,a01001-Flag=N;a01002-Rtd=39.00,a01002-Flag=N;a01006-Rtd=100.300,a01006-Flag=N;a01007-Rtd=1.5,a01007-Flag=N;a01008-Rtd=27,a01008-Flag=N&&0880
解析后: