Array mit printf_P als Hexzahlen ausgeben

Gast #1033573
Hallo,

ich habe folgende Variable:
1
unsigned char Telegramm[30];
2
unsigned char Zeiger;

das Array wird mit Daten von der seriellen Schnittstelle befüllt.
Das Telegramm hat immer eine unterschiedliche Länge
Die aktuelle Arraylänge steht in der Variable Zeiger.

Nun steht z.B. folgendes im Telegramm

0xBC, 0x12, 0x23, 0xF3, 0x65, 0x05, 0x00, 0x32, ...

Ich will nun mit der Funktion f16_printf_P die Daten in ein Textfile auf 
meine SD-Card schreiben.
Die Funktion und wird wohl ähnlich der Funktion printf_P sein.

Wie muss ich die Funktion befüllen, dass im Textfile dann als String 
(lesbar) BC1223F365050032 zu sehen ist. und nicht irgendwelche 
Sonderzeichen !!

Danke
Gruß Alex
Gast #1033636
Hallo Holger,

an so was habe ich auch schon gedacht, allerdings gefällt mir das nicht 
so, da die Funktion sehr oft aufgerufen wird. Es wird dann jedes Zeichen 
einzeln auf die SD-Karte geschrieben. Das nimmt viel Zeit in Anspruch.
Kann man das nicht schon einmal in eine Variable richtig stellen, und 
dann in einem Satz mit der f16_printf_P Funktion auf die SD-Karte 
schreiben.

Gruß Alex
Gast #1034229
Momentan sieht meine Funktion so aus, die Daten auf die SD-Karte zu 
schreiben.
Wie kann ich nun die drei f16_printf_P Funktionen auf eine reduzieren.
Ich weiß nicht wie ich die 3 Strings dann in eine Variable schreiben 
kann. Das mit den Pointern check ich nicht so wirklich ab.
Und dann die eine Variable komplett als einen String an die f16_printf_P 
Funktion übergeben.
1
  void EIB_log_write(void)
2
  {
3
    unsigned char i;
4

5
    if (Telegramm[0] == 0xBC)
6
    {
7
      File *logfile = f16_open(EIBlogStatus.log_datei,"a");
8

9
      if (logfile) 
10
      {
11
        f16_printf_P(logfile,PSTR("%2i.%2i.%2i;%2i:%2i:%2i;"),
12
                  TM_DD, TM_MM, TM_YY, TM_hh, TM_mm, TM_ss, Telegramm);
13

14
        for(i=0;i<Length_save+8;i++)
15
          f16_printf_P(logfile,PSTR("%x;"),Telegramm[i]);
16

17
        f16_printf_P(logfile,PSTR("\r\n"));
18
        f16_close(logfile);
19
      }
20
    }
21
  }

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.