LCD: Daten einzuschreiben

OP (Firma: TUD) #3787287
Lesenswert?

Hallo,

Das LCD ILI9325 habe ich schon richtig konfiguriert, ich kann jetzt aber 
nur String auf dem LCD schreiben wie im folgenden:

/**
 * \param ul_x: X coordinate of string top left corner
 * \param ul_y: Y coordinate of string top right corner
 * \param p_str String to display
*/
void ili9325_draw_string(uint32_t ul_x, uint32_t ul_y, const uint8_t 
*p_str);

z.B. für

ili9325_draw_string(uint32_t ul_x, uint32_t ul_y, (uint8_t*)"hallo")

wird das wort hallo auf der definierten Lage dargestellt.

Mein Problem ist, wie die ausgerechnete Variable auf dem LCD 
darzustellen kann.

Vielen Dank für jede Antwort
Gast #3787297
Lesenswert?

dafür wird die Variable in einen String umgewandelt und in einem Buffer 
zwischengespeichert. Dann wird der String aus dem Buffer ausgegeben.

Da gibt es bestimmt eine Funktion einen Buffer auszugeben.
Gast #3787303
Lesenswert?

Dein Problem hat nichts mit dem LCD zu tun. Falscher Titel.

Vielmehr fehlt Dir die Information, auf welche Weise eine integer- oder 
float-Variable als String dargestellt werden kann.

Dazu schau mal unter: utoa, itoa und (s)printf (genauer: unter den 
format specifiern).
OP (Firma: TUD) #3787341
Lesenswert?

ich schrieb:
> dafür wird die Variable in einen String umgewandelt und in einem Buffer
> zwischengespeichert. Dann wird der String aus dem Buffer ausgegeben.
>
> Da gibt es bestimmt eine Funktion einen Buffer auszugeben.

Hallo,

Danke für deine Antwort.

Wie kann eine Variable in String umgewandelt werdn? Ich hatte durch
Array und Pointer probiert, aber geht nur für String. z.B.

uint8_t i;
uint8_t testdata[4]= "1001";
char *p_str = testdata;
for (i=0; i<4; i++)
{
   p_str = testdata[i];

   lcd_draw_string(ul_x, ul_y, &p_str);
}

so wird 1001 dargestellt, und wenn ich eine Variable 1001 darstellen
möchte, wie kann ich die umwandeln?
#3787352
Lesenswert?

Xiaotang Zhou schrieb:

> Wie kann eine Variable in String umgewandelt werdn?

Indem du eine der Funktionen benutzt, die dir zb aus einem int einen 
String erzeugen
1
void lcd_draw_int( uint32_t ul_x, uint32_t ul_y, int value )
2
{
3
  char txt[12];
4

5
  itoa( value, txt, 10 );
6
  lcd_draw_string( ul_x, ul_y, txt );  
7
}
8

9
...
10
  lcd_draw_int( 10, 10, 128 );
11

12
  int i = 1001;
13
  lcd_draw_int( 10, 10, i );
14
...

Näheres zu den Funktionen itoa, ltoa, utoa, ... weiß den C Buch

PS: Bist du sicher, dass du für die Bildschirmkoordinaten einen uint32_t 
benutzen willst? Der Zahlenbereich eines uint32_t ist so dermassen groß, 
dass es wohl im ganzen Universum keinen Bildschirm mit einer derartig 
hohen Auflösung geben dürfte.
OP (Firma: TUD) #3787365
Lesenswert?

Karl Heinz schrieb:
> Xiaotang Zhou schrieb:
>
>> Wie kann eine Variable in String umgewandelt werdn?
>
> Indem du eine der Funktionen benutzt, die dir zb aus einem int einen
> String erzeugen
>
>
1
> void lcd_draw_int( uint32_t ul_x, uint32_t ul_y, int value )
2
> {
3
>   char txt[12];
4
> 
5
>   itoa( value, txt, 10 );
6
>   lcd_draw_string( ul_x, ul_y, txt );
7
> }
8
> 
9
> ...
10
>   lcd_draw_int( 10, 10, 128 );
11
> 
12
>   int i = 1001;
13
>   lcd_draw_int( 10, 10, i );
14
> ...
15
>
>
> Näheres zu den Funktionen itoa, ltoa, utoa, ... weiß den C Buch
>
> PS: Bist du sicher, dass du für die Bildschirmkoordinaten einen uint32_t
> benutzen willst? Der Zahlenbereich eines uint32_t ist so dermassen groß,
> dass es wohl im ganzen Universum keinen Bildschirm mit einer derartig
> hohen Auflösung geben dürfte.


Hallo

Danke für deine Antwort, ich bin noch anfanger, deswegen einige 
Vorkenntnisse kenne ich noch nicht.

Ich hatte gerade durch andere Methode realisiert.

z.B für eine Variable uint32_t data = 25:

2 und 5 werden jeweils in dem Array gepeichert durch

testdata[0] = data % 10 + '0';
testdata[1] = data / 10 + '0';

es funktioniert, mit '0' wird jedes Zahl in String umgewandelt.
#3787464
Lesenswert?

Xiaotang Zhou schrieb:

> Danke für deine Antwort, ich bin noch anfanger, deswegen einige
> Vorkenntnisse kenne ich noch nicht.

Gerade als Anfänger benötigst du ein C-Buch!

Da sind all diese Dinge, und noch viele mehr, beschrieben. Es gibt keine 
Entschuldigung dafür, kein Buch zu haben.

> es funktioniert, mit '0' wird jedes Zahl in String umgewandelt.

Etwas anderes machen die Funktionen itoa, utoa und wie sie alle heißen 
auch nicht. Nur dass sie mit beliebigen Zahlen im Wertebereich des 
jeweiligen Datenytps klarkommen und dann auch noch, wenn anwendbar, ein 
mögliches Vorzeichen berücksichtigen.

Es gibt eine Reihe von Funktionen in jeder C Bibliothek, die man einfach 
kennen muss. Man kann sich die natürlich immer auch selbst machen, nur 
ist das in vielen Fällen nicht besonders sinnvoll.

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