|
@@ -62,22 +62,29 @@ public class FestoXRServer {
|
|
|
@XRMethod(value = "abs", help = "abs")
|
|
|
public static String abs(int targetPos, int speed) {
|
|
|
try {
|
|
|
- logger.info("Absolute to {} speed {}", targetPos, speed);
|
|
|
- Main.fhm.bereitschaft();
|
|
|
-
|
|
|
- Main.fhm.direktAuftrag(targetPos, speed, 0, false);
|
|
|
- Thread.sleep(100);
|
|
|
- Main.fhm.direktAuftrag(targetPos, speed, 1, false);
|
|
|
-
|
|
|
+ int round=1;
|
|
|
while(true) {
|
|
|
- boolean reached=checkPos(targetPos);
|
|
|
- if(reached) {
|
|
|
- logger.info("Reached {}", targetPos);
|
|
|
- return "OK";
|
|
|
- }
|
|
|
+ logger.info("Absolute to {} speed {} try {}", targetPos, speed, round++);
|
|
|
+ Main.fhm.bereitschaft();
|
|
|
+ Main.fhm.direktAuftrag(targetPos, speed, 0, false);
|
|
|
+ Thread.sleep(100);
|
|
|
+ Main.fhm.direktAuftrag(targetPos, speed, 1, false);
|
|
|
+
|
|
|
+ while (true) {
|
|
|
+ boolean reached = checkPos(targetPos);
|
|
|
+ Status s = Main.fhm.readStatus().get();
|
|
|
+ if (s.fault) {
|
|
|
+ logger.warn("fault, retry");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (reached) {
|
|
|
+ logger.info("Reached {}", targetPos);
|
|
|
+ return "OK";
|
|
|
+ }
|
|
|
Thread.sleep(100);
|
|
|
+ }
|
|
|
}
|
|
|
- } catch (InterruptedException e) {
|
|
|
+ } catch (ExecutionException|InterruptedException e) {
|
|
|
logger.warn("abs failed", e);
|
|
|
return "abs failed: "+e.toString();
|
|
|
}
|