- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 24 von 24

Thema: Tabelle (Zeichensatz) auslesen?

  1. #21
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Anzeige

    LiFePo4 Akku selber bauen - Video
    aber Du verwendest da nur Zahlen.
    Nein, ich hab da auch noch ein paar Strings drin
    Wie willst Du einen String denn zerlegen ?
    über UART kommend oder wie ?
    Ist ja kein Akt:
    einen Puffer einrichten wo Zeichen gesamelt werden, (Sameln an besten in RX ISR) bis '\n' Empfangen wurde.
    Wurde '\n' Empfangen setzt Du im Interrupt einen Flag, das der String komplett angekommen ist und am besten am Ende vom String ein '\0' anhängen.
    Jetzt kann es in der Mainroutine zur Sache gehen, den Puffer solange durchlaufen, bis '\0' gefunden wird fertig.

    also etwa so
    Code:
    char puffer[10];
    char *zeiger_auf_puffer = puffer;
    
    ...
    ...
    int main (void) {
    char einzeichen;
    for (;;) {
    while(!flagvonderISR) ;
    while (*zeiger_auf_puffer) {
      einzeichen = *zeiger_auf_puffer++;
      /*Hier kannst Du mit einzeichen machen was Du willst */
    }
    zeiger_auf_puffer = puffer;
    flagvonderISR = 0;
    }
    Ich bitte um Verständnis für denk/Tippfehler , ich habe es eben aus dem Ärmel geschüttet

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  2. #22
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo
    es sollte auch folgendes funktionieren bei der Stringverarbeitung:
    Code:
    char puffer[10];
    char *zeiger_auf_puffer = puffer;
    
    int main (void)
    {
    #define LEN_STR_1 3
       char teil_str_1 [LEN_STR_1 + 1];  // 3 Byte langer String + \0
    
    #define LEN_STR_2 7
       char teil_str_1 [LEN_STR_2 + 1];  // 7 Byte langer String + \0
    
       for (;;)
       {
          while (!flagvonderISR)
             ;
    
          zeiger_auf_puffer = puffer;
          teil_str_1 = strncpy (zeiger_auf_puffer, LEN_STR_1);
          teil_str_1 [LEN_STR_1] = '\0';  // String in C abschliessen
    
          zeiger_auf_puffer += LEN_STR_1;  /* JA, die Vorgaengerlaenge */
          teil_str_2 = strncpy (zeiger_auf_puffer, LEN_STR_2);
          teil_str_2 [LEN_STR_2] = '\0';  // String in C abschliessen
    
          /* Und ab hier kann mit den beiden Teil-Strings gearbeitet werden */
    
          flagvonderISR = 0;
    }
    Aber Vorsicht mit den str...-Befehlen. Die fressen enorm viel Speicherplatz.
    Lieber Asuro programieren als arbeiten gehen.

  3. #23
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Ja genau die string,h ist da auch eine gute Anlaufstelle, kommt immer drauf an, was man will, einzelne Zeichen kriegen, oder Teilstrings man kann eine Zeichenkette nach Leerzeichen/sonderzeichen zerschlagen, viele Wege führen nach Rom

    Ich mein die string.h ist nicht sooo Speicherintensiv, da ist die stdio.h schon schlimmer, kommt auch auf den Kontroller an, auf dem Tiny 13 ist es vielleicht übertrieben die Bibliotheken einzubinden, ein M32 lacht drüber.
    Wie dem auch sei, der Roberto kriegt es schon hin, neue Sprache zu erlernen ist immer mit Schmerz verbunden
    Ich bin zur Zeit mit Perl dran, zwar nicht µC bezogen, aber hab da ähnliche Schwierigkeiten...

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  4. #24
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    58
    Beiträge
    576
    Hallo

    Soll ich dazu einen neuen Thread aufmachen?
    Mache mal hier weiter:
    https://www.roboternetz.de/phpBB2/vi...=303385#303385

Seite 3 von 3 ErsteErste 123

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress