Hallo, ich habe ein kleines Problem mit der guten UART lib. von Peter Fleury (http://jump.to/fleury). Wenn ich z.b. uint8_t test[5]={0xFF,0x20,0x00,0xFE,0x33}; mit uart_puts((char*)test); über die UART an mein Rechner sende, kommt nur 0xFF,0x20 an. Bei 0x00 wird die übertragung immer abgeprochen. Jetzt habe ich schon gelesen das 0x00 als endzeichen für ein String benutzt wird, was ja bei mir auch prima klapt aber in meinen Fall nicht gewünscht ist! Habt ihr eine idee wie ich doch noch zu meinen 0x00 komme?? gruß Matthias
Hallo, die Routine ist ja genau für die Stringausgabe geschrieben, also iteriere selbst über die Anzahl der Bytes im Array und gebe sie direkt aus.
Der Fehler liegt wahrscheinlich in Zeile 42 von deinem Code. Da steht sicherlich ein uart_puts(test). Und wenn puts auf ein 0x00 trifft, heißt das der String ist zu Ende. Also bleibt dir wohl nichts anderes übrig, als die Werte mit uart_putc manuell zu übertragen. Gruß Marius
ach Mensch da hät ich auch selber drauf kommen können, vielen Dank euch. Habt Ihr eine Idee wo der gute Peter Fleury auf das 0x00 reagiert? Ich bin seine lib. schritt für schritt durch habe es aber nicht finden können. gruß Matthias
1 | void uart_puts(const char *s ) |
2 | {
|
3 | while (*s) // Solange das wo s drauf zeigt != 0x00 |
4 | uart_putc(*s++); |
5 | |
6 | }/* uart_puts */ |
Mensch seit Ihr schnell hier, ja die Stelle kommt mir sehr bekannt vor, hab die bedingung aber nicht erkannt, da fehlt mir wohl noch ein wenig übung :) Noch mal vielen Dank das du dir die Mühe gemacht hast, mir die passende Stelle rauszusuchen. Schönen Abend Matthias
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.