我可以使用waitfor来检测任务或超时

时间:2013-06-20 21:13:05

标签: c circuit

我正在为动态C编写一个rabbit BL2600板的程序。

该程序正在控制压力室顶部腔室和底部腔室,其间夹有金属以检查穿孔。我的压力调节器上有一个传感器,另一个传感器读取相反的腔室。

我有一个失败功能,可以看到腔室是否从一侧泄漏到另一侧。当我对腔室加压时,我使用waitfor等待,直到腔室内的压力达到我设定压力的10%。我希望它等到发生这种情况,但我也想确保它不会永远等待,它会检测到泄漏到室外。基本上我希望它waitfor构建的压力或xx的时间量,如果xx的时间量通过,则基本上会失败。

我是编程的初学者,这可能是一个简单的解决方案,但我在思考解决方案时遇到了问题。我已经在下面粘贴了我的功能,截至目前它只等待压力在10%以内,所以如果它没有它被卡在那里。附:对不起,如果代码很草率我是初学者,这是一项正在进行中的工作。

cofunc run()
{
  if (status == 1 && fail() != 1)
     {
     waitfor (DelayMs(2000) || status==0);
     for (i; i<7; i++)
        {
      printf("\n\n In for loop in run psi[i] = %d", psi[i]);
      if (status == 0) return;
        if (psi[i] < 0 && psi[i-1] >= 0) // if negative and previous number positive
        {
         digOut(1,0);
          chamber = 1;
         waitfor (DelayMs(2000));
         digOut(1,1);
         }
       else if (psi[i] >= 0 && psi[i-1] < 0) // if positive and previous was negative
        {
         digOut(1,0);
          chamber = 2;
         waitfor (DelayMs(2000));
         digOut(1,1);
         }
      output = abs(psi[i]);
      output = output/7.23738;  // converts PSI to voltage
      if ((output) <= 5)  // makes sure that output voltage wont exceed 5 volts
          {
          anaOutVolts(0, output);
         waitfor (pressureb > (psi[i]*.9) && pressureb < (psi[i]*1.1));
         waitfor (DelayMs(time[i]));
          }
      } // end for statement
      return;
      }
    return;
}  

0 个答案:

没有答案