From 4f364f6601955d68b07c318d51f7db3f435effde Mon Sep 17 00:00:00 2001
From: zhangchao <zc857179121@qq.com>
Date: 星期六, 07 九月 2024 11:37:19 +0800
Subject: [PATCH] 输送线指令优化

---
 src/main/java/com/zy/core/thread/MelsecCrnThread.java |  954 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 477 insertions(+), 477 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/MelsecCrnThread.java b/src/main/java/com/zy/core/thread/MelsecCrnThread.java
index 3a26c91..17277b5 100644
--- a/src/main/java/com/zy/core/thread/MelsecCrnThread.java
+++ b/src/main/java/com/zy/core/thread/MelsecCrnThread.java
@@ -1,481 +1,481 @@
-package com.zy.core.thread;
-
-import HslCommunication.Core.Types.OperateResult;
-import HslCommunication.Core.Types.OperateResultExOne;
-import HslCommunication.Profinet.Melsec.MelsecMcNet;
-import com.alibaba.fastjson.JSON;
-import com.core.common.DateUtils;
-import com.core.common.SpringUtils;
-import com.core.exception.CoolException;
-import com.zy.asrs.entity.BasCrnOpt;
-import com.zy.asrs.entity.BasCrnp;
-import com.zy.asrs.service.BasCrnOptService;
-import com.zy.asrs.service.BasCrnpService;
-import com.zy.common.utils.News;
-import com.zy.core.CrnThread;
-import com.zy.core.ThreadHandler;
-import com.zy.core.cache.MessageQueue;
-import com.zy.core.cache.OutputQueue;
-import com.zy.core.enums.CrnStatusType;
-import com.zy.core.enums.CrnTaskModeType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.CrnSlave;
-import com.zy.core.model.Task;
-import com.zy.core.model.command.CrnCommand;
-import com.zy.core.model.protocol.CrnProtocol;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-
-import java.text.MessageFormat;
-import java.util.Date;
-
-/**
- * 鍫嗗灈鏈虹嚎绋�
- * Created by vincent on 2020/8/4
- */
-@Data
-@Slf4j
-public class MelsecCrnThread implements Runnable, ThreadHandler, CrnThread
-{
-
-    private MelsecMcNet melsecMcNet;
-    private CrnSlave slave;
-    private CrnProtocol crnProtocol;
-    private short heartBeatVal = 1;
-    private boolean resetFlag = false;
-
-    /**
-     * 鍫嗗灈鏈烘槸鍚﹀湪鍥炲師鐐硅繍鍔ㄤ腑鏍囪
-     */
-    private boolean backHpFlag = false;
-
-    public MelsecCrnThread(CrnSlave slave) {
-        this.slave = slave;
-    }
-
-    @Override
-    @SuppressWarnings("InfiniteLoopStatement")
-    public void run() {
-        this.connect();
-//        try {
-//            Thread.sleep(2000);
-//        } catch (InterruptedException e) {
-//            e.printStackTrace();
-//        }
-        while (true) {
-            try {
-                int step = 1;
-                Task task = MessageQueue.poll(SlaveType.Crn, slave.getId());
-                if (task != null) {
-                    step = task.getStep();
-                }
-                switch (step) {
-                    // 璇绘暟鎹�
-                    case 1:
-                        readStatus();
-                        break;
-                    // 鍐欏叆鏁版嵁
-                    case 2:
-                        write((CrnCommand) task.getData());
-                        break;
-                    // 澶嶄綅
-                    case 3:
-                        CrnCommand command = (CrnCommand) task.getData();
-                        if (null == command) {
-                            command = new CrnCommand();
-                        }
-                        command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-                        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
-                        command.setAckFinish((short) 1);  // 浠诲姟瀹屾垚纭浣�
-                        command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡
-//                        command.setSourcePosX((short)0);     // 婧愬簱浣嶆帓
-//                        command.setSourcePosY((short)0);     // 婧愬簱浣嶅垪
-//                        command.setSourcePosZ((short)0);     // 婧愬簱浣嶅眰
-//                        command.setDestinationPosX((short)0);     // 鐩爣搴撲綅鎺�
-//                        command.setDestinationPosY((short)0);     // 鐩爣搴撲綅鍒�
-//                        command.setDestinationPosZ((short)0);     // 鐩爣搴撲綅灞�
-                        write(command);
-                        break;
-                    default:
-                        break;
-                }
-                // 蹇冭烦
-                heartbeat();
-                Thread.sleep(500);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-
-        }
-    }
-
-    /**
-     * 鍒濆鍖栧爢鍨涙満鐘舵��
-     */
-    private void initCrn() {
-        if (null == crnProtocol) {
-            crnProtocol = new CrnProtocol();
-        }
-        crnProtocol.setMode((short) -1);
-//        crnProtocol.setTaskNo((short)0);
-        crnProtocol.setStatus((short)-1);
-        crnProtocol.setBay((short)0);
-        crnProtocol.setLevel((short)0);
-        crnProtocol.setForkPos((short) -1);
-        crnProtocol.setLiftPos((short) -1);
-        crnProtocol.setWalkPos((short)0);
-        crnProtocol.setLoaded((short)0);
-        crnProtocol.setAlarm((short)0);
-        crnProtocol.setxSpeed((short)0);
-        crnProtocol.setySpeed((short)0);
-        crnProtocol.setzSpeed((short)0);
-        crnProtocol.setxDistance((short)0);
-        crnProtocol.setyDistance((short)0);
-        crnProtocol.setxDuration((short)0);
-        crnProtocol.setyDuration((short)0);
-    }
-
-    @Override
-    public boolean connect() {
-        boolean result = false;
-        melsecMcNet = new MelsecMcNet(slave.getIp(), slave.getPort());
-        OperateResult connect = melsecMcNet.ConnectServer();
-        if(connect.IsSuccess){
-            result = true;
-            OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戝爢鍨涙満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-            News.info("MelsecCrn"+" - 1"+" - 鍫嗗灈鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-        } else {
-            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝爢鍨涙満plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] ", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-            News.error("MelsecCrn"+" - 2"+" - 鍫嗗灈鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-            initCrn();
-        }
-//        melsecMcNet.ConnectClose();
-        return result;
-    }
-
-    /**
-     * 璇诲彇鐘舵��
-     */
-    private void readStatus(){
-        try {
-//            if (this.slave.getId() == 1 && flag1.equals(0)) {
-//                Thread.sleep(3000);
-//                flag1=1;
-//                System.out.println("===");
-//            }
-            OperateResultExOne<byte[]> result = melsecMcNet.Read("D1035", (short) 56);
-            if (result.IsSuccess) {
-                if (null == crnProtocol) {
-                    crnProtocol = new CrnProtocol();
-                    crnProtocol.setCrnNo(slave.getId());
-                }
-                crnProtocol.setMode(melsecMcNet.getByteTransform().TransInt16(result.Content, 0));
-                crnProtocol.setTaskNo(melsecMcNet.getByteTransform().TransInt16(result.Content, 2));
-                crnProtocol.setStatus(melsecMcNet.getByteTransform().TransInt16(result.Content, 4));
-                crnProtocol.setBay(melsecMcNet.getByteTransform().TransInt16(result.Content, 6));
-                crnProtocol.setLevel(melsecMcNet.getByteTransform().TransInt16(result.Content, 8));
-                crnProtocol.setForkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 10));
-                crnProtocol.setLiftPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 12));
-                crnProtocol.setWalkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 14));
-                crnProtocol.setLoaded(melsecMcNet.getByteTransform().TransInt16(result.Content, 16));
-                crnProtocol.setAlarm(melsecMcNet.getByteTransform().TransInt16(result.Content, 18));
-                crnProtocol.setTemp1(melsecMcNet.getByteTransform().TransInt16(result.Content, 20));
-                crnProtocol.setTemp2(melsecMcNet.getByteTransform().TransInt16(result.Content, 22));
-                crnProtocol.setTemp3(melsecMcNet.getByteTransform().TransInt16(result.Content, 24));
-                crnProtocol.setTemp4(melsecMcNet.getByteTransform().TransInt16(result.Content, 26));
-                crnProtocol.setxSpeed(melsecMcNet.getByteTransform().TransInt16(result.Content, 28));
-                crnProtocol.setySpeed(melsecMcNet.getByteTransform().TransInt16(result.Content, 32));
-                crnProtocol.setzSpeed(melsecMcNet.getByteTransform().TransInt16(result.Content, 36));
-                crnProtocol.setxDistance(melsecMcNet.getByteTransform().TransInt16(result.Content, 40));
-                crnProtocol.setyDistance(melsecMcNet.getByteTransform().TransInt16(result.Content, 44));
-                crnProtocol.setxDuration(melsecMcNet.getByteTransform().TransInt16(result.Content, 48));
-                crnProtocol.setyDuration(melsecMcNet.getByteTransform().TransInt16(result.Content, 52));
-
-                OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
-
-                // 澶嶄綅淇″彿
-                if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING_ONE)) {
-                    News.error("MelsecCrn"+" - 3"+" ---------绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}][宸ヤ綔鍙凤細{}]==>> 鐘舵�佷负90锛岀瓑寰呯‘璁わ紒锛�",slave.getId(),crnProtocol.getTaskNo());
-                    if (resetFlag) {
-                        if(crnProtocol.getTaskNo()==9999){
-                            backHpFlag = false;
-                        }
-                        CrnCommand crnCommand = new CrnCommand();
-                        crnCommand.setAckFinish((short)1);
-                        if (write(crnCommand)) {
-                            resetFlag = false;
-                        }
-                    }
-                }
-
-                // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
-                BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
-                BasCrnp basCrnp = new BasCrnp();
-                basCrnp.setCrnErr(crnProtocol.getAlarm()==null?0:crnProtocol.getAlarm().longValue());
-                basCrnp.setCrnNo(slave.getId());
-                basCrnp.setCrnSts((int)crnProtocol.getMode());
-                if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){
-                    News.error("MelsecCrn"+" - 4"+" - 鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-                }
-
-            } else {
-                OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆憑1}鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐�",DateUtils.convert(new Date()), slave.getId()));
-                throw new CoolException(MessageFormat.format( "鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort()));
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-            News.error("MelsecCrn"+" - 5"+" - 璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-            initCrn();
-        }
-
-    }
-
-    /**
-     * 鍐欏叆鏁版嵁
-     */
-    private boolean write(CrnCommand command){
-        if (null == command) {
-            News.error("MelsecCrn"+" - 6"+" - 鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
-            return false;
-        }
-
-//        OperateResult result = null;
-//        try{
-//            Integer exeCount=0;
-//            do{
-//                command.setCrnNo(slave.getId());
-//                short[] array = new short[10];
-//                array[0] = command.getAckFinish();
-//                array[1] = command.getTaskNo();
-//                array[2] = command.getTaskMode();
-//                array[3] = command.getSourcePosX();
-//                array[4] = command.getSourcePosY();
-//                array[5] = command.getSourcePosZ();
-//                array[6] = command.getDestinationPosX();
-//                array[7] = command.getDestinationPosY();
-//                array[8] = command.getDestinationPosZ();
-//                array[9] = command.getCommand();
-//                result = melsecMcNet.Write("D0", array);
-//                if(result.IsSuccess) {
-//                    if (command.getAckFinish() == 0) {
-//                        short commandFinish = 1;
-//                        result = melsecMcNet.Write("D9", commandFinish);
-//                        if(result.IsSuccess){
-//                            //鍐欎换鍔$‘璁よ繑鍥炴垚鍔熷悗锛屾煡璇㈢‘璁や竴娆�
-//                            Thread.sleep(200);
-//                            OperateResultExOne<byte[]> result1 = melsecMcNet.Read("D9", (short)2);
-//                            if(result1.IsSuccess){
-//                                short commandVal = melsecMcNet.getByteTransform().TransInt16(result1.Content,2);
-//                                if(commandVal==1){
-//                                    break;
-//                                } else {
-//                                    exeCount++;
-//                                }
-//                            } else{
-//                                exeCount++;
-//                            }
-//                        }else{
-//                            exeCount++;
-//                        }
-//                    }
-//                }else{
-//                    exeCount++;
+//package com.zy.core.thread;
+//
+//import HslCommunication.Core.Types.OperateResult;
+//import HslCommunication.Core.Types.OperateResultExOne;
+//import HslCommunication.Profinet.Melsec.MelsecMcNet;
+//import com.alibaba.fastjson.JSON;
+//import com.core.common.DateUtils;
+//import com.core.common.SpringUtils;
+//import com.core.exception.CoolException;
+//import com.zy.asrs.entity.BasCrnOpt;
+//import com.zy.asrs.entity.BasCrnp;
+//import com.zy.asrs.service.BasCrnOptService;
+//import com.zy.asrs.service.BasCrnpService;
+//import com.zy.common.utils.News;
+//import com.zy.core.CrnThread;
+//import com.zy.core.ThreadHandler;
+//import com.zy.core.cache.MessageQueue;
+//import com.zy.core.cache.OutputQueue;
+//import com.zy.core.enums.CrnStatusType;
+//import com.zy.core.enums.CrnTaskModeType;
+//import com.zy.core.enums.SlaveType;
+//import com.zy.core.model.CrnSlave;
+//import com.zy.core.model.Task;
+//import com.zy.core.model.command.CrnCommand;
+//import com.zy.core.model.protocol.CrnProtocol;
+//import lombok.Data;
+//import lombok.extern.slf4j.Slf4j;
+//
+//import java.text.MessageFormat;
+//import java.util.Date;
+//
+///**
+// * 鍫嗗灈鏈虹嚎绋�
+// * Created by vincent on 2020/8/4
+// */
+//@Data
+//@Slf4j
+//public class MelsecCrnThread implements Runnable, ThreadHandler, CrnThread
+//{
+//
+//    private MelsecMcNet melsecMcNet;
+//    private CrnSlave slave;
+//    private CrnProtocol crnProtocol;
+//    private short heartBeatVal = 1;
+//    private boolean resetFlag = false;
+//
+//    /**
+//     * 鍫嗗灈鏈烘槸鍚﹀湪鍥炲師鐐硅繍鍔ㄤ腑鏍囪
+//     */
+//    private boolean backHpFlag = false;
+//
+//    public MelsecCrnThread(CrnSlave slave) {
+//        this.slave = slave;
+//    }
+//
+//    @Override
+//    @SuppressWarnings("InfiniteLoopStatement")
+//    public void run() {
+//        this.connect();
+////        try {
+////            Thread.sleep(2000);
+////        } catch (InterruptedException e) {
+////            e.printStackTrace();
+////        }
+//        while (true) {
+//            try {
+//                int step = 1;
+//                Task task = MessageQueue.poll(SlaveType.Crn, slave.getId());
+//                if (task != null) {
+//                    step = task.getStep();
 //                }
-//                Thread.sleep(200);
-//            }while(exeCount>3);
-//        }catch (Exception e){
+//                switch (step) {
+//                    // 璇绘暟鎹�
+//                    case 1:
+//                        readStatus();
+//                        break;
+//                    // 鍐欏叆鏁版嵁
+//                    case 2:
+//                        write((CrnCommand) task.getData());
+//                        break;
+//                    // 澶嶄綅
+//                    case 3:
+//                        CrnCommand command = (CrnCommand) task.getData();
+//                        if (null == command) {
+//                            command = new CrnCommand();
+//                        }
+//                        command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+//                        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
+//                        command.setAckFinish((short) 1);  // 浠诲姟瀹屾垚纭浣�
+//                        command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡
+////                        command.setSourcePosX((short)0);     // 婧愬簱浣嶆帓
+////                        command.setSourcePosY((short)0);     // 婧愬簱浣嶅垪
+////                        command.setSourcePosZ((short)0);     // 婧愬簱浣嶅眰
+////                        command.setDestinationPosX((short)0);     // 鐩爣搴撲綅鎺�
+////                        command.setDestinationPosY((short)0);     // 鐩爣搴撲綅鍒�
+////                        command.setDestinationPosZ((short)0);     // 鐩爣搴撲綅灞�
+//                        write(command);
+//                        break;
+//                    default:
+//                        break;
+//                }
+//                // 蹇冭烦
+//                heartbeat();
+//                Thread.sleep(500);
+//            } catch (Exception e) {
+//                e.printStackTrace();
+//            }
 //
 //        }
-
-        command.setCrnNo(slave.getId());
-        short[] array = new short[10];
-        array[0] = command.getAckFinish();
-        array[1] = command.getTaskNo();
-        array[2] = command.getTaskMode();
-        array[3] = command.getSourcePosX();
-        array[4] = command.getSourcePosY();
-        array[5] = command.getSourcePosZ();
-        array[6] = command.getDestinationPosX();
-        array[7] = command.getDestinationPosY();
-        array[8] = command.getDestinationPosZ();
-        array[9] = command.getCommand();
-        OperateResult result = melsecMcNet.Write("D1001", array);
-
-        if (command.getAckFinish() == 0) {
-            short commandFinish = 1;
-            result = melsecMcNet.Write("D1010", commandFinish);
-        }
-
-        try {
-            // 鏃ュ織璁板綍
-            BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class);
-            BasCrnOpt basCrnOpt = new BasCrnOpt(
-                    command.getTaskNo().intValue(),    // 浠诲姟鍙�
-                    command.getCrnNo(),    // 鍫嗗灈鏈篬闈炵┖]
-                    new Date(),    // 涓嬪彂鏃堕棿
-                    command.getTaskModeType().toString(),    // 妯″紡
-                    command.getSourcePosX().intValue(),    // 婧愭帓
-                    command.getSourcePosY().intValue(),    // 婧愬垪
-                    command.getSourcePosZ().intValue(),    // 婧愬眰
-                    null,    // 婧愮珯
-                    command.getDestinationPosX().intValue(),    // 鐩爣鎺�
-                    command.getDestinationPosY().intValue(),    // 鐩爣鍒�
-                    command.getDestinationPosZ().intValue(),    // 鐩爣灞�
-                    null,    // 鐩爣绔�
-                    null,    // 鍝嶅簲缁撴灉
-                    null,    // 淇敼鏃堕棿
-                    null    // 淇敼浜哄憳
-            );
-            bean.save(basCrnOpt);
-        } catch (Exception ignore) {}
-
-        if (result != null && result.IsSuccess) {
-            News.info("MelsecCrn"+" - 7"+" - 鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
-            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
-            return true;
-        } else {
-            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-            News.error("MelsecCrn"+" - 8"+" - 鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-            return false;
-        }
-    }
-
-    @Override
-    public void close() {
-        melsecMcNet.ConnectClose();
-    }
-
-    /**
-     * 蹇冭烦
-     */
-    private void heartbeat(){
-        if (heartBeatVal >= 30000) {
-            heartBeatVal = -30000;
-        } else {
-            heartBeatVal =(short) (heartBeatVal+1);
-        }
-        OperateResult write = melsecMcNet.Write("D1011", heartBeatVal);
-//        OperateResult write1 = melsecMcNet.Write("D1001", (short) 0);
-//        OperateResult write2 = melsecMcNet.Write("D1002", (short) 0);
-//        OperateResult write3 = melsecMcNet.Write("D1003", (short) 0);
-//        OperateResult write4 = melsecMcNet.Write("D1004", (short) 0);
-//        OperateResult write5 = melsecMcNet.Write("D1005", (short) 0);
-//        OperateResult write6 = melsecMcNet.Write("D1006", (short) 0);
-//        OperateResult write7 = melsecMcNet.Write("D1007", (short) 0);
-//        OperateResult write8 = melsecMcNet.Write("D1008", (short) 0);
-//        OperateResult write9 = melsecMcNet.Write("D1009", (short) 0);
-//        OperateResult write10 = melsecMcNet.Write("D1010", (short) 0);
-        if (!write.IsSuccess) {
-            News.error("MelsecCrn"+" - 9"+" - 鍫嗗灈鏈簆lc蹇冭烦閫氳澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-        }
-    }
-
-
-    /******************************************************************************************/
-    /**************************************** 娴嬭瘯涓撶敤 *****************************************/
-    /*****************************************************************************************/
-    public static void main(String[] args) throws InterruptedException {
-        CrnSlave slave = new CrnSlave();
-        slave.setId(1);
-        slave.setIp("192.168.3.39");
-        slave.setPort(5015);
-        slave.setRack(0);
-        slave.setSlot(0);
-        MelsecCrnThread melsecCrnThread = new MelsecCrnThread(slave);
-        melsecCrnThread.connect();
-        melsecCrnThread.readStatus();
-        System.out.println(JSON.toJSONString(melsecCrnThread.crnProtocol));
-
-        // 1.鍏ュ簱 婧愬拰鐩爣閮藉彂
-//        CrnCommand command = new CrnCommand();
-//        command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
-//        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
-//        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-//        command.setTaskMode(CrnTaskModeType.PAKIN); // 浠诲姟妯″紡
-//        command.setSourcePosX((short) 1);     // 婧愬簱浣嶆帓
-//        command.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
-//        command.setSourcePosZ((short) 1);     // 婧愬簱浣嶅眰
-//        command.setDestinationPosX((short) 2);     // 鐩爣搴撲綅鎺�
-//        command.setDestinationPosY((short) 3);     // 鐩爣搴撲綅鍒�
-//        command.setDestinationPosZ((short) 1);     // 鐩爣搴撲綅灞�
-//        crnThread.write(command);
-
-        // 2.鍑哄簱 婧愬拰鐩爣閮藉彂
-//        CrnCommand command = new CrnCommand();
-//        command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
-//        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
-//        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-//        command.setTaskMode(CrnTaskModeType.PAKOUT); // 浠诲姟妯″紡
-//        command.setSourcePosX((short) 2);     // 婧愬簱浣嶆帓
-//        command.setSourcePosY((short) 4);     // 婧愬簱浣嶅垪
-//        command.setSourcePosZ((short) 3);     // 婧愬簱浣嶅眰
-//        command.setDestinationPosX((short) 1);     // 鐩爣搴撲綅鎺�
-//        command.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
-//        command.setDestinationPosZ((short) 1);     // 鐩爣搴撲綅灞�
-//        crnThread.write(command);
-
-
-//        // 3.搴撲綅绉昏浆   婧愬拰鐩爣閮藉彂 pass
-//        CrnCommand command = new CrnCommand();
-//        command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-//        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
-//        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-//        command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-//        command.setSourcePosX((short)2);     // 婧愬簱浣嶆帓
-//        command.setSourcePosY((short)2);     // 婧愬簱浣嶅垪
-//        command.setSourcePosZ((short)3);     // 婧愬簱浣嶅眰
-//        command.setDestinationPosX((short)2);     // 鐩爣搴撲綅鎺�
-//        command.setDestinationPosY((short)4);     // 鐩爣搴撲綅鍒�
-//        command.setDestinationPosZ((short)4);     // 鐩爣搴撲綅灞�
-//        crnThread.write(command);
-
-        // 4.绔欎綅绉昏浆   婧愬拰鐩爣閮藉彂
-//        CrnCommand command = new CrnCommand();
-//        command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-//        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
-//        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-//        command.setTaskMode(CrnTaskModeType.SITE_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-//        command.setSourcePosX((short)1);     // 婧愬簱浣嶆帓
-//        command.setSourcePosY((short)0);     // 婧愬簱浣嶅垪
-//        command.setSourcePosZ((short)1);     // 婧愬簱浣嶅眰
-//        command.setDestinationPosX((short)2);     // 鐩爣搴撲綅鎺�
-//        command.setDestinationPosY((short)0);     // 鐩爣搴撲綅鍒�
-//        command.setDestinationPosZ((short)1);     // 鐩爣搴撲綅灞�
-//        crnThread.write(command);
-
-//        // 5.鍥炲師鐐�  涓嶇敤鍙�   pass
-//        CrnCommand command = new CrnCommand();
-//        command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
-//        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
-//        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-//        command.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡
-//        command.setSourcePosX((short) 0);     // 婧愬簱浣嶆帓
-//        command.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
-//        command.setSourcePosZ((short) 0);     // 婧愬簱浣嶅眰
-//        command.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
-//        command.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
-//        command.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
-//        crnThread.write(command);
-
-
-        // 鍙湁鍑虹幇鎸囧畾寮傚父鎵嶈繘琛屽浣�
-//        if (crnThread.crnProtocol.getCrnError2().leftTakeNoneErr
-//                || crnThread.crnProtocol.getCrnError2().rightTakeNoneErr
-//                || crnThread.crnProtocol.getCrnError2().leftPutLoadErr
-//                || crnThread.crnProtocol.getCrnError2().rightPutLoadErr) {
-//            CrnCommand command = new CrnCommand();
-//            command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
-//            command.setAckFinish((short) 1);  // 浠诲姟瀹屾垚纭浣�
-//            command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡
-//            Thread.sleep(3000L);
-//            crnThread.write(command);
+//    }
+//
+//    /**
+//     * 鍒濆鍖栧爢鍨涙満鐘舵��
+//     */
+//    private void initCrn() {
+//        if (null == crnProtocol) {
+//            crnProtocol = new CrnProtocol();
 //        }
-
-    }
-
-    @Override
-    public void setResetFlagTwo(boolean flag) {
-
-    }
-}
+//        crnProtocol.setMode((short) -1);
+////        crnProtocol.setTaskNo((short)0);
+//        crnProtocol.setStatus((short)-1);
+//        crnProtocol.setBay((short)0);
+//        crnProtocol.setLevel((short)0);
+//        crnProtocol.setForkPos((short) -1);
+//        crnProtocol.setLiftPos((short) -1);
+//        crnProtocol.setWalkPos((short)0);
+//        crnProtocol.setLoaded((short)0);
+//        crnProtocol.setAlarm((short)0);
+//        crnProtocol.setxSpeed((short)0);
+//        crnProtocol.setySpeed((short)0);
+//        crnProtocol.setzSpeed((short)0);
+//        crnProtocol.setxDistance((short)0);
+//        crnProtocol.setyDistance((short)0);
+//        crnProtocol.setxDuration((short)0);
+//        crnProtocol.setyDuration((short)0);
+//    }
+//
+//    @Override
+//    public boolean connect() {
+//        boolean result = false;
+//        melsecMcNet = new MelsecMcNet(slave.getIp(), slave.getPort());
+//        OperateResult connect = melsecMcNet.ConnectServer();
+//        if(connect.IsSuccess){
+//            result = true;
+//            OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戝爢鍨涙満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+//            News.info("MelsecCrn"+" - 1"+" - 鍫嗗灈鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+//        } else {
+//            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝爢鍨涙満plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] ", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+//            News.error("MelsecCrn"+" - 2"+" - 鍫嗗灈鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+//            initCrn();
+//        }
+////        melsecMcNet.ConnectClose();
+//        return result;
+//    }
+//
+//    /**
+//     * 璇诲彇鐘舵��
+//     */
+//    private void readStatus(){
+//        try {
+////            if (this.slave.getId() == 1 && flag1.equals(0)) {
+////                Thread.sleep(3000);
+////                flag1=1;
+////                System.out.println("===");
+////            }
+//            OperateResultExOne<byte[]> result = melsecMcNet.Read("D1035", (short) 56);
+//            if (result.IsSuccess) {
+//                if (null == crnProtocol) {
+//                    crnProtocol = new CrnProtocol();
+//                    crnProtocol.setCrnNo(slave.getId());
+//                }
+//                crnProtocol.setMode(melsecMcNet.getByteTransform().TransInt16(result.Content, 0));
+//                crnProtocol.setTaskNo(melsecMcNet.getByteTransform().TransInt16(result.Content, 2));
+//                crnProtocol.setStatus(melsecMcNet.getByteTransform().TransInt16(result.Content, 4));
+//                crnProtocol.setBay(melsecMcNet.getByteTransform().TransInt16(result.Content, 6));
+//                crnProtocol.setLevel(melsecMcNet.getByteTransform().TransInt16(result.Content, 8));
+//                crnProtocol.setForkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 10));
+//                crnProtocol.setLiftPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 12));
+//                crnProtocol.setWalkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 14));
+//                crnProtocol.setLoaded(melsecMcNet.getByteTransform().TransInt16(result.Content, 16));
+//                crnProtocol.setAlarm(melsecMcNet.getByteTransform().TransInt16(result.Content, 18));
+//                crnProtocol.setTemp1(melsecMcNet.getByteTransform().TransInt16(result.Content, 20));
+//                crnProtocol.setTemp2(melsecMcNet.getByteTransform().TransInt16(result.Content, 22));
+//                crnProtocol.setTemp3(melsecMcNet.getByteTransform().TransInt16(result.Content, 24));
+//                crnProtocol.setTemp4(melsecMcNet.getByteTransform().TransInt16(result.Content, 26));
+//                crnProtocol.setxSpeed(melsecMcNet.getByteTransform().TransInt16(result.Content, 28));
+//                crnProtocol.setySpeed(melsecMcNet.getByteTransform().TransInt16(result.Content, 32));
+//                crnProtocol.setzSpeed(melsecMcNet.getByteTransform().TransInt16(result.Content, 36));
+//                crnProtocol.setxDistance(melsecMcNet.getByteTransform().TransInt16(result.Content, 40));
+//                crnProtocol.setyDistance(melsecMcNet.getByteTransform().TransInt16(result.Content, 44));
+//                crnProtocol.setxDuration(melsecMcNet.getByteTransform().TransInt16(result.Content, 48));
+//                crnProtocol.setyDuration(melsecMcNet.getByteTransform().TransInt16(result.Content, 52));
+//
+//                OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+//
+//                // 澶嶄綅淇″彿
+//                if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING_ONE)) {
+//                    News.error("MelsecCrn"+" - 3"+" ---------绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}][宸ヤ綔鍙凤細{}]==>> 鐘舵�佷负90锛岀瓑寰呯‘璁わ紒锛�",slave.getId(),crnProtocol.getTaskNo());
+//                    if (resetFlag) {
+//                        if(crnProtocol.getTaskNo()==9999){
+//                            backHpFlag = false;
+//                        }
+//                        CrnCommand crnCommand = new CrnCommand();
+//                        crnCommand.setAckFinish((short)1);
+//                        if (write(crnCommand)) {
+//                            resetFlag = false;
+//                        }
+//                    }
+//                }
+//
+//                // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+//                BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
+//                BasCrnp basCrnp = new BasCrnp();
+//                basCrnp.setCrnErr(crnProtocol.getAlarm()==null?0:crnProtocol.getAlarm().longValue());
+//                basCrnp.setCrnNo(slave.getId());
+//                basCrnp.setCrnSts((int)crnProtocol.getMode());
+//                if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){
+//                    News.error("MelsecCrn"+" - 4"+" - 鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+//                }
+//
+//            } else {
+//                OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆憑1}鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐�",DateUtils.convert(new Date()), slave.getId()));
+//                throw new CoolException(MessageFormat.format( "鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort()));
+//            }
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+//            News.error("MelsecCrn"+" - 5"+" - 璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+//            initCrn();
+//        }
+//
+//    }
+//
+//    /**
+//     * 鍐欏叆鏁版嵁
+//     */
+//    private boolean write(CrnCommand command){
+//        if (null == command) {
+//            News.error("MelsecCrn"+" - 6"+" - 鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
+//            return false;
+//        }
+//
+////        OperateResult result = null;
+////        try{
+////            Integer exeCount=0;
+////            do{
+////                command.setCrnNo(slave.getId());
+////                short[] array = new short[10];
+////                array[0] = command.getAckFinish();
+////                array[1] = command.getTaskNo();
+////                array[2] = command.getTaskMode();
+////                array[3] = command.getSourcePosX();
+////                array[4] = command.getSourcePosY();
+////                array[5] = command.getSourcePosZ();
+////                array[6] = command.getDestinationPosX();
+////                array[7] = command.getDestinationPosY();
+////                array[8] = command.getDestinationPosZ();
+////                array[9] = command.getCommand();
+////                result = melsecMcNet.Write("D0", array);
+////                if(result.IsSuccess) {
+////                    if (command.getAckFinish() == 0) {
+////                        short commandFinish = 1;
+////                        result = melsecMcNet.Write("D9", commandFinish);
+////                        if(result.IsSuccess){
+////                            //鍐欎换鍔$‘璁よ繑鍥炴垚鍔熷悗锛屾煡璇㈢‘璁や竴娆�
+////                            Thread.sleep(200);
+////                            OperateResultExOne<byte[]> result1 = melsecMcNet.Read("D9", (short)2);
+////                            if(result1.IsSuccess){
+////                                short commandVal = melsecMcNet.getByteTransform().TransInt16(result1.Content,2);
+////                                if(commandVal==1){
+////                                    break;
+////                                } else {
+////                                    exeCount++;
+////                                }
+////                            } else{
+////                                exeCount++;
+////                            }
+////                        }else{
+////                            exeCount++;
+////                        }
+////                    }
+////                }else{
+////                    exeCount++;
+////                }
+////                Thread.sleep(200);
+////            }while(exeCount>3);
+////        }catch (Exception e){
+////
+////        }
+//
+//        command.setCrnNo(slave.getId());
+//        short[] array = new short[10];
+//        array[0] = command.getAckFinish();
+//        array[1] = command.getTaskNo();
+//        array[2] = command.getTaskMode();
+//        array[3] = command.getSourcePosX();
+//        array[4] = command.getSourcePosY();
+//        array[5] = command.getSourcePosZ();
+//        array[6] = command.getDestinationPosX();
+//        array[7] = command.getDestinationPosY();
+//        array[8] = command.getDestinationPosZ();
+//        array[9] = command.getCommand();
+//        OperateResult result = melsecMcNet.Write("D1001", array);
+//
+//        if (command.getAckFinish() == 0) {
+//            short commandFinish = 1;
+//            result = melsecMcNet.Write("D1010", commandFinish);
+//        }
+//
+//        try {
+//            // 鏃ュ織璁板綍
+//            BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class);
+//            BasCrnOpt basCrnOpt = new BasCrnOpt(
+//                    command.getTaskNo().intValue(),    // 浠诲姟鍙�
+//                    command.getCrnNo(),    // 鍫嗗灈鏈篬闈炵┖]
+//                    new Date(),    // 涓嬪彂鏃堕棿
+//                    command.getTaskModeType().toString(),    // 妯″紡
+//                    command.getSourcePosX().intValue(),    // 婧愭帓
+//                    command.getSourcePosY().intValue(),    // 婧愬垪
+//                    command.getSourcePosZ().intValue(),    // 婧愬眰
+//                    null,    // 婧愮珯
+//                    command.getDestinationPosX().intValue(),    // 鐩爣鎺�
+//                    command.getDestinationPosY().intValue(),    // 鐩爣鍒�
+//                    command.getDestinationPosZ().intValue(),    // 鐩爣灞�
+//                    null,    // 鐩爣绔�
+//                    null,    // 鍝嶅簲缁撴灉
+//                    null,    // 淇敼鏃堕棿
+//                    null    // 淇敼浜哄憳
+//            );
+//            bean.save(basCrnOpt);
+//        } catch (Exception ignore) {}
+//
+//        if (result != null && result.IsSuccess) {
+//            News.info("MelsecCrn"+" - 7"+" - 鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
+//            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
+//            return true;
+//        } else {
+//            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+//            News.error("MelsecCrn"+" - 8"+" - 鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+//            return false;
+//        }
+//    }
+//
+//    @Override
+//    public void close() {
+//        melsecMcNet.ConnectClose();
+//    }
+//
+//    /**
+//     * 蹇冭烦
+//     */
+//    private void heartbeat(){
+//        if (heartBeatVal >= 30000) {
+//            heartBeatVal = -30000;
+//        } else {
+//            heartBeatVal =(short) (heartBeatVal+1);
+//        }
+//        OperateResult write = melsecMcNet.Write("D1011", heartBeatVal);
+////        OperateResult write1 = melsecMcNet.Write("D1001", (short) 0);
+////        OperateResult write2 = melsecMcNet.Write("D1002", (short) 0);
+////        OperateResult write3 = melsecMcNet.Write("D1003", (short) 0);
+////        OperateResult write4 = melsecMcNet.Write("D1004", (short) 0);
+////        OperateResult write5 = melsecMcNet.Write("D1005", (short) 0);
+////        OperateResult write6 = melsecMcNet.Write("D1006", (short) 0);
+////        OperateResult write7 = melsecMcNet.Write("D1007", (short) 0);
+////        OperateResult write8 = melsecMcNet.Write("D1008", (short) 0);
+////        OperateResult write9 = melsecMcNet.Write("D1009", (short) 0);
+////        OperateResult write10 = melsecMcNet.Write("D1010", (short) 0);
+//        if (!write.IsSuccess) {
+//            News.error("MelsecCrn"+" - 9"+" - 鍫嗗灈鏈簆lc蹇冭烦閫氳澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+//        }
+//    }
+//
+//
+//    /******************************************************************************************/
+//    /**************************************** 娴嬭瘯涓撶敤 *****************************************/
+//    /*****************************************************************************************/
+//    public static void main(String[] args) throws InterruptedException {
+//        CrnSlave slave = new CrnSlave();
+//        slave.setId(1);
+//        slave.setIp("192.168.3.39");
+//        slave.setPort(5015);
+//        slave.setRack(0);
+//        slave.setSlot(0);
+//        MelsecCrnThread melsecCrnThread = new MelsecCrnThread(slave);
+//        melsecCrnThread.connect();
+//        melsecCrnThread.readStatus();
+//        System.out.println(JSON.toJSONString(melsecCrnThread.crnProtocol));
+//
+//        // 1.鍏ュ簱 婧愬拰鐩爣閮藉彂
+////        CrnCommand command = new CrnCommand();
+////        command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
+////        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
+////        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+////        command.setTaskMode(CrnTaskModeType.PAKIN); // 浠诲姟妯″紡
+////        command.setSourcePosX((short) 1);     // 婧愬簱浣嶆帓
+////        command.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
+////        command.setSourcePosZ((short) 1);     // 婧愬簱浣嶅眰
+////        command.setDestinationPosX((short) 2);     // 鐩爣搴撲綅鎺�
+////        command.setDestinationPosY((short) 3);     // 鐩爣搴撲綅鍒�
+////        command.setDestinationPosZ((short) 1);     // 鐩爣搴撲綅灞�
+////        crnThread.write(command);
+//
+//        // 2.鍑哄簱 婧愬拰鐩爣閮藉彂
+////        CrnCommand command = new CrnCommand();
+////        command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
+////        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
+////        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+////        command.setTaskMode(CrnTaskModeType.PAKOUT); // 浠诲姟妯″紡
+////        command.setSourcePosX((short) 2);     // 婧愬簱浣嶆帓
+////        command.setSourcePosY((short) 4);     // 婧愬簱浣嶅垪
+////        command.setSourcePosZ((short) 3);     // 婧愬簱浣嶅眰
+////        command.setDestinationPosX((short) 1);     // 鐩爣搴撲綅鎺�
+////        command.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
+////        command.setDestinationPosZ((short) 1);     // 鐩爣搴撲綅灞�
+////        crnThread.write(command);
+//
+//
+////        // 3.搴撲綅绉昏浆   婧愬拰鐩爣閮藉彂 pass
+////        CrnCommand command = new CrnCommand();
+////        command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+////        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
+////        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+////        command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+////        command.setSourcePosX((short)2);     // 婧愬簱浣嶆帓
+////        command.setSourcePosY((short)2);     // 婧愬簱浣嶅垪
+////        command.setSourcePosZ((short)3);     // 婧愬簱浣嶅眰
+////        command.setDestinationPosX((short)2);     // 鐩爣搴撲綅鎺�
+////        command.setDestinationPosY((short)4);     // 鐩爣搴撲綅鍒�
+////        command.setDestinationPosZ((short)4);     // 鐩爣搴撲綅灞�
+////        crnThread.write(command);
+//
+//        // 4.绔欎綅绉昏浆   婧愬拰鐩爣閮藉彂
+////        CrnCommand command = new CrnCommand();
+////        command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+////        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
+////        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+////        command.setTaskMode(CrnTaskModeType.SITE_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+////        command.setSourcePosX((short)1);     // 婧愬簱浣嶆帓
+////        command.setSourcePosY((short)0);     // 婧愬簱浣嶅垪
+////        command.setSourcePosZ((short)1);     // 婧愬簱浣嶅眰
+////        command.setDestinationPosX((short)2);     // 鐩爣搴撲綅鎺�
+////        command.setDestinationPosY((short)0);     // 鐩爣搴撲綅鍒�
+////        command.setDestinationPosZ((short)1);     // 鐩爣搴撲綅灞�
+////        crnThread.write(command);
+//
+////        // 5.鍥炲師鐐�  涓嶇敤鍙�   pass
+////        CrnCommand command = new CrnCommand();
+////        command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
+////        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
+////        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+////        command.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡
+////        command.setSourcePosX((short) 0);     // 婧愬簱浣嶆帓
+////        command.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
+////        command.setSourcePosZ((short) 0);     // 婧愬簱浣嶅眰
+////        command.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
+////        command.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
+////        command.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
+////        crnThread.write(command);
+//
+//
+//        // 鍙湁鍑虹幇鎸囧畾寮傚父鎵嶈繘琛屽浣�
+////        if (crnThread.crnProtocol.getCrnError2().leftTakeNoneErr
+////                || crnThread.crnProtocol.getCrnError2().rightTakeNoneErr
+////                || crnThread.crnProtocol.getCrnError2().leftPutLoadErr
+////                || crnThread.crnProtocol.getCrnError2().rightPutLoadErr) {
+////            CrnCommand command = new CrnCommand();
+////            command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
+////            command.setAckFinish((short) 1);  // 浠诲姟瀹屾垚纭浣�
+////            command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡
+////            Thread.sleep(3000L);
+////            crnThread.write(command);
+////        }
+//
+//    }
+//
+//    @Override
+//    public void setResetFlagTwo(boolean flag) {
+//
+//    }
+//}

--
Gitblit v1.9.1