Bettyhacks.com

German - BettyHacks.com => Software => Thema gestartet von: adri am 29. Mär 2008, 21:10

Titel: einlesen eines strings über die serielle schnittstelle
Beitrag von: adri am 29. Mär 2008, 21:10
Hi,

ich möchte einen string über die serielle schnittstelle einlesen, mein derzeitiger code sieht so aus, funktioniert aber leider nicht ganz.


unsigned char inp[100];
unsigned int inp_len;
unsigned int z;
inp_len = serial_getc();
for (z=1;z<inp_len; z++){
info = serial_getc();
inp[z]=info;
}
inp[z+1]=0;
draw_string(0,18,(char*)inp,3,DRAW_PUT);


Das Format der Daten ist 1 byte die länge des strings und dann der eigentliche String aber ohne char 0 am ende.
die länge wird richtig übertragen, aber es wird nichts angezeigt!
Ich kann C noch nicht so gut, weis irgenwer ne Lösung?

Gruß Adri
Titel: Re: einlesen eines strings über die serielle schnittstelle
Beitrag von: Telekatz am 29. Mär 2008, 22:43
Hallo Adri,

for (z=1;z<inp_len; z++){

Da inp_len=1 ist z<inp_len falsch und die Schleife wird nich durchlaufen. Schleife mit z=0 initialisieren.

inp[z+1]=0;

Müsste glaub ich inp[z]=0; lauten, da z in der Schleife ja bereits incrementiert wurde.

Gruß
Telekatz
Titel: Re: einlesen eines strings über die serielle schnittstelle
Beitrag von: adri am 29. Mär 2008, 22:45
Hi Telekatz,

danke für die Antwort, das Problem hab ich schon in meinem Code gelöst,
das Problem dass nichts auf dem LCD angezeigt wird besteht immer noch  :(

Gruß Adri
Titel: Re: einlesen eines strings über die serielle schnittstelle
Beitrag von: Telekatz am 29. Mär 2008, 22:49
Wie sieht der Code denn jetzt aus?
Titel: Re: einlesen eines strings über die serielle schnittstelle
Beitrag von: adri am 29. Mär 2008, 22:52

unsigned char song[100];
unsigned int len_d;
unsigned int z;
unsigned char info;
len_d = serial_getc();
for (z=0;z<len_d; z++){
info = serial_getc();
song[z]=info;
}
song[z]=0x00;
draw_string(0,36,(char*)song,3,DRAW_PUT);

Titel: Re: einlesen eines strings über die serielle schnittstelle
Beitrag von: adri am 29. Mär 2008, 23:56
Ich hab die Lösung gefunden:

inp[z]=(char)info;

Gruß Adri