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 address = handleShortFloat.getAddresses(); Map datas = handleShortFloat.getDatas(); int i = 0; //存入共享服务端 // log.info("获取到数据{}个", address.size()); if (apdu.getAsdu().getVsq().getSq() == 0) { log.debug("------处理短整型单一寻址-----"); for (Map.Entry 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 e : datas.entrySet()) { CommonData.put(i++, e.getValue()); } } //如果有需要返回数据帧可以创建byte数据 向内置入要返回的数据帧encode()后的数组 return null; } }