|
@@ -0,0 +1,49 @@
|
|
|
+package com.energy.online.data.handle;
|
|
|
+
|
|
|
+import com.energy.online.data.common.CommonData;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import wei.yigulu.iec104.annotation.AsduType;
|
|
|
+import wei.yigulu.iec104.apdumodel.Apdu;
|
|
|
+import wei.yigulu.iec104.asdudataframe.NormalizedIntegerType;
|
|
|
+import wei.yigulu.iec104.asdudataframe.qualitydescription.IeMeasuredQuality;
|
|
|
+import wei.yigulu.iec104.asdudataframe.typemodel.InformationBodyAddress;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+@AsduType(typeId = 9)
|
|
|
+public class HandleNormalizedIntegerType extends NormalizedIntegerType {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理短整型数据
|
|
|
+ *
|
|
|
+ * @param apdu
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public byte[][] handleAndAnswer(Apdu apdu) {
|
|
|
+ log.debug("----------处理NormalizedIntegerType型数据---------");
|
|
|
+ HandleShortInteger handleShortFloat = (HandleShortInteger) apdu.getAsdu().getDataFrame();
|
|
|
+ List<InformationBodyAddress> address = handleShortFloat.getAddresses();
|
|
|
+ Map<IeMeasuredQuality, Integer> datas = handleShortFloat.getDatas();
|
|
|
+ int i = 0;
|
|
|
+ //存入共享服务端
|
|
|
+// log.info("获取到数据{}个", address.size());
|
|
|
+ if (apdu.getAsdu().getVsq().getSq() == 0) {
|
|
|
+ log.debug("------处理NormalizedIntegerType型单一寻址-----");
|
|
|
+ for (Map.Entry<IeMeasuredQuality, Integer> e : datas.entrySet()) {
|
|
|
+ CommonData.put(address.get(i++).getAddress(), e.getValue());
|
|
|
+ }
|
|
|
+ } else if (apdu.getAsdu().getVsq().getSq() == 1) {
|
|
|
+ log.debug("------处理NormalizedIntegerType型连续寻址-----");
|
|
|
+ i = address.get(0).getAddress();
|
|
|
+ for (Map.Entry<IeMeasuredQuality, Integer> e : datas.entrySet()) {
|
|
|
+ CommonData.put(i++, e.getValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果有需要返回数据帧可以创建byte数据 向内置入要返回的数据帧encode()后的数组
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+}
|