Forum: Mikrocontroller und Digitale Elektronik 0x00 über UART ausgeben


von Laserbrenner (Gast)


Lesenswert?

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

von Uwe (de0508)


Lesenswert?

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.

von Marius W. (mw1987)


Lesenswert?

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

von Helfender (Gast)


Lesenswert?

int i;
for(i = 0; i < 5; i++)
{
  uart_putc(test[i]);
}

von Laserbrenner (Gast)


Lesenswert?

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

von Verwirrter Anfänger (Gast)


Lesenswert?

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 */

von Laserbrenner (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.