CheckUpTask.java 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package com.gzlh.device.plc.handler;
  2. import cn.hutool.core.util.RandomUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import cn.hutool.extra.spring.SpringUtil;
  5. import com.gzlh.bus.EventBus;
  6. import com.gzlh.bus.EventDataManager;
  7. import com.gzlh.bus.SysConfig;
  8. import com.gzlh.config.dto.SerialSetting;
  9. import com.gzlh.config.task.Task;
  10. import com.gzlh.config.task.TaskService;
  11. import com.gzlh.device.plc.client.PlcNettyConfig;
  12. import com.gzlh.utils.DeviceCache;
  13. import com.gzlh.utils.ModbusUtils;
  14. import lombok.extern.slf4j.Slf4j;
  15. /**
  16. * 检查下发落杆指令下发之后任然没有抬杆
  17. */
  18. @Slf4j
  19. public class CheckUpTask extends Task {
  20. private int tryCount;
  21. public CheckUpTask(String id, long delayInMilliseconds, int tryCount) {
  22. super(id, delayInMilliseconds);
  23. this.tryCount = tryCount;
  24. }
  25. @Override
  26. public void run() {
  27. if (tryCount >= 8) {
  28. log.error("尝试超过8次无法抬杆,需要人工干预=========");
  29. return;
  30. }
  31. String plcStatus= DeviceCache.getPlcStatus();
  32. if (StrUtil.isEmpty(plcStatus)){
  33. return;
  34. }
  35. SerialSetting.PlcDTO.StatusDTO statusDTO= SysConfig.serialSetting.getPlc().getStatus();
  36. String upPoint= statusDTO.getUpPoint();
  37. String upStatus=plcStatus.charAt(Integer.parseInt(upPoint))+"";
  38. if (upStatus.equals("1")){
  39. log.info("抬杆完成,停止下发指令");
  40. //已经上到位了,所以停止检查
  41. return;
  42. }
  43. String gatePoint = SysConfig.serialSetting.getPlc().getOut().getGatePoint();
  44. String command = PLCHadnler.COMMAND_PREFIX + gatePoint + PLCHadnler.COMMAND_ON;
  45. String packData = ModbusUtils.buildRequestPacket(command);
  46. PlcNettyConfig plcNettyConfig = SpringUtil.getBean(PlcNettyConfig.class);
  47. plcNettyConfig.send(packData);
  48. tryCount = tryCount + 1;
  49. TaskService taskService = SpringUtil.getBean(TaskService.class);
  50. taskService.addTask(new CheckUpTask(RandomUtil.randomNumbers(10), 2000, tryCount));
  51. }
  52. }