C++ 如何使用Qt为同一函数创建2个任务?
我在玩Qt。我使用的是一个超声波传感器,如果我启动玩具,它就可以正常工作 现在,我在做什么?例如,我已经为一个玩具编程,我将启动玩具,然后它将开始连续行走,如果有人在超声波传感器前面,那么它将感觉到并停止行走。(这很好用)。这就是我所创造的C++ 如何使用Qt为同一函数创建2个任务?,c++,qt,delay,raspberry-pi3,C++,Qt,Delay,Raspberry Pi3,我在玩Qt。我使用的是一个超声波传感器,如果我启动玩具,它就可以正常工作 现在,我在做什么?例如,我已经为一个玩具编程,我将启动玩具,然后它将开始连续行走,如果有人在超声波传感器前面,那么它将感觉到并停止行走。(这很好用)。这就是我所创造的 Toystart线程: bool Toystart::Limit() { if(Dist <= 55) { return true; } return false; } int sensor = 0;
Toystart线程:
bool Toystart::Limit()
{
if(Dist <= 55)
{
return true;
}
return false;
}
int sensor = 0;
if (toystart->Limit() )
{
if(sensor == 0)
{
toystart->Stop_talking();
delay (5000);
sensor = 1;
break;
}
}
我到底想要什么
上面提到的代码运行良好,我想创建一个更多的函数。例如,玩偶前面的某个人停止说话5秒钟,然后它会再次检查仍然存在的障碍,并停止说话。它需要在5秒钟后再次检查,如果仍然在那里,它将进入新功能,在那里它会说请离开我,然后在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();
}
这就是你想要的吗?很难理解你想要什么。你能编辑这个问题来明确说明你想要什么吗?@Vishaal Shankar谢谢你的支持。很抱歉给您带来不便,我对英语不熟悉。我编辑过。在这里,我已经更新了我现在正在做什么,我想要什么?不过,如果你有疑问,请准确地评论。@Geevan我认为问题不在于英语,而在于如何简单明了地解释你的问题。例如,在本例中,您需要在没有传感器API的情况下用Qt代码描述问题。重点关注通过Qt实现的tile“创建2个任务(QThread)来完成相同的功能(Work)”。我认为我可以尝试这种方法,但不完全是这样。