Я новичок в программировании с помощью linux/raspbian, и я пытаюсь создать программу, которая извлекает системное время Pi и записывает ее в текстовый файл всякий раз, когда контакт 23 идет высоко. Контакт 23 подключен к защелке S-R, а штырек 24 посылает сигнал сброса для сброса защелки.Программа Raspberry Pi - C не записывается в текстовый файл
Проблема, с которой я сталкиваюсь, заключается в том, что она ничего не пишет о текстовом файле, который был создан. Программа создает файл в порядке, но ничего не пишет. Вот мой код:
using namespace std;
FILE *f;
struct timeval curTime;
int main(int argc, char *argv[]){
char dateiname[256] = "";
int i=0;
int milli;
int seconds_in_day;
wiringPiSetupGpio();
time_t t = time(0);
struct tm * now = localtime(&t);
//Create and open file
sprintf(dateiname, "/home/raspbian/Desktop/%02d%02d%02d_%02d_%02d.txt",
now -> tm_year+1900,
now -> tm_mon+1,
now -> tm_mday,
now -> tm_hour,
now -> tm_min);
f = fopen(dateiname, "w");
//write heading to file before loop
fprintf(f, "Picture, system time\n");
//Set 23 & 24 as input/ output
pinMode(23, INPUT);
pullUpDnControl(23, PUD_DOWN);
pinMode(24, OUTPUT);
while(1){
if(digitalRead(23)){ //If 23 is high
i=i+1;
gettimeofday(&curTime, NULL);
milli = curTime.tv_usec/1000; //Get time in milliseconds
seconds_in_day = curTime.tv_sec % 86400; //Get seconds since midnight
fprintf(f, "&d &d.%d\n", i, seconds_in_day, milli); //Write to file
//send out reset signal
digitalWrite(24, HIGH);
//pause for 1 second
delay(1000);
}
}
fclose(f);
return(0);
}
У кого-нибудь есть очевидные ошибки? Я также запускаю программу в терминале через
sudo /home/raspbian/Desktop/program
и просто выйти из программы, покинув окно терминала. Спасибо
Что произойдет, если вы удалите 'в то время как (1)'? –
Возможно, это поможет http://unix.stackexchange.com/questions/82952/is-it-harmful-to-close-a-terminal-window-without-properly-exiting-an-application. В зависимости от того, как вы пишете запись файла, возможно, завершение работы оболочки приводит к тому, что 'fclose' не будет вызван. – mathematician1975
Проверьте, удалось ли fopen открыть файл, проверив возврат нулевого указателя (при сбое). – Unimportant