我正在为比赛中的机器人制作程序,需要多线程。
当我做第二个任务(任务二())并尝试从控制器按下按钮时启动(startTask)它只执行任务的第一个语句,只要按下按钮,而不是整个块。我尝试了很多东西,包括在第二个任务中放置循环,使用函数而不是任务,然后在startTask(两个)之前和之后休眠200毫秒;功能,但每次都会发生同样的事情。
我无法发布我的节目,因为我不想让别人偷走它,抱歉。
什么编辑会让它运行整个块? 任何帮助将不胜感激。
答案 0 :(得分:1)
由于这是控制器模式,我假设您在未按下相应按钮时将电机设置为停止。
if([...])
[...]
else
{
setMotorSpeed(motor10, 0);
}
这是释放时停止电机的原因。您尝试过的所有其他方法都与此无关,因此它们不应该有效。
你需要这样的东西:
int Motor10Speed;
[...]
if([...])
[...]
else
{
setMotorSpeed(motor10, Motor10Speed);
}
这将控制单个电机。对所有正在使用的电机重复此操作。
完成后,让函数看起来像这样:
task mini_function();
task main()
{
[...]
}
task mini_function()
{
Motor10Speed = 50;
sleep(1000);
Motor10Speed = 0;
}
扩展上述程序,使其与当前函数匹配,同时将MotorSpeed
变量用作setMotorSpeed
个变量。
这应该使你能够同时驾驶和运行一个功能而不会相互打断。