2015-06-08 2 views
1

Я пытаюсь простой код, используя wiringPi, как здесь:Raspberry Pi: Е() не работает с wiringPi

#include<wiringPi.h> 
#include<stdio.h> 

int main(void){ 
    int i; 

    wirintPiSetup(); 
    pinMode(0,OUTPUT); //a single LED 
    pinMode(8,INPUT); //tactile switch 

    for(;;){ 
     delay(500); 
     //push tactile switch and LED is turning on 
     if(digitalRead(8)) digitalWrite(0,0); 
     else digitalWrite(0,1); 
     printf("%d",digitalRead(8)); 
    } 
} 

Я ожидал, что результат Е() выводится на консоль, но он не работает. printf() не удалось запустить в то же время с API-интерфейсом wiringPi?

предупреждений при компиляции. и потребление ЦП всегда составляет менее 4%. работает на Raspbian.

Спасибо за ваше время!

+0

Функция 'printf' обязательно должна работать. – meskobalazs

+0

Вы пробовали положить printf в начало кода, чтобы проверить, не сработала ли ваша программа перед входом в цикл? Else try with gdb – MrSykkox

+0

Спасибо за внимание! сейчас я попробовал положить printf привет в начало кода, и он не работает! предположим, что-то пошло не так из логики. Я попробую gdb. – Nagitch

ответ

4

stdout по умолчанию line-buffered, что означает, что он пытается отложить запись данных в основной файл до новой строки. Но так как вы никогда не печатаете новую строку, stdout просто буферизует ваш текст, пока не закончится пробел.

Вы можете исправить это, добавив новую строку в строку формата (т. Е. "%d\n") или позвонив по телефону fflush по адресу stdout после печати.

+0

он решил! Я японский, поэтому использую японскую клавиатуру и не могу набрать обратную косую черту ... lol копировать и вставлять обратную косую черту с веб-сайта, и она работает хорошо. большое вам спасибо! – Nagitch

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