12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package com.gzlh.device.plc.handler;
- import cn.hutool.core.util.RandomUtil;
- import cn.hutool.core.util.StrUtil;
- import cn.hutool.extra.spring.SpringUtil;
- import com.gzlh.bus.EventBus;
- import com.gzlh.bus.EventDataManager;
- import com.gzlh.bus.SysConfig;
- import com.gzlh.config.dto.SerialSetting;
- import com.gzlh.config.task.Task;
- import com.gzlh.config.task.TaskService;
- import com.gzlh.device.plc.client.PlcNettyConfig;
- import com.gzlh.utils.DeviceCache;
- import com.gzlh.utils.ModbusUtils;
- import lombok.extern.slf4j.Slf4j;
- /**
- * 检查下发落杆指令下发之后任然没有抬杆
- */
- @Slf4j
- public class CheckUpTask extends Task {
- private int tryCount;
- public CheckUpTask(String id, long delayInMilliseconds, int tryCount) {
- super(id, delayInMilliseconds);
- this.tryCount = tryCount;
- }
- @Override
- public void run() {
- if (tryCount >= 8) {
- log.error("尝试超过8次无法抬杆,需要人工干预=========");
- return;
- }
- String plcStatus= DeviceCache.getPlcStatus();
- if (StrUtil.isEmpty(plcStatus)){
- return;
- }
- SerialSetting.PlcDTO.StatusDTO statusDTO= SysConfig.serialSetting.getPlc().getStatus();
- String upPoint= statusDTO.getUpPoint();
- String upStatus=plcStatus.charAt(Integer.parseInt(upPoint))+"";
- if (upStatus.equals("1")){
- log.info("抬杆完成,停止下发指令");
- //已经上到位了,所以停止检查
- return;
- }
- String gatePoint = SysConfig.serialSetting.getPlc().getOut().getGatePoint();
- String command = PLCHadnler.COMMAND_PREFIX + gatePoint + PLCHadnler.COMMAND_ON;
- String packData = ModbusUtils.buildRequestPacket(command);
- PlcNettyConfig plcNettyConfig = SpringUtil.getBean(PlcNettyConfig.class);
- plcNettyConfig.send(packData);
- tryCount = tryCount + 1;
- TaskService taskService = SpringUtil.getBean(TaskService.class);
- taskService.addTask(new CheckUpTask(RandomUtil.randomNumbers(10), 2000, tryCount));
- }
- }
|