12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 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.ShortIntegerType;
- 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 = 11)
- public class HandleShortInteger extends ShortIntegerType {
- /**
- * 处理短整型数据
- *
- * @param apdu
- * @return
- */
- @Override
- public byte[][] handleAndAnswer(Apdu apdu) {
- log.debug("----------处理短整型数据---------");
- 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("------处理短整型单一寻址-----");
- 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("------处理短整型连续寻址-----");
- i = address.get(0).getAddress();
- for (Map.Entry<IeMeasuredQuality, Integer> e : datas.entrySet()) {
- CommonData.put(i++, e.getValue());
- }
- }
- //如果有需要返回数据帧可以创建byte数据 向内置入要返回的数据帧encode()后的数组
- return null;
- }
- }
|