Forum: Mikrocontroller und Digitale Elektronik Verständnisproblem UART und "Datentypen"


von Thorben (Gast)


Lesenswert?

Hallo und guten morgen,

ich habe ein kleines Verständnisproblem beim UART und Datentypen.
Ich habe die UART lib von Peter Fleury integriert.
Kann damit an Hterm auch strings senden, diese kommen an und 
funktioniert auch soweit. Die Funktion sendet ja aber immer Daten vom 
Typ char.

Was ist aber, wenn ich die Daten nicht "lesbar" brauche an Hterm, 
sondern mit einem PC-Programm einfach Variableninhalter vom typ int8_t 
oder int16_t hin und herschieben möchte? Also wie sende ich im Prinzip 
zahlen anstatt "Zeichen"?

Danke.

von Peter II (Gast)


Lesenswert?

Thorben schrieb:
> Also wie sende ich im Prinzip
> zahlen anstatt "Zeichen"?

es werden immer 8bit* übertragen, auf dieser ebene gibt es keine 
unterschiede zwischen Zeichen und Zahlen.

* Man kann auch 6,7 oder 9 bit übertragen, aber ist nicht wirklich 
gebräuchlich.

von Bronco (Gast)


Lesenswert?

Was Du meinst, nennt sich Protokoll.
Das Protokoll legt fest, in welcher Form welche Daten übertragen werden.
Du kannst z.B. ein (salopp gesagt) "Klartext-Protokoll" haben, wo Deine 
Daten als lesbare ASCII-Zeichen übertragen werden, so daß man es mit 
jedem Terminal mitlesen kann.
Du kannst aber auch ein "Binär-Protokoll" haben, wo die Daten in 
beliebiger Binärdarstellung übertragen werden.
Das einzige, was wichtig ist, ist daß beide Gegenstellen (µC und PC) das 
gleiche Protokoll verwenden.

von xfr (Gast)


Lesenswert?

int8_t ist nichts anderes als ein (signed) char, das kannst Du direkt an 
die UART-Routine übergeben. Längere Integers musst Du vorher in einzelne 
Bytes zerlegen. Das geht auf unterschiedliche Weise. Die sicherste* ist 
folgende:
1
uint16_t x = 12345;
2
3
uart_putc(x >> 8); // das höherwertige Byte senden
4
uart_putc(x);      // die niederwertige Byte senden

Beim Empfänger:
1
uint16_t x;
2
3
x = ((uint16_t) uart_getc()) << 8; // das höherwertige Byte speichern
4
x |= uart_getc();                  // das niederwertige Byte speichern

In einer realen Anwendung bräuchte man an der Stelle natürlich auch noch 
eine Fehlerbehandlung. Also was passiert, wenn mal ein Byte verloren 
gehen sollte ...

* "sicher" heißt in dem Zusammenhang, dass jeder Sender/Empfänger die 
Bytes in der richtigen Reihenfolge verarbeitet, auch wenn er sie intern 
unterschiedlich im Speicher ablegt, um mit den Werten zu rechnen. Das 
kann nämlich je nach Prozessorplattform unterschiedlich sein.

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.