#
lty
2025-09-26 700538ded8e952f9e3ee7450e24f7830a7c012df
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package com.zy.core.thread;
 
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.zy.core.ThreadHandler;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
 
/**
 * RoboticArm 机械手线程
 * Created by Monkey D. Luffy on 2025/8/22
 */
@Data
@Slf4j
public class RoboticArmThread implements Runnable, ThreadHandler {
 
    private SiemensS7Net siemensS7Net;
//    private RoboticArmSlave slave;
//    private RoboticArmProtocol roboticArmProtocol;
    private short heartBeatVal = 1;
    private boolean connectRoboticArm = false;
 
 
//    public RoboticArmThread(RoboticArmSlave slave) {
//        this.slave = slave;
//    }
 
    @Override
    @SuppressWarnings("InfiniteLoopStatement")
    public void run() {
 
        connectRoboticArm = this.connect();
        while(!connectRoboticArm){
            try {
                connectRoboticArm = this.connect();
                Thread.sleep(100);
            } catch (Exception e){
 
            }
        }
 
        // 启动线程自动重连
        new Thread(this::roboticArmConnect).start();
 
        // 启动读数据线程
//        new Thread(this::readStatusRoboticArm).start();
 
        // 启动任务下发线程
        new Thread(this::taskIssued).start();
 
 
    }
 
    /**
     * 任务下发
     */
    private void taskIssued() {
        while (true) {
            try {
//                int step = 1;
//                Task task = MessageQueue.poll(SlaveType.RoboticArm, slave.getId());
//                if (task != null) {
//                    step = task.getStep();
//                }
//                switch (step) {
//                    case 1:
//                        break;
//                    case 2:
////                        write((RoboticArmCommand) task.getData());
//                        break;
//                    default:
//                        break;
//                }
                // 心跳
//                heartbeat();
                Thread.sleep(200);
            } catch (Exception e) {
                log.error("RoboticArm写线程异常"+e.getMessage());
            }
 
        }
    }
 
    private void roboticArmConnect() {
        while (true) {
            try {
                Thread.sleep(1000);
                if(!connectRoboticArm){
                    try {
                        connectRoboticArm = this.connect();
                        Thread.sleep(100);
                    } catch (Exception e){
 
                    }
                }
            } catch (Exception e) {
                initSte();
            }
        }
    }
 
    private void readStatusRoboticArm() {
        while (true) {
            try {
                Thread.sleep(50);
 
                readStatus();
 
            } catch (Exception e) {
                initSte();
            }
 
        }
 
    }
 
    /**
     * 初始化状态
     */
    private void initSte() {
 
    }
 
    @Override
    public boolean connect() {
        boolean result = false;
 
 
        return result;
    }
 
    /**
     * 读取状态
     */
    private void readStatus(){
 
    }
//
//    /**
//     * 写入数据
//     */
//    private synchronized boolean write(String command){
//
//    }
 
    @Override
    public void close() {
 
    }
 
    /**
     * 心跳
     */
    private void heartbeat(){
 
    }
 
}