배경 (아래 질문을 건너 뛸 수 있습니다 ...)자바 : 더 완전한 재 시도하는 경우, 최대 n 초에 대한 기능을 위해 기다려
는 현재 레고 마인드 스톰 로봇과 ICommand의 API (HTTP 작업 : //lejos.sourceforge.net/p_technologies/nxt/icommand/api/index.html).
모터 제어 방법 중 하나에 문제가 있습니다. 이 메서드는 주어진 각도로 모터를 회전합니다.
Motor.A.rotateTo(target);
이 함수는 모터가 이동을 완료 할 때까지 반환되지 않습니다. 이것은 괜찮지 만 때로는 모터가 멈추지 않고 무기한으로 계속 작동하여 프로그램을 중지합니다.
질문
어쨌든 내가 너무 프로그램이 반환하는 방법 Motor.A.rotateTo(target);
최대 N초을 대기가 할 수입니다. 그리고 나서 그 시간에 돌아 오지 않았다면 다시 메소드를 호출하십시오. (성공할 때까지 반복 될 수 있다면 더 좋을 것입니다.)
감사합니다. 도움을 주시면 감사하겠습니다.
안부, 조
편집 : Motor.A.rotateTo(target);
Motor#rotate(long count, boolean returnNow)
에 대한
가능한 중복이 지정된 시간 내에 함수의 실행을 중지하는 것이 가능 Java에서?] (http://stackoverflow.com/questions/3183722/is-it-possible-to-stop-a-functions-execution-within-a-specified-time-in-java) – Perception
하지만 실행 중간에 메소드를 중지하면 객체에 일관성없는 상태가 발생합니까? – Tudor
@ Tudor Ah yeh, 예치. 나는'Motor.A.rotateTo (target); '이라고 쓰고 싶었다. 내 실수였다. 모터는 타코 카운터 (tacho-counter)를 가지고있어 얼마나 시계 방향으로 돌았는지 (시계 반대 방향, 시계 반대 방향, 타코 = 1도)를 기록합니다. 그래서 간단히 그 메소드를 다시 호출 할 수 있으며 목표 tacho-count에 도달 할 때까지 회전합니다. – Leech