如何使用 Qt 为相同的功能创建一个 2 任务?
How do I create a 2 task for same function using Qt?
我在玩Qt。我正在使用一个超声波传感器,如果我启动玩具,它会正常工作。
目前,我在做什么?例如,我编写了一个玩具程序,我会启动玩具然后它会开始连续行走,如果有人在超声波传感器前面,那么它会感应到并停止行走。 (这工作正常)。这就是我创造的。
Toystart Thread:
bool Toystart::Limit()
{
if(Dist <= 55)
{
return true;
}
return false;
}
main Thread:
int sensor = 0;
if (toystart->Limit() )
{
if(sensor == 0)
{
toystart->Stop_talking();
delay (5000);
sensor = 1;
break;
}
}
我到底想要什么?
上述代码运行良好,我想创建更多功能。例如,娃娃前面的某个人停止说话 5 秒,然后它会再次检查静止的 Obst,它会停止说话。它需要在 5 秒后再次检查是否还有 Obst 它将转到那里的新功能它会说请离开我然后在 5 秒后如果 Obst 不在那里它会走。
但这是一个阻塞调用。您的函数卡住了 5 秒,并且根据 delay() 的实现方式,它可能会使您的整个应用程序对任何其他调用和事件无响应。
伪代码:
if (obstacle is near) {
if (last_operation == "wait") {
last_operation = "Action";
takeAction();
} else {
last_operation = "wait";
wait();
}
} else { // no obstacle
last_operation = "go";
go();
}
这就是你要找的吗?
我在玩Qt。我正在使用一个超声波传感器,如果我启动玩具,它会正常工作。
目前,我在做什么?例如,我编写了一个玩具程序,我会启动玩具然后它会开始连续行走,如果有人在超声波传感器前面,那么它会感应到并停止行走。 (这工作正常)。这就是我创造的。
Toystart Thread:
bool Toystart::Limit()
{
if(Dist <= 55)
{
return true;
}
return false;
}
main Thread:
int sensor = 0;
if (toystart->Limit() )
{
if(sensor == 0)
{
toystart->Stop_talking();
delay (5000);
sensor = 1;
break;
}
}
我到底想要什么?
上述代码运行良好,我想创建更多功能。例如,娃娃前面的某个人停止说话 5 秒,然后它会再次检查静止的 Obst,它会停止说话。它需要在 5 秒后再次检查是否还有 Obst 它将转到那里的新功能它会说请离开我然后在 5 秒后如果 Obst 不在那里它会走。
但这是一个阻塞调用。您的函数卡住了 5 秒,并且根据 delay() 的实现方式,它可能会使您的整个应用程序对任何其他调用和事件无响应。
伪代码:
if (obstacle is near) {
if (last_operation == "wait") {
last_operation = "Action";
takeAction();
} else {
last_operation = "wait";
wait();
}
} else { // no obstacle
last_operation = "go";
go();
}
这就是你要找的吗?