HandleShortInteger.java 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package com.energy.online.data.handle;
  2. import com.energy.online.data.common.CommonData;
  3. import lombok.extern.slf4j.Slf4j;
  4. import wei.yigulu.iec104.annotation.AsduType;
  5. import wei.yigulu.iec104.apdumodel.Apdu;
  6. import wei.yigulu.iec104.asdudataframe.ShortIntegerType;
  7. import wei.yigulu.iec104.asdudataframe.qualitydescription.IeMeasuredQuality;
  8. import wei.yigulu.iec104.asdudataframe.typemodel.InformationBodyAddress;
  9. import java.util.List;
  10. import java.util.Map;
  11. @Slf4j
  12. @AsduType(typeId = 11)
  13. public class HandleShortInteger extends ShortIntegerType {
  14. /**
  15. * 处理短整型数据
  16. *
  17. * @param apdu
  18. * @return
  19. */
  20. @Override
  21. public byte[][] handleAndAnswer(Apdu apdu) {
  22. log.debug("----------处理短整型数据---------");
  23. HandleShortInteger handleShortFloat = (HandleShortInteger) apdu.getAsdu().getDataFrame();
  24. List<InformationBodyAddress> address = handleShortFloat.getAddresses();
  25. Map<IeMeasuredQuality, Integer> datas = handleShortFloat.getDatas();
  26. int i = 0;
  27. //存入共享服务端
  28. // log.info("获取到数据{}个", address.size());
  29. if (apdu.getAsdu().getVsq().getSq() == 0) {
  30. log.debug("------处理短整型单一寻址-----");
  31. for (Map.Entry<IeMeasuredQuality, Integer> e : datas.entrySet()) {
  32. CommonData.put(address.get(i++).getAddress(), e.getValue());
  33. }
  34. } else if (apdu.getAsdu().getVsq().getSq() == 1) {
  35. log.debug("------处理短整型连续寻址-----");
  36. i = address.get(0).getAddress();
  37. for (Map.Entry<IeMeasuredQuality, Integer> e : datas.entrySet()) {
  38. CommonData.put(i++, e.getValue());
  39. }
  40. }
  41. //如果有需要返回数据帧可以创建byte数据 向内置入要返回的数据帧encode()后的数组
  42. return null;
  43. }
  44. }