【问题标题】:C wiringPi wait until function is completedC 接线Pi 等到功能完成
【发布时间】:2015-07-16 16:32:19
【问题描述】:

我不是 C 开发人员,但我需要编写简单的程序,但我遇到了延迟问题。这是我的程序:

#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>

#include <wiringPi.h>
#include <softPwm.h>

int main (int argc, char *argv[])
{
  int val = 10;
  if (argc > 1) {
    val = atoi(argv[1]);
  }
  wiringPiSetup ()  ;

  pinMode(1, OUTPUT);
  softPwmCreate (1, 0, 100) ;
  printf ("Soft Pwm created: %s!\n", argv[1]) ;

  softPwmWrite (1, val) ;

  delay (200);

  return 0;
}

在我用 delay (200) 删除行之前,它工作得很好。在程序完成之前,如何在没有 delay() 的情况下等到函数 softPwmWrite 完成? 我正在使用 LinuxwiringPi 库。谢谢。

【问题讨论】:

  • 如果您对softPwmWrite () 有任何副作用,您可以在完成前循环检查,但无论如何,这是非常正常的方式。
  • 我认为这不是关于语言的问题,而是关于特定库的问题,softPwm,我认为。
  • delay 不是标准的 C 库,C 与 C++ 不一样(所以选择一个!)。您可能正在使用某个操作系统,请说出它的名字!
  • @BasileStarynkevitch,是的,抱歉,刚刚编辑了我的问题。当我说我不是 C/C++ 开发人员时,我的意思是我从来没有为这种级别编写过代码。
  • 可能人们没有明白您无法创建缺失的标签。

标签: c wiringpi


【解决方案1】:

包括pthread.h 并致电pthread_exit

#include <pthread.h>

....

softPwmWrite (1, val) ;
pthread_exit(0);
}

softPwmWrite 返回时,它将退出程序。 softPwmWrite 使用线程,您只需要确保您的程序在线程完成之前不会死机。当所有线程都完成后,进程将在最后退出。

【讨论】:

  • 谢谢。它可以工作,但我需要在功能完成后退出程序
  • @Footniko 我希望我的编辑能说明问题。为什么你需要退出自己?
猜你喜欢
  • 2013-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多