zwl
2025-12-29 7f1ee24bca80d28851a95ee2019ea6faeb70d81c
src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -10,8 +10,10 @@
import com.core.common.SpringUtils;
import com.zy.asrs.entity.BasCrnOpt;
import com.zy.asrs.entity.BasCrnp;
import com.zy.asrs.entity.DeviceDataLog;
import com.zy.asrs.service.BasCrnOptService;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.DeviceDataLogService;
import com.zy.common.utils.News;
import com.zy.core.CrnThread;
import com.zy.core.cache.MessageQueue;
@@ -25,6 +27,7 @@
import lombok.extern.slf4j.Slf4j;
import java.text.MessageFormat;
import java.util.Base64;
import java.util.Date;
/**
@@ -40,6 +43,11 @@
    private CrnProtocol crnProtocol;
    private boolean resetFlag = false;
    public Long sign = System.currentTimeMillis();
    public boolean isRunning = true;
    /**
     * 堆垛机是否在回原点运动中标记
     */
@@ -53,7 +61,7 @@
    @SuppressWarnings("InfiniteLoopStatement")
    public void run() {
        this.connect();
        while (true) {
        while (isRunning) {
            try {
                int step = 1;
                Task task = MessageQueue.poll(SlaveType.Crn, slave.getId());
@@ -94,7 +102,7 @@
            } catch (Exception e) {
//                e.printStackTrace();
            }
            sign = System.currentTimeMillis();
        }
    }
@@ -149,7 +157,8 @@
     */
    private void readStatus(){
        try {
            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56);
            short len = 56;
            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", len);
            if (result.IsSuccess) {
                if (null == crnProtocol) {
                    crnProtocol = new CrnProtocol();
@@ -191,6 +200,30 @@
                            resetFlag = false;
                        }
                    }
                }
                if (crnProtocol.getAlarm() > 0) {
                    crnProtocol.setLastCommandTime(-1L);
                }
                if (crnProtocol.getAlarm() == 0 && crnProtocol.getLastCommandTime() == -1) {
                    crnProtocol.setLastCommandTime(System.currentTimeMillis());
                }
                if (System.currentTimeMillis() - crnProtocol.getDeviceDataLog() > 1000 * 1) {
                    //采集时间超过5s,保存一次数据记录
                    //保存数据记录
                    DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
                    DeviceDataLog deviceDataLog = new DeviceDataLog();
                    deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result.Content));
                    deviceDataLog.setWcsData(JSON.toJSONString(crnProtocol));
                    deviceDataLog.setType("crn");
                    deviceDataLog.setDeviceNo(crnProtocol.getCrnNo());
                    deviceDataLog.setCreateTime(new Date());
                    deviceDataLogService.insert(deviceDataLog);
                    //更新采集时间
                    crnProtocol.setDeviceDataLog(System.currentTimeMillis());
                }
                try {
@@ -292,7 +325,6 @@
            return false;
        }
    }
    @Override
    public void close() {
@@ -414,4 +446,9 @@
    }
    // 提供一个方法来停止线程
    public void requestStop() {
        isRunning = false;
    }
}