|
@@ -441,52 +441,53 @@ public class JAXBUtil {
|
|
|
|
|
|
}
|
|
|
public void ShuiBiaoTest() {
|
|
|
- String xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" +
|
|
|
- "<protocol length=\"28\" format=\"hex\" unit=\"byte\" factory=\"华旭\" model=\"智能水表\" series=\"LoraWAN水表\">\r\n" +
|
|
|
- " <dataNode from=\"18\" to=\"28\" unit=\"byte\">\r\n" +
|
|
|
- " <measurings>\r\n" +
|
|
|
- " <measuring code=\"WSV\" name=\"用水量\" from=\"0\" to=\"4\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).reserveDecimal(T(Integer).parseInt(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubHex(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),'33333333'))*0.01,2)\" measuringUnit=\"t\"/>\r\n" +
|
|
|
- " <measuring code=\"VOL\" name=\"电压\" from=\"6\" to=\"7\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).reserveDecimal(T(Integer).parseInt(T(com.zcxk.smartcity.data.access.util.HexUtil).hex2decimal(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubtractHex(#value,'33')))*15.37,0)\" measuringUnit=\"mV\"/>\r\n" +
|
|
|
- " <measuring code=\"FORCED\" name=\"正反转\" from=\"4\" to=\"6\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(T(com.zcxk.smartcity.data.access.util.HexUtil).padLeft(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubHex(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),'3333'),4)).substring(9,10)\">\r\n" +
|
|
|
- " <validators>\r\n" +
|
|
|
- " <validator code=\"0\" name=\"正常\"/>\r\n" +
|
|
|
- " <validator code=\"1\" name=\"反转\"/>\r\n" +
|
|
|
- " </validators>\r\n" +
|
|
|
- " </measuring>\r\n" +
|
|
|
- " <measuring code=\"DISTURB\" name=\"强磁干扰\" from=\"4\" to=\"6\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(T(com.zcxk.smartcity.data.access.util.HexUtil).padLeft(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubHex(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),'3333'),4)).substring(10,11)\">\r\n" +
|
|
|
- " <validators>\r\n" +
|
|
|
- " <validator code=\"0\" name=\"正常\"/>\r\n" +
|
|
|
- " <validator code=\"1\" name=\"透支\"/>\r\n" +
|
|
|
- " </validators>\r\n" +
|
|
|
- " </measuring>\r\n" +
|
|
|
- " <measuring code=\"OVERDRAFT\" name=\"透支状态\" from=\"4\" to=\"6\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(T(com.zcxk.smartcity.data.access.util.HexUtil).padLeft(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubHex(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),'3333'),4)).substring(11,12)\">\r\n" +
|
|
|
- " <validators>\r\n" +
|
|
|
- " <validator code=\"0\" name=\"正常\"/>\r\n" +
|
|
|
- " <validator code=\"1\" name=\"透支\"/>\r\n" +
|
|
|
- " </validators>\r\n" +
|
|
|
- " </measuring>\r\n" +
|
|
|
- " <measuring code=\"ALARM\" name=\"报警状态\" from=\"4\" to=\"6\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(T(com.zcxk.smartcity.data.access.util.HexUtil).padLeft(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubHex(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),'3333'),4)).substring(12,13)\">\r\n" +
|
|
|
- " <validators>\r\n" +
|
|
|
- " <validator code=\"0\" name=\"正常\"/>\r\n" +
|
|
|
- " <validator code=\"1\" name=\"报警\"/>\r\n" +
|
|
|
- " </validators>\r\n" +
|
|
|
- " </measuring>\r\n" +
|
|
|
- " <measuring code=\"VOL_STATUS\" name=\"电压状态\" from=\"4\" to=\"6\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(T(com.zcxk.smartcity.data.access.util.HexUtil).padLeft(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubHex(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),'3333'),4)).substring(13,14)\">\r\n" +
|
|
|
- " <validators>\r\n" +
|
|
|
- " <validator code=\"0\" name=\"正常\"/>\r\n" +
|
|
|
- " <validator code=\"1\" name=\"欠压\"/>\r\n" +
|
|
|
- " </validators>\r\n" +
|
|
|
- " </measuring>\r\n" +
|
|
|
- " <measuring code=\"VALVE\" name=\"阀门状态\" from=\"4\" to=\"6\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(T(com.zcxk.smartcity.data.access.util.HexUtil).padLeft(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubHex(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),'3333'),4)).substring(14,16)\">\r\n" +
|
|
|
- " <validators>\r\n" +
|
|
|
- " <validator code=\"00\" name=\"开\"/>\r\n" +
|
|
|
- " <validator code=\"01\" name=\"关\"/>\r\n" +
|
|
|
- " <validator code=\"11\" name=\"异常\"/>\r\n" +
|
|
|
- " </validators>\r\n" +
|
|
|
- " </measuring>\r\n" +
|
|
|
- " </measurings>\r\n" +
|
|
|
- " </dataNode>\r\n" +
|
|
|
- "</protocol>";
|
|
|
+ String xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
|
|
|
+ "<protocol length=\"28\" format=\"hex\" unit=\"byte\" factory=\"华旭\" model=\"智能水表\" series=\"LoraWAN水表\">\n" +
|
|
|
+ "\t<dataNode from=\"5\" to=\"28\" unit=\"byte\">\n" +
|
|
|
+ "\t\t<measurings>\n" +
|
|
|
+ "\t\t\t<measuring code=\"waterNo\" name=\"电子号\" from=\"0\" to=\"6\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value)\" />\n" +
|
|
|
+ "\t\t\t<measuring code=\"WSV\" name=\"用水量\" from=\"13\" to=\"17\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).reserveDecimal(T(Integer).parseInt(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubHex(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),'33333333'))*0.01,2)\" measuringUnit=\"t\"/>\n" +
|
|
|
+ "\t\t\t<measuring code=\"VOL\" name=\"电压\" from=\"19\" to=\"20\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).reserveDecimal(T(Integer).parseInt(T(com.zcxk.smartcity.data.access.util.HexUtil).hex2decimal(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubtractHex(#value,'33')))*15.37,0)\" measuringUnit=\"mV\"/>\n" +
|
|
|
+ "\t\t\t<measuring code=\"FORCED\" name=\"正反转\" from=\"17\" to=\"19\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(T(com.zcxk.smartcity.data.access.util.HexUtil).padLeft(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubHex(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),'3333'),4)).substring(9,10)\">\n" +
|
|
|
+ "\t\t\t\t<validators>\n" +
|
|
|
+ "\t\t\t\t\t<validator code=\"0\" name=\"正常\"/>\n" +
|
|
|
+ "\t\t\t\t\t<validator code=\"1\" name=\"反转\"/>\n" +
|
|
|
+ "\t\t\t\t</validators>\n" +
|
|
|
+ "\t\t\t</measuring>\n" +
|
|
|
+ "\t\t\t<measuring code=\"DISTURB\" name=\"强磁干扰\" from=\"17\" to=\"19\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(T(com.zcxk.smartcity.data.access.util.HexUtil).padLeft(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubHex(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),'3333'),4)).substring(10,11)\">\n" +
|
|
|
+ "\t\t\t\t<validators>\n" +
|
|
|
+ "\t\t\t\t\t<validator code=\"0\" name=\"正常\"/>\n" +
|
|
|
+ "\t\t\t\t\t<validator code=\"1\" name=\"透支\"/>\n" +
|
|
|
+ "\t\t\t\t</validators>\n" +
|
|
|
+ "\t\t\t</measuring>\n" +
|
|
|
+ "\t\t\t<measuring code=\"OVERDRAFT\" name=\"透支状态\" from=\"17\" to=\"19\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(T(com.zcxk.smartcity.data.access.util.HexUtil).padLeft(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubHex(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),'3333'),4)).substring(11,12)\">\n" +
|
|
|
+ "\t\t\t\t<validators>\n" +
|
|
|
+ "\t\t\t\t\t<validator code=\"0\" name=\"正常\"/>\n" +
|
|
|
+ "\t\t\t\t\t<validator code=\"1\" name=\"透支\"/>\n" +
|
|
|
+ "\t\t\t\t</validators>\n" +
|
|
|
+ "\t\t\t</measuring>\n" +
|
|
|
+ "\t\t\t<measuring code=\"ALARM\" name=\"报警状态\" from=\"17\" to=\"19\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(T(com.zcxk.smartcity.data.access.util.HexUtil).padLeft(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubHex(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),'3333'),4)).substring(12,13)\">\n" +
|
|
|
+ "\t\t\t\t<validators>\n" +
|
|
|
+ "\t\t\t\t\t<validator code=\"0\" name=\"正常\"/>\n" +
|
|
|
+ "\t\t\t\t\t<validator code=\"1\" name=\"报警\"/>\n" +
|
|
|
+ "\t\t\t\t</validators>\n" +
|
|
|
+ "\t\t\t</measuring>\n" +
|
|
|
+ "\t\t\t<measuring code=\"VOL_STATUS\" name=\"电压状态\" from=\"17\" to=\"19\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(T(com.zcxk.smartcity.data.access.util.HexUtil).padLeft(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubHex(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),'3333'),4)).substring(13,14)\">\n" +
|
|
|
+ "\t\t\t\t<validators>\n" +
|
|
|
+ "\t\t\t\t\t<validator code=\"0\" name=\"正常\"/>\n" +
|
|
|
+ "\t\t\t\t\t<validator code=\"1\" name=\"欠压\"/>\n" +
|
|
|
+ "\t\t\t\t</validators>\n" +
|
|
|
+ "\t\t\t</measuring>\n" +
|
|
|
+ "\t\t\t<measuring code=\"VALVE\" name=\"阀门状态\" from=\"17\" to=\"19\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(T(com.zcxk.smartcity.data.access.util.HexUtil).padLeft(T(com.zcxk.smartcity.data.access.util.HexUtil).hexSubHex(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),'3333'),4)).substring(14,16)\">\n" +
|
|
|
+ "\t\t\t\t<validators>\n" +
|
|
|
+ "\t\t\t\t\t<validator code=\"00\" name=\"开\"/>\n" +
|
|
|
+ "\t\t\t\t\t<validator code=\"01\" name=\"关\"/>\n" +
|
|
|
+ "\t\t\t\t\t<validator code=\"11\" name=\"异常\"/>\n" +
|
|
|
+ "\t\t\t\t</validators>\n" +
|
|
|
+ "\t\t\t</measuring>\n" +
|
|
|
+ "\t\t</measurings>\n" +
|
|
|
+ "\t</dataNode>\n" +
|
|
|
+ "</protocol>";
|
|
|
Object object = JAXBUtil.fromXML(xml, "com.zcxk.smartcity.data.access.protocol.model.complex.ComplexProtocol");
|
|
|
Protocol protocol = (Protocol) object;
|
|
|
// System.out.println(GenericProtocol.class.getName());
|
|
@@ -602,41 +603,41 @@ public class JAXBUtil {
|
|
|
System.out.println(JSON.toJSONString(protocol.parser("22175f000068")));
|
|
|
}
|
|
|
public void v188Test() {
|
|
|
- String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" +
|
|
|
- "<protocol length=\"27\" format=\"hex\" unit=\"byte\" factory=\"华旭\" model=\"智能水表\" series=\"LoraWAN水表\">\r\n" +
|
|
|
- " <dataNode from=\"13\" to=\"25\" unit=\"byte\">\r\n" +
|
|
|
- " <measurings>\r\n" +
|
|
|
- " <measuring code=\"WSV\" name=\"用水量\" from=\"3\" to=\"7\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).reserveDecimal(T(Integer).parseInt(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value))*0.01,2)\" measuringUnit=\"t\"/>\r\n" +
|
|
|
- " <measuring code=\"VOL\" name=\"电压\" from=\"10\" to=\"11\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).reserveDecimal(T(Integer).parseInt(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),16)*15.37,2)\" measuringUnit=\"mV\"/>\r\n" +
|
|
|
- " <measuring code=\"FORCED\" name=\"正反转\" from=\"8\" to=\"9\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(#value).substring(3,4)\">\r\n" +
|
|
|
- " <validators>\r\n" +
|
|
|
- " <validator code=\"0\" name=\"正常\"/>\r\n" +
|
|
|
- " <validator code=\"1\" name=\"反转\"/>\r\n" +
|
|
|
- " </validators>\r\n" +
|
|
|
- " </measuring>\r\n" +
|
|
|
- " <measuring code=\"DISTURB\" name=\"强磁干扰\" from=\"8\" to=\"9\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(#value).substring(4,5)\">\r\n" +
|
|
|
- " <validators>\r\n" +
|
|
|
- " <validator code=\"0\" name=\"正常\"/>\r\n" +
|
|
|
- " <validator code=\"1\" name=\"透支\"/>\r\n" +
|
|
|
- " </validators>\r\n" +
|
|
|
- " </measuring>\r\n" +
|
|
|
- " <measuring code=\"VOL_STATUS\" name=\"电压状态\" from=\"8\" to=\"9\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(#value).substring(5,6)\">\r\n" +
|
|
|
- " <validators>\r\n" +
|
|
|
- " <validator code=\"0\" name=\"正常\"/>\r\n" +
|
|
|
- " <validator code=\"1\" name=\"欠压\"/>\r\n" +
|
|
|
- " </validators>\r\n" +
|
|
|
- " </measuring>\r\n" +
|
|
|
- " <measuring code=\"VALVE\" name=\"阀门状态\" from=\"8\" to=\"9\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(#value).substring(6,8)\">\r\n" +
|
|
|
- " <validators>\r\n" +
|
|
|
- " <validator code=\"00\" name=\"开\"/>\r\n" +
|
|
|
- " <validator code=\"01\" name=\"关\"/>\r\n" +
|
|
|
- " <validator code=\"11\" name=\"异常\"/>\r\n" +
|
|
|
- " <validator code=\"10\" name=\"无阀门\"/>\r\n" +
|
|
|
- " </validators>\r\n" +
|
|
|
- " </measuring>\r\n" +
|
|
|
- " </measurings>\r\n" +
|
|
|
- " </dataNode>\r\n" +
|
|
|
- "</protocol>" ;
|
|
|
+ String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" +
|
|
|
+ "<protocol length=\"27\" format=\"hex\" unit=\"byte\" factory=\"华旭\" model=\"智能水表\" series=\"LoraWAN水表\">\r\n" +
|
|
|
+ " <dataNode from=\"13\" to=\"25\" unit=\"byte\">\r\n" +
|
|
|
+ " <measurings>\r\n" +
|
|
|
+ " <measuring code=\"WSV\" name=\"用水量\" from=\"3\" to=\"7\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).reserveDecimal(T(Integer).parseInt(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value))*0.01,2)\" measuringUnit=\"t\"/>\r\n" +
|
|
|
+ " <measuring code=\"VOL\" name=\"电压\" from=\"10\" to=\"11\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).reserveDecimal(T(Integer).parseInt(T(com.zcxk.smartcity.data.access.util.HexUtil).hexTransfer(#value),16)*15.37,2)\" measuringUnit=\"mV\"/>\r\n" +
|
|
|
+ " <measuring code=\"FORCED\" name=\"正反转\" from=\"8\" to=\"9\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(#value).substring(3,4)\">\r\n" +
|
|
|
+ " <validators>\r\n" +
|
|
|
+ " <validator code=\"0\" name=\"正常\"/>\r\n" +
|
|
|
+ " <validator code=\"1\" name=\"反转\"/>\r\n" +
|
|
|
+ " </validators>\r\n" +
|
|
|
+ " </measuring>\r\n" +
|
|
|
+ " <measuring code=\"DISTURB\" name=\"强磁干扰\" from=\"8\" to=\"9\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(#value).substring(4,5)\">\r\n" +
|
|
|
+ " <validators>\r\n" +
|
|
|
+ " <validator code=\"0\" name=\"正常\"/>\r\n" +
|
|
|
+ " <validator code=\"1\" name=\"透支\"/>\r\n" +
|
|
|
+ " </validators>\r\n" +
|
|
|
+ " </measuring>\r\n" +
|
|
|
+ " <measuring code=\"VOL_STATUS\" name=\"电压状态\" from=\"8\" to=\"9\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(#value).substring(5,6)\">\r\n" +
|
|
|
+ " <validators>\r\n" +
|
|
|
+ " <validator code=\"0\" name=\"正常\"/>\r\n" +
|
|
|
+ " <validator code=\"1\" name=\"欠压\"/>\r\n" +
|
|
|
+ " </validators>\r\n" +
|
|
|
+ " </measuring>\r\n" +
|
|
|
+ " <measuring code=\"VALVE\" name=\"阀门状态\" from=\"8\" to=\"9\" unit=\"byte\" expression=\"T(com.zcxk.smartcity.data.access.util.HexUtil).hexString2binaryString(#value).substring(6,8)\">\r\n" +
|
|
|
+ " <validators>\r\n" +
|
|
|
+ " <validator code=\"00\" name=\"开\"/>\r\n" +
|
|
|
+ " <validator code=\"01\" name=\"关\"/>\r\n" +
|
|
|
+ " <validator code=\"11\" name=\"异常\"/>\r\n" +
|
|
|
+ " <validator code=\"10\" name=\"无阀门\"/>\r\n" +
|
|
|
+ " </validators>\r\n" +
|
|
|
+ " </measuring>\r\n" +
|
|
|
+ " </measurings>\r\n" +
|
|
|
+ " </dataNode>\r\n" +
|
|
|
+ "</protocol>" ;
|
|
|
Object object = JAXBUtil.fromXML(xml, "com.zcxk.smartcity.data.access.protocol.model.complex.ComplexProtocol");
|
|
|
Protocol protocol = (Protocol) object;
|
|
|
Map<String, Object> map = (Map<String, Object>) MapTransformUtils.objectToMap(protocol);
|
|
@@ -727,13 +728,13 @@ public class JAXBUtil {
|
|
|
// util.ButtonTest();
|
|
|
// util.JingGaiTest();
|
|
|
// util.DianBiaoTest();
|
|
|
-// util.ShuiBiaoTest();
|
|
|
+ util.ShuiBiaoTest();
|
|
|
// util.CardTest();
|
|
|
// util.BLETest();
|
|
|
// util.SMOKETest();
|
|
|
// util.flowMeter();
|
|
|
// util.DMTest();
|
|
|
- util.v188Test();
|
|
|
+// util.v188Test();
|
|
|
// util.FireTest();
|
|
|
// util.AlarmTest();
|
|
|
}
|