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