Forum: Mikrocontroller und Digitale Elektronik sprintf und gLCD


von Tobias E. (doenges2)


Lesenswert?

Hallo,

ich habe mittlerweile eine eigene Funktion geschrieben die sehr gut den 
Text auf mein Display schreibt.
Nun möchte ich der allgemein bekannten Funktion sprintf sagen können, 
das sie den fertigen String aus ihrer Funktion an meine eigene Funktion 
schicken soll!

Wie kann ich das machen?
Hat jemand eine Idee?

Gruß

Tobias

von Karl H. (kbuchegg)


Lesenswert?

Tobias Eckhardt wrote:
> Hallo,
>
> ich habe mittlerweile eine eigene Funktion geschrieben die sehr gut den
> Text auf mein Display schreibt.
> Nun möchte ich der allgemein bekannten Funktion sprintf sagen können,
> das sie den fertigen String aus ihrer Funktion an meine eigene Funktion
> schicken soll!

gar nicht.

>
> Wie kann ich das machen?

Indem du sprintf so benutzt, wie das vorgesehen ist.
Du stellst sprintf() einen character Buffer zur Verfügung
und sprintf pinselt seine Ausgabe dort hinein.
Was du danach mit diesem String-im-Char-Buffer machst ist
alleine dein Bier. Zb. kannst du ihn an deine LCD Routine
übergeben


   char Buffer[128];

   sprintf( Buffer, "%d", 35 );
   glcd( Buffer );

> Hat jemand eine Idee?

C-Buch lesen.

von Gast (Gast)


Lesenswert?

Vielleicht suchst du sowas:
1
 #include <stdio.h>
2
3
    static int uart_putchar(char c, FILE *stream);
4
5
    static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL,
6
                                             _FDEV_SETUP_WRITE);
7
8
    static int
9
    uart_putchar(char c, FILE *stream)
10
    {
11
12
      if (c == '\n')
13
        uart_putchar('\r', stream);
14
      loop_until_bit_is_set(UCSRA, UDRE);
15
      UDR = c;
16
      return 0;
17
    }
18
19
    int
20
    main(void)
21
    {
22
      init_uart();
23
      stdout = &mystdout;
24
      printf("Hello, world!\n");
25
26
      return 0;
27
    }
Das ist ein Beispiel aus der avr-libc-doku. 
http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html

von Gast (Gast)


Lesenswert?

Edit:
Das Beispiel bezieht sich zwar nur auf UART, aber jede andere 
Ausgabemethode funktioniert ebenso.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.