Array mit printf_P als Hexzahlen ausgeben

Gast #1033573
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren