PosThread.java 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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 PosThread(RTDEClient r, IFHMaster fhm) {
  17. this.rtde=r;
  18. this.fhm=fhm;
  19. }
  20. public void start() {
  21. thread=new Thread(this);
  22. thread.start();
  23. }
  24. @Override
  25. public void run() {
  26. try {
  27. var si=new RtdeSetupInputs()
  28. .addVariable("input_int_register_24");
  29. rtde.request(si);
  30. while(_running) {
  31. CompletableFuture<Status> s = fhm.readStatus();
  32. Status ss=s.join();
  33. var pos=new RtdeInDataPackage(si);
  34. pos.put("input_int_register_24", String.valueOf(ss.istPosition));
  35. rtde.request(pos);
  36. Thread.sleep(100);
  37. }
  38. } catch (IOException e) {
  39. e.printStackTrace();
  40. } catch (InterruptedException e) {
  41. e.printStackTrace();
  42. }
  43. }
  44. }