From b2658337c8b37a745415e672074c86f43ca09d5e Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期二, 11 八月 2020 13:39:32 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/enums/CrnTaskModeType.java    |   42 +++++++++++++++++++++
 src/main/java/com/zy/core/model/command/CrnCommand.java |   13 ++++++
 src/main/java/com/zy/core/thread/CrnThread.java         |   29 ++++++++++++--
 src/main/java/com/zy/core/model/Task.java               |    6 +-
 src/main/resources/application.yml                      |    2 
 5 files changed, 84 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/zy/core/enums/CrnTaskModeType.java b/src/main/java/com/zy/core/enums/CrnTaskModeType.java
new file mode 100644
index 0000000..c6fca8a
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/CrnTaskModeType.java
@@ -0,0 +1,42 @@
+package com.zy.core.enums;
+
+public enum CrnTaskModeType {
+
+    NONE(0),    // 鏃�
+    PAKIN(1),    // 鍏ュ簱
+    PAKOUT(2),    // 鍑哄簱
+    LOC_MOVE(3),    // 搴撲綅绉昏浆
+    SITE_MOVE(4),    // 绔欎綅绉昏浆
+    ORIGIN(5),    // 鍥炲師鐐�
+    ;
+
+    public Integer id;
+    CrnTaskModeType(Integer id) {
+        this.id = id;
+    }
+
+    public static CrnTaskModeType get(Short id) {
+        if (null == id) {
+            return null;
+        }
+        for (CrnTaskModeType type : CrnTaskModeType.values()) {
+            if (type.id.equals(id.intValue())) {
+                return type;
+            }
+        }
+        return null;
+    }
+
+    public static CrnTaskModeType get(CrnTaskModeType type) {
+        if (null == type) {
+            return null;
+        }
+        for (CrnTaskModeType crnTaskModeType : CrnTaskModeType.values()) {
+            if (crnTaskModeType == type) {
+                return crnTaskModeType;
+            }
+        }
+        return null;
+    }
+
+}
diff --git a/src/main/java/com/zy/core/model/Task.java b/src/main/java/com/zy/core/model/Task.java
index c337aed..c3cf784 100644
--- a/src/main/java/com/zy/core/model/Task.java
+++ b/src/main/java/com/zy/core/model/Task.java
@@ -6,16 +6,16 @@
  * Created by vincent on 2020/8/5
  */
 @Data
-public class Task<T> {
+public class Task {
 
     private Integer step;
 
-    private T data;
+    private Object data;
 
     public Task() {
     }
 
-    public Task(Integer step, T data) {
+    public Task(Integer step, Object data) {
         this.step = step;
         this.data = data;
     }
diff --git a/src/main/java/com/zy/core/model/command/CrnCommand.java b/src/main/java/com/zy/core/model/command/CrnCommand.java
index 3b89cb4..dc97b19 100644
--- a/src/main/java/com/zy/core/model/command/CrnCommand.java
+++ b/src/main/java/com/zy/core/model/command/CrnCommand.java
@@ -1,5 +1,6 @@
 package com.zy.core.model.command;
 
+import com.zy.core.enums.CrnTaskModeType;
 import lombok.Data;
 
 /**
@@ -31,6 +32,8 @@
      */
     private Short taskMode;
 
+    private CrnTaskModeType taskModeType;
+
     // 婧愪綅缃帓鍙�
     private Short sourcePosX;
 
@@ -49,4 +52,14 @@
     // 鐩爣浣嶇疆灞傚彿
     private Short destinationPosZ;
 
+    public void setTaskMode(Short taskMode){
+        this.taskMode = taskMode;
+        this.taskModeType = CrnTaskModeType.get(taskModeType);
+    }
+
+    public void setTaskMode(CrnTaskModeType type) {
+        this.taskModeType = type;
+        this.taskMode = CrnTaskModeType.get(type).id.shortValue();
+    }
+
 }
diff --git a/src/main/java/com/zy/core/thread/CrnThread.java b/src/main/java/com/zy/core/thread/CrnThread.java
index 6545d5b..4839c5b 100644
--- a/src/main/java/com/zy/core/thread/CrnThread.java
+++ b/src/main/java/com/zy/core/thread/CrnThread.java
@@ -44,10 +44,11 @@
                 switch (step) {
                     // 璇绘暟鎹�
                     case 1:
-                        readStatus();   // 璇诲彇鐘舵��
+                        readStatus();
                         break;
+                    // 鍐欏叆鏁版嵁
                     case 2:
-                        CrnCommand command = (CrnCommand) task.getData();
+                        write((CrnCommand) task.getData());
                         break;
                     case 3:
                         break;
@@ -86,7 +87,7 @@
      * 璇诲彇鐘舵��
      */
     private void readStatus(){
-        OperateResultExOne<byte[]> result = siemensNet.Read("DB8.18", (short) 10);
+        OperateResultExOne<byte[]> result = siemensNet.Read("DB8.18", (short) 46);
         if (result.IsSuccess) {
             if (null == crnProtocol) {
                 crnProtocol = new CrnProtocol();
@@ -120,7 +121,27 @@
      * 鍐欏叆鏁版嵁
      */
     private void write(CrnCommand command){
-
+        if (null == command) {
+            log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
+            return;
+        }
+        command.setCrnNo(slave.getId());
+        short[] array = new short[9];
+        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();
+        OperateResult result = siemensNet.Write("DB8.0", array);
+        if (result.IsSuccess) {
+            readStatus();
+        } else {
+            log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+        }
     }
 
     @Override
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 85a7adb..61553ea 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -38,7 +38,7 @@
   # 鍫嗗灈鏈�
   crn[0]:
     id: 1
-    ip: 192.168.6.1
+    ip: 192.168.6.10
     port: 102
     rack: 0
     slot: 2

--
Gitblit v1.9.1