#
Junjie
2025-06-08 94707ed9664f7c9d60cb3dc4b88e04a76cc8ea19
src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -40,6 +40,11 @@
    private CrnProtocol crnProtocol;
    private boolean resetFlag = false;
    public Long sign = System.currentTimeMillis();
    public boolean isRunning = true;
    /**
     * 堆垛机是否在回原点运动中标记
     */
@@ -53,7 +58,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 +99,7 @@
            } catch (Exception e) {
//                e.printStackTrace();
            }
            sign = System.currentTimeMillis();
        }
    }
@@ -234,6 +239,23 @@
            News.error("SiemensCrn"+" - 6"+" - 堆垛机写入命令为空");
            return false;
        }
        int writeAck = 0;
        do {
            OperateResult resultAck = siemensNet.Write("DB100.0", (short) 0);
            if (resultAck.IsSuccess){
                Thread.sleep(200);
                OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 2);
                short ack = siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
                if (ack != 0) {
                    writeAck++;
                }else {
                    News.info("堆垛机命令下发[id:{}] >>>>> {}", slave.getId(), "ack复位完成");
                    break;
                }
            }
        }while (writeAck <5);
//        convertRow(command);
        command.setCrnNo(slave.getId());
        short[] array = new short[10];
@@ -414,4 +436,9 @@
    }
    // 提供一个方法来停止线程
    public void requestStop() {
        isRunning = false;
    }
}