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(){
|
|
}
|
|
}
|