#
luxiaotao1123
2020-08-11 cd93b3f1992cad3f2940e201fc7d3236fac9d7c0
src/main/java/com/zy/core/thread/DevpThread.java
@@ -1,15 +1,20 @@
package com.zy.core.thread;
import com.zy.common.HslCommunication.Core.Types.OperateResult;
import com.zy.common.HslCommunication.Profinet.Siemens.SiemensPLCS;
import com.zy.common.HslCommunication.Profinet.Siemens.SiemensS7Net;
import HslCommunication.Core.Types.OperateResult;
import HslCommunication.Core.Types.OperateResultExOne;
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.zy.core.Slave;
import com.zy.core.ThreadHandler;
import com.zy.core.cache.MessageQueue;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.Task;
import com.zy.core.model.protocol.StaProtocol;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
 * 输送线线程
@@ -21,6 +26,7 @@
    private Slave slave;
    private SiemensS7Net siemensS7Net;
    private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
    public DevpThread(Slave slave) {
        this.slave = slave;
@@ -32,9 +38,27 @@
    public void run() {
        while (true) {
            try {
                int step = 1;
                Task task = MessageQueue.poll(SlaveType.Devp, slave.getId());
                if (task != null) {
                    System.out.println("任务"+task.getId());
                    step = task.getStep();
                }
                switch (step) {
                    // 读数据
                    case 1:
                        readWorkNo();   // 读取工作号
                        readStaDest();  // 读取目标站
                        readStatus();   // 读取状态
                        readError();    // 读取异常信息
                        break;
                    case 2:
                        break;
                    case 3:
                        break;
                    case 4:
                        break;
                    default:
                        break;
                }
                Thread.sleep(3000);
            } catch (Exception e) {
@@ -48,6 +72,8 @@
    public boolean connect() {
        boolean result = false;
        siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp());
        siemensS7Net.setRack((byte) 0);
        siemensS7Net.setSlot((byte) 1);
        OperateResult connect = siemensS7Net.ConnectServer();
        if(connect.IsSuccess){
            result = true;
@@ -59,6 +85,61 @@
        return result;
    }
    /**
     * 读取工作号
     */
    private void readWorkNo(){
        OperateResultExOne<int[]> read = siemensS7Net.ReadInt32("DB100", (short) 8);
        if (read.IsSuccess) {
            int staNo1 = read.Content[0];
            int staNo2 = read.Content[1];
            int staNo3 = read.Content[2];
            int staNo4 = read.Content[3];
            int staNo5 = read.Content[4];
            int staNo6 = read.Content[5];
            int staNo7 = read.Content[6];
            int staNo8 = read.Content[7];
        }
    }
    /**
     * 读取目标站
     */
    private void readStaDest(){
        OperateResultExOne<byte[]> read = siemensS7Net.Read("DB101", (short) 8);
        if (read.IsSuccess) {
            int staNo1 = siemensS7Net.getByteTransform().TransInt32(read.Content, 0);
            int staNo2 = siemensS7Net.getByteTransform().TransInt32(read.Content, 4);
            int staNo3 = siemensS7Net.getByteTransform().TransInt32(read.Content, 8);
            int staNo4 = siemensS7Net.getByteTransform().TransInt32(read.Content, 12);
            int staNo5 = siemensS7Net.getByteTransform().TransInt32(read.Content, 16);
            int staNo6 = siemensS7Net.getByteTransform().TransInt32(read.Content, 20);
            int staNo7 = siemensS7Net.getByteTransform().TransInt32(read.Content, 24);
            int staNo8 = siemensS7Net.getByteTransform().TransInt32(read.Content, 28);
        }
    }
    /**
     * 读取状态
     */
    private void readStatus(){
    }
    /**
     * 读取异常信息
     */
    private void readError(){
    }
    private void writeWorkNo(){
    }
    @Override
    public void close() {