RobotC:TeleOp中的多线程(控制模式)

时间:2014-12-31 04:35:29

标签: multithreading robot

我正在为比赛中的机器人制作程序,需要多线程。

当我做第二个任务(任务二())并尝试从控制器按下按钮时启动(startTask)它只执行任务的第一个语句,只要按下按钮,而不是整个块。我尝试了很多东西,包括在第二个任务中放置循环,使用函数而不是任务,然后在startTask(两个)之前和之后休眠200毫秒;功能,但每次都会发生同样的事情。

我无法发布我的节目,因为我不想让别人偷走它,抱歉。

什么编辑会让它运行整个块? 任何帮助将不胜感激。

1 个答案:

答案 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个变量。

这应该使你能够同时驾驶和运行一个功能而不会相互打断。