PosThread.java 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package at.acdp.urweb;
  2. import at.acdp.urweb.fhpp.IFHMaster;
  3. import at.acdp.urweb.fhpp.Status;
  4. import at.acdp.urweb.rtde.RTDEClient;
  5. import at.acdp.urweb.rtde.packets.RtdeInDataPackage;
  6. import at.acdp.urweb.rtde.packets.RtdeSetupInputs;
  7. import org.slf4j.LoggerFactory;
  8. import java.io.IOException;
  9. import java.util.concurrent.CompletableFuture;
  10. public class PosThread implements Runnable{
  11. private final static org.slf4j.Logger logger = LoggerFactory.getLogger(PosThread.class);
  12. private final RTDEClient rtde;
  13. private final IFHMaster fhm;
  14. private Thread thread;
  15. private volatile boolean _running=true;
  16. public static Status lastStatus;
  17. public PosThread(RTDEClient r, IFHMaster fhm) {
  18. this.rtde=r;
  19. this.fhm=fhm;
  20. }
  21. public void start() {
  22. thread=new Thread(this);
  23. thread.start();
  24. }
  25. @Override
  26. public void run() {
  27. try {
  28. var si=new RtdeSetupInputs()
  29. .addVariable("input_int_register_24");
  30. rtde.request(si);
  31. while(_running) {
  32. CompletableFuture<Status> s = fhm.readStatus();
  33. lastStatus=s.join();
  34. var pos=new RtdeInDataPackage(si);
  35. pos.put("input_int_register_24", String.valueOf(lastStatus.istPosition));
  36. rtde.request(pos);
  37. Thread.sleep(100);
  38. }
  39. } catch (IOException e) {
  40. e.printStackTrace();
  41. } catch (InterruptedException e) {
  42. e.printStackTrace();
  43. }
  44. }
  45. }