einlesen eines strings über die serielle schnittstelle

Begonnen von adri, 29. Mär 2008, 21:10

« vorheriges - nächstes »
Nach unten

adri

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

Telekatz

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

adri

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

Telekatz

Wie sieht der Code denn jetzt aus?

adri

#4
29. Mär 2008, 22:52 Last Edit: 29. Mär 2008, 23:02 by adri

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);


adri

Ich hab die Lösung gefunden:

inp[z]=(char)info;

Gruß Adri

Nach oben