【发布时间】:2012-02-13 10:56:06
【问题描述】:
背景(可以跳到下面的问题...)
目前正在使用乐高 Mindstorm 机器人和 icommand API (http://lejos.sourceforge.net/p_technologies/nxt/icommand/api/index.html)。
其中一种电机控制方法出现问题。这些方法将电机旋转给定角度:
Motor.A.rotateTo(target);
在电机完成运动之前,此功能不会返回。这很好,但有时电机无法停止并会无限期地继续,从而停止程序。
问题
无论如何我可以让程序等待方法Motor.A.rotateTo(target);返回n秒。然后如果在那段时间内没有返回,则再次调用该方法。 (如果可以循环直到成功,那就更好了。)
感谢您的阅读,任何帮助将不胜感激。
问候, 乔
编辑:从Motor.A.rotate(target); 更正为Motor.A.rotateTo(target);
【问题讨论】:
-
但是在执行过程中不停止方法会不会导致对象的状态不一致?
-
@Tudor 啊是的,是的。我的意思是写
Motor.A.rotateTo(target);对不起我的错误!电机有转速计,记录它们转动了多远(顺时针正,逆时针负,1 转速 = 1 度)。所以我可以简单地重新调用该方法,它会旋转直到达到目标转速计。
标签: java multithreading time concurrency icommand