2015-07-16 3 views
0

Я не C разработчик, но мне нужно написать простую программу, и у меня проблемы с задержкой. Вот моя программа:C электропроводкаPi дождитесь завершения функции

#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; 
} 

И он работает довольно хорошо, пока я не удалить строку с задержкой (200). Как я могу дождаться завершения функции softPwmWrite без delay() до того, как программа сделала? Im 'используя Linux и электропроводкаPi библиотека. Благодарю.

+0

Если у вас есть какие-либо побочные эффекты 'softPwmWrite()', вы можете проверить это в цикле до окончания, но это, безусловно, путь. –

+2

Я думаю, что это не вопрос о языке, а о конкретной библиотеке, 'softPwm', I thinik. – Petr

+0

'delay' не является стандартной библиотекой C, а C не совпадает с C++ (поэтому выберите один!). Вероятно, вы используете какую-то операционную систему, назовите ее! –

ответ

1

Включите pthread.h и вызовите pthread_exit:

#include <pthread.h> 

.... 

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

Когда softPwmWrite возвращается, она будет выйти из программы. softPwmWrite использует потоки, и вам просто нужно убедиться, что ваша программа не умирает до завершения потоков. Когда все потоки завершатся, процесс будет завершен в конце.

+0

Спасибо. Он работает, но мне нужно выйти из программы после завершения функции. – Footniko

+0

@Footniko Надеюсь, мое редактирование дает понять. Зачем вам нужно выйти? –

Смежные вопросы