<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Problem schreiben auf SD Karte]]></title><description><![CDATA[<p>Hallo, ich nutze einen mbed IC.<br />
Damit möchte ich immer wieder auf eine SD Karte schreiben. Daher nutze ich eine Init Funktion um die SD Karte zu initialisieren und eine Schreibfunktion um zu beschreiben. Mein Problem ist, dass ich leider nicht schreiben kann. Ich habe zwei Versionen, eine mit fw &lt;&lt;&quot;String&quot; und eine mit fprintf(fp,&quot;string)</p>
<p>Das Problem bei fw: Die Datei bleibt leer.<br />
Das Problem bei fprintf er kennt fp nicht da es in einer anderen Funktion deklariert wurde.</p>
<p>Code:</p>
<pre><code>void init(){
    uartpc.baud(115200);                          // initialisierung der Baudrate für USB auf 9600 (Auslesen mit Terra Term)
    uart.baud(115200);                            // initialisierung der Baudrate für die Verbindung zwischen den Mbed

    uart.attach(readUart, (Serial::RxIrq));     // Interrupt für Schreiben(UART)
    uart.attach(writeUart, (Serial::TxIrq));    // Interrupt für Lesen(UART)
    uartpc.printf(&quot;Start\r\n&quot;);
    once=true;
    while(!Saveadress){ 
           uartpc.printf(&quot;Wait SA\r\n&quot;);                           // Warten auf Dateinamen für lesen und schreiben
        }
        once=true;
    uartpc.printf(&quot;GOT Saveadress\r\n&quot;);
    Card.init();                                // Initialisierung der SD-Card
    Card.initwrite(Filename);                   // Initialisierung der Schreibdatei für Versuchsverlauf
    while(!configuration){ 
                                       // Warten auf die Beschreibung der Datei mit dem Verlauf
        }    
    Card.SDwclose(); 
    uartpc.printf(&quot;Closed\r\n&quot;);                           
    while(true){
            // Wartet bis die Globale Variable Configuration auf true gesetzt wurde
            // Dies beinhaltet eine Definition des Reglers
            // ...
            myled =1;    
        } 
}
</code></pre>
<pre><code>#include &quot;SDCard.h&quot;
#include &quot;SDFileSystem.h&quot;
#include &quot;mbed.h&quot;
#include &lt;string&gt;
#include &lt;fstream&gt;

extern Serial uartpc;
extern SDFileSystem sd;

void SDC::init(){

    mkdir(&quot;/sd/save&quot;, 0777); 

    return;
}

void SDC::initread(string adress){
    sprintf(readfile, &quot;/sd/save/%sr.txt&quot;,adress);   

    fr.open(readfile, ios::in);   
}

void SDC::initwrite(string adress){
    sprintf(writefile, &quot;/sd/save/%sw.txt&quot;,adress);   
    FILE *fp = fopen(readfile, &quot;w&quot;);  
    fprintf(fp, &quot;Hello fun SD Card World!\r\n&quot;);
   // fw.open(writefile, ios::out);    
}    

void SDC::SDwrite(int Sendvalue){
    sprintf(Send,&quot;Wert%s\r\n&quot;,Sendvalue);
    fprintf(fp, &quot;Hello fun SD Card World!\r\n&quot;);
    //fw &lt;&lt; &quot;100\n&quot;;
    uartpc.printf(&quot;Schreiben!!!&quot;);
    return;
}

void SDC::SDread(){
    *_Out = 1; 
    for(int i=0; i&lt;200;i++){  
    getline(fr,s);
    }
    //uartpc.printf(&quot;Read from file: %s&quot;,s);
    *_Out = 0;
    return;
}

void SDC::SDwclose(){
    uartpc.printf(&quot;Schliessen!!!&quot;);
    //fw.close();
    fclose(fp);
    uartpc.printf(&quot;Geschlossen!!!&quot;);
}    

void SDC::SDrclose(){
    fr.close();   
}
</code></pre>
<pre><code>#ifndef SDCARD_H
#define SDCARD_H
#include &quot;mbed.h&quot;
#include &lt;string&gt;
#include &lt;fstream&gt;

class SDC{

public:
    string s;
    ifstream fr;
    ofstream fw;
    char readfile[256];
    char writefile[256];
    char Message[256];
    Timer t;
    int counter;
    char Send[20];

    void SDwrite(int Sendvalue);    
    void SDread();
    void SDwclose();
    void SDrclose();
    void init();                
    void initwrite(string adress);
    void initread(string adress);           

private:
    AnalogOut* _Out;

};

#endif /* SDCARD_H */
</code></pre>
<p>Die erste Datei macht den Funktionsaufruf.<br />
Die Zweite ist die cpp für die Klasse Card<br />
Die dritte Datei die Klassenbeschreibung</p>
<p>schonmal danke für die Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/325271/problem-schreiben-auf-sd-karte</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 23:48:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/325271.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Apr 2014 14:11:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem schreiben auf SD Karte on Wed, 23 Apr 2014 14:11:16 GMT]]></title><description><![CDATA[<p>Hallo, ich nutze einen mbed IC.<br />
Damit möchte ich immer wieder auf eine SD Karte schreiben. Daher nutze ich eine Init Funktion um die SD Karte zu initialisieren und eine Schreibfunktion um zu beschreiben. Mein Problem ist, dass ich leider nicht schreiben kann. Ich habe zwei Versionen, eine mit fw &lt;&lt;&quot;String&quot; und eine mit fprintf(fp,&quot;string)</p>
<p>Das Problem bei fw: Die Datei bleibt leer.<br />
Das Problem bei fprintf er kennt fp nicht da es in einer anderen Funktion deklariert wurde.</p>
<p>Code:</p>
<pre><code>void init(){
    uartpc.baud(115200);                          // initialisierung der Baudrate für USB auf 9600 (Auslesen mit Terra Term)
    uart.baud(115200);                            // initialisierung der Baudrate für die Verbindung zwischen den Mbed

    uart.attach(readUart, (Serial::RxIrq));     // Interrupt für Schreiben(UART)
    uart.attach(writeUart, (Serial::TxIrq));    // Interrupt für Lesen(UART)
    uartpc.printf(&quot;Start\r\n&quot;);
    once=true;
    while(!Saveadress){ 
           uartpc.printf(&quot;Wait SA\r\n&quot;);                           // Warten auf Dateinamen für lesen und schreiben
        }
        once=true;
    uartpc.printf(&quot;GOT Saveadress\r\n&quot;);
    Card.init();                                // Initialisierung der SD-Card
    Card.initwrite(Filename);                   // Initialisierung der Schreibdatei für Versuchsverlauf
    while(!configuration){ 
                                       // Warten auf die Beschreibung der Datei mit dem Verlauf
        }    
    Card.SDwclose(); 
    uartpc.printf(&quot;Closed\r\n&quot;);                           
    while(true){
            // Wartet bis die Globale Variable Configuration auf true gesetzt wurde
            // Dies beinhaltet eine Definition des Reglers
            // ...
            myled =1;    
        } 
}
</code></pre>
<pre><code>#include &quot;SDCard.h&quot;
#include &quot;SDFileSystem.h&quot;
#include &quot;mbed.h&quot;
#include &lt;string&gt;
#include &lt;fstream&gt;

extern Serial uartpc;
extern SDFileSystem sd;

void SDC::init(){

    mkdir(&quot;/sd/save&quot;, 0777); 

    return;
}

void SDC::initread(string adress){
    sprintf(readfile, &quot;/sd/save/%sr.txt&quot;,adress);   

    fr.open(readfile, ios::in);   
}

void SDC::initwrite(string adress){
    sprintf(writefile, &quot;/sd/save/%sw.txt&quot;,adress);   
    FILE *fp = fopen(readfile, &quot;w&quot;);  
    fprintf(fp, &quot;Hello fun SD Card World!\r\n&quot;);
   // fw.open(writefile, ios::out);    
}    

void SDC::SDwrite(int Sendvalue){
    sprintf(Send,&quot;Wert%s\r\n&quot;,Sendvalue);
    fprintf(fp, &quot;Hello fun SD Card World!\r\n&quot;);
    //fw &lt;&lt; &quot;100\n&quot;;
    uartpc.printf(&quot;Schreiben!!!&quot;);
    return;
}

void SDC::SDread(){
    *_Out = 1; 
    for(int i=0; i&lt;200;i++){  
    getline(fr,s);
    }
    //uartpc.printf(&quot;Read from file: %s&quot;,s);
    *_Out = 0;
    return;
}

void SDC::SDwclose(){
    uartpc.printf(&quot;Schliessen!!!&quot;);
    //fw.close();
    fclose(fp);
    uartpc.printf(&quot;Geschlossen!!!&quot;);
}    

void SDC::SDrclose(){
    fr.close();   
}
</code></pre>
<pre><code>#ifndef SDCARD_H
#define SDCARD_H
#include &quot;mbed.h&quot;
#include &lt;string&gt;
#include &lt;fstream&gt;

class SDC{

public:
    string s;
    ifstream fr;
    ofstream fw;
    char readfile[256];
    char writefile[256];
    char Message[256];
    Timer t;
    int counter;
    char Send[20];

    void SDwrite(int Sendvalue);    
    void SDread();
    void SDwclose();
    void SDrclose();
    void init();                
    void initwrite(string adress);
    void initread(string adress);           

private:
    AnalogOut* _Out;

};

#endif /* SDCARD_H */
</code></pre>
<p>Die erste Datei macht den Funktionsaufruf.<br />
Die Zweite ist die cpp für die Klasse Card<br />
Die dritte Datei die Klassenbeschreibung</p>
<p>schonmal danke für die Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2395965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2395965</guid><dc:creator><![CDATA[ChrisGo]]></dc:creator><pubDate>Wed, 23 Apr 2014 14:11:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problem schreiben auf SD Karte on Thu, 24 Apr 2014 07:11:17 GMT]]></title><description><![CDATA[<p>Das ist ja mal ein schönes Durcheinander von C und C++ <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Wundert mich jetzt nicht unendlich, dass das nicht funktioniert - und wahrscheinlich hat das nicht einmal mit der SD-Karte zu tun.</p>
<p>Ich würde erstmal alle C-I/O rauswerfen ( <code>printf()</code> funktioniert eh nicht mit <code>std::string</code> !).</p>
<p>Danach kann man sich das ja nochmal anschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396075</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Thu, 24 Apr 2014 07:11:17 GMT</pubDate></item></channel></rss>