XRServer.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package at.acdp.urweb.web;
  2. import at.acdp.urweb.Main;
  3. import at.acdp.urweb.fhpp.Status;
  4. import com.nmote.xr.XRMethod;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import java.util.concurrent.ExecutionException;
  8. public class XRServer {
  9. private final static Logger logger = LoggerFactory.getLogger(XRServer.class);
  10. @XRMethod(value = "example.helloWorld", help = "Returns 'Helo ' + argument")
  11. public static String hello(Object s) {
  12. return "Hello '" + s + "'";
  13. }
  14. @XRMethod(value = "ref2", help = "ref")
  15. public static String ref(String a, String b) {
  16. return "ref";
  17. }
  18. @XRMethod(value = "rel", help = "rel")
  19. public static boolean rel(String pos, String speedS) {
  20. try {
  21. logger.info("rel {}", pos);
  22. int curPos=Main.fhm.readStatus().get().istPosition;
  23. int relPos=Integer.parseInt(pos);
  24. int targetPos=curPos+relPos;
  25. int speed=Integer.parseInt(speedS);
  26. logger.info("Relative by {} from {} to {} speed {}", relPos, curPos, targetPos, speed);
  27. Main.fhm.bereitschaft();
  28. if(!Main.fhm.readStatus().get().enabled) {
  29. logger.info("Controller not enabled");
  30. return false;
  31. }
  32. Main.fhm.direktAuftrag(relPos, speed,0, true);
  33. Thread.sleep(10);
  34. Main.fhm.direktAuftrag(relPos, speed, 1, true);
  35. Thread.sleep(10);
  36. while(true) {
  37. boolean reached=checkPos(targetPos);
  38. if(reached) {
  39. logger.info("Reached {}", targetPos);
  40. return true;
  41. }
  42. try {
  43. Thread.sleep(100);
  44. } catch (InterruptedException e) {
  45. e.printStackTrace();
  46. }
  47. }
  48. } catch (ExecutionException|InterruptedException e) {
  49. logger.warn("abs failed", e);
  50. }
  51. return false;
  52. }
  53. @XRMethod(value = "abs", help = "abs")
  54. public boolean abs(String pos, String speedS) {
  55. try {
  56. int targetPos=Integer.parseInt(pos);
  57. int speed=Integer.parseInt(speedS);
  58. logger.info("Absolute to {} speed {}", pos, speed);
  59. Main.fhm.bereitschaft();
  60. if(!Main.fhm.readStatus().get().enabled) {
  61. logger.info("Controller not enabled");
  62. return false;
  63. }
  64. Main.fhm.direktAuftrag(targetPos, speed, 0, false);
  65. Thread.sleep(100);
  66. Main.fhm.direktAuftrag(targetPos, speed, 1, false);
  67. while(true) {
  68. boolean reached=checkPos(targetPos);
  69. if(reached) {
  70. logger.info("Reached {}", targetPos);
  71. return true;
  72. }
  73. try {
  74. Thread.sleep(100);
  75. } catch (InterruptedException e) {
  76. e.printStackTrace();
  77. }
  78. }
  79. } catch (ExecutionException|InterruptedException e) {
  80. logger.warn("abs failed", e);
  81. }
  82. return false;
  83. }
  84. @XRMethod(value = "getpos", help = "getpos")
  85. public static int getpos() {
  86. logger.info("GetPos");
  87. try {
  88. return Main.fhm.readStatus().get().istPosition;
  89. } catch (InterruptedException e) {
  90. e.printStackTrace();
  91. } catch (ExecutionException e) {
  92. e.printStackTrace();
  93. }
  94. return -1;
  95. }
  96. @XRMethod(value = "ready", help = "ready")
  97. public static void ready() {
  98. logger.info("Ready Begin");
  99. Main.fhm.bereitschaft();
  100. logger.info("Ready End");
  101. }
  102. private static boolean checkPos(int pos) {
  103. try {
  104. Status s= Main.fhm.readStatus().get();
  105. int curPos = s.istPosition;
  106. logger.info("curpos {} ({})", curPos, pos);
  107. if(curPos==pos) {
  108. logger.info("reached {}", pos);
  109. return true;
  110. }
  111. Thread.sleep(500);
  112. } catch (ExecutionException e) {
  113. e.printStackTrace();
  114. } catch (InterruptedException e) {
  115. e.printStackTrace();
  116. }
  117. return false;
  118. }
  119. @XRMethod(value = "status", help = "Returns status")
  120. public static String status() {
  121. var x=Main.fhm.readStatus();
  122. try {
  123. return x==null?"<null>":x.get().toString();
  124. } catch (Exception e) {
  125. e.printStackTrace();
  126. return e.toString();
  127. }
  128. }
  129. }