Eclipse C++ Raspberry Pi

Gast #5445275
Lesenswert?
• ▲
▼
Hallo zusammen,

ich programmiere meinen RPi über Eclipse C++ Remote.
Das Debugging meines Codes funktioniert ohne Probleme.

Ich möchte gerne Sensordaten loggen bzw. in einem File /media/X00.csv 
abspeichern. Durch durch drücken eines Buttoms wird die nächste Messung 
mit /media/X01.csv usw. abgespeichert.

Ich mache das folgendermaßen:
1
char filename[]=  "/media/X00.csv";
2

3

4

5
int main (void){
6

7
FILE * myFile_1;
8

9
for (uint8_t x = 0; x < 100; x++) {
10
      
11
    filename[8] =  x/10 + '0';
12
    filename[9] =  x%10 + '0';
13

14

15

16
                std::ifstream FileTest(filename);
17

18

19
               if(FileTest){
20

21

22
                   myFile_1 = fopen(filename,"w");
23

24
                break; 
25

26
                  }
27
                }
28
    
29
                  
30
...Vario wird berechnet...
31

32
     fprintf(myFile_1, "%s, %d\n","Vario: ", Vario);
33
     fclose(myFile_1);


bei fprintf(...) bricht das Programm ab: "No source available for 
"vfprintf() at 0x76c9182c""


An einem IOT2040 von Siemens hat das ohne Probleme funktioniert.
Was mache ich beim Raspberry falsch?

Danke!
(Firma: Torrox.de) #5445545
Lesenswert?
• ▲
▼
Hi John,

johnPI schrieb:

> Was mache ich beim Raspberry falsch?

soll jetzt jeder von uns, Deinen Quelltext kopieren und erst einmal 
formatieren, damit man ihn lesen kann? Du möchtest Hilfe? Dann hilf uns, 
Dir zu helfen!

Ansonsten scheinst Du zwei mal die Datei mit dem Namen filename zu 
öffnen. Einmal lesender weise und einmal dann zum schreiben. Das soll 
sicherlich so etwas wie ein Test sein, ob die Datei vorhanden ist. Lass 
das einfach und öffne die Datei einfach zum schreiben und prüfe das 
Ergebnis dieser Operation.

mfg Torsten
Gast #5445838
Lesenswert?
• ▲
▼
Das debuggen funktioniert fehlerfrei.
Programm funktioniert ebenfalls fehlerfrei sobald ich " 
fprintf(myFile_1, "%s, %d\n","Vario: ", Vario);
und  fclose(myFile_1);" ausblende.

Fehlermeldung kommt sobald er fprintf(...) oder fclose(...) ausführen 
will.


Entsppechende libs:
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <fstream>
#include <unistd.h>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <string>
...
Gast #5445868
Lesenswert?
• ▲
▼
1
if (file == NULL) {
2
     perror("Error opening file: ");
3
}

habe ich einmal in der if Schleife "if(FileTest)" eingefügt und dann 
noch einmal ausserhalb der For Schleife "for (uint8_t x = 0; x < 100; 
x++)"

Die If Schleife wird nicht ausgeführt.
Bei der zweiten Abfrage kommt das kein File vorhanden ist.

Ich frage mich wieso das bisher mit dem IOT2040 funktioniert hat :/
(Firma: Torrox.de) #5445887
Lesenswert?
• ▲
▼
johnPI schrieb:
> habe ich einmal in der if Schleife "if(FileTest)" eingefügt und dann
> noch einmal ausserhalb der For Schleife "for (uint8_t x = 0; x < 100;
> x++)"

Diese Abfrage solltest Du exakt einmal machen. Genau dann, wenn der Du 
Variablen einen Wert zuweist. In C++ ist es auch nicht nötig (und in C99 
auch nicht) eine Variable am Anfang der Funktion zu deklarieren. Damit 
kannst Du die Variable als Konstate deklarieren und sofort 
initialisieren:
1
    FILE* const vario_file = fopen( filename );
2

3
    if ( vario_file )
4
        ....

> Die If Schleife wird nicht ausgeführt.

Was auch immer eine "If Schleife" ist...

> Ich frage mich wieso das bisher mit dem IOT2040 funktioniert hat :/

Nun, dort scheint es offensichtlich möglich zu sein, eine Datei zwei mal 
zu öffnen und unterschiedliche Modies dabei anzugeben.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.