Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用Qt为同一函数创建2个任务?_C++_Qt_Delay_Raspberry Pi3 - Fatal编程技术网

C++ 如何使用Qt为同一函数创建2个任务?

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;

我在玩Qt。我使用的是一个超声波传感器,如果我启动玩具,它就可以正常工作

现在,我在做什么?例如,我已经为一个玩具编程,我将启动玩具,然后它将开始连续行走,如果有人在超声波传感器前面,那么它将感觉到并停止行走。(这很好用)。这就是我所创造的

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)”。我认为我可以尝试这种方法,但不完全是这样。