机械臂控制器中Background task通过UDP向外部程序每隔50ms循环发送当前各轴位置:
1 package sampleBackgroundTask; 2 3 import javax.inject.Inject; 4 import java.util.concurrent.TimeUnit; 5 import com.kuka.roboticsAPI.applicationModel.tasks.CycleBehavior; 6 import com.kuka.roboticsAPI.applicationModel.tasks.RoboticsAPICyclicBackgroundTask; 7 import com.kuka.roboticsAPI.deviceModel.JointPosition; 8 import com.kuka.roboticsAPI.deviceModel.LBR; 9 import java.net.*; 10 import java.io.IOException; 11 12 13 public class BackgroundTask extends RoboticsAPICyclicBackgroundTask { 14 @Inject 15 private LBR robot; 16 17 byte[] posArr; 18 int port = 30003; 19 InetAddress IP = null; 20 DatagramSocket datagramSocket = null; 21 DatagramPacket packet; 22 23 @Override 24 public void initialize() { 25 // initialize your task here 26 initializeCyclic(2000, 50, TimeUnit.MILLISECONDS, CycleBehavior.BestEffort); 27 28 try { 29 datagramSocket = new DatagramSocket(); 30 IP = InetAddress.getByName("192.168.1.50"); // get PC's address 31 } 32 catch (SocketException e) { e.printStackTrace(); } 33 catch (UnknownHostException e) { e.printStackTrace(); } 34 } 35 36 @Override 37 public void runCyclic() { 38 // your task execution starts here 39 JointPosition jPos = robot.getCurrentJointPosition(); 40 posArr = jPos.toString().getBytes(); 41 packet = new DatagramPacket(posArr, posArr.length, IP, port); 42 try { 43 datagramSocket.send(packet); 44 } 45 catch (IOException e) 46 { e.printStackTrace(); } 47 } 48 }