Forum: Mikrocontroller und Digitale Elektronik Wie müssen die Register-Daten bei einer UART Kommunikation aussehen?


von Timo (Gast)


Lesenswert?

Hallo,

ich hab mit dem STM32 und HTERM windows eine serielle Kommunikation 
programmiert. Ich sende Strings und Zeiten zu hterm.

Wie müsste ich denn jetzt meine Case Strukturen coden, um eine Steuerung 
zu ermöglichen und muss ich HEX Zeichen senden ?

also bspw.

ich hab ein Byte-array das zwei byte groß ist wo meine daten die ich 
empfange reingeschrieben werden.

MyBuffer[] = ...

wenn ich jetzt per Hterm ein  0xAA 0xBB sende, soll eine Funktion auf 
meinem Controller ausgeführt werden.

Pseudocode:
1
CASE MyBuffer 
2
3
fall 1   0xAA 0xBB
4
-> zeitausgabe()
5
6
fall 2   0xAB 0xFF
7
-> sendestring(Zeit erreicht)


wuerde mann das so machen??
Oder wie macht man so eine Kommunikationsstruktur damit man via uart was 
steuern kann?

Ich lese auch immer mann soll einen Wert in das Register XYZ schreiben.

In diesem Fall waere doch mein register das MyBuffer das 16bit gross ist
und ich muss 0xAA und 0xBB schreiben damit ich die Zeit zurueck bekomme 
oder ?

Viele Dank im vorraus fuer Hilfe.
Timo



sorry ich bin erst 19 und arbeite nur mit dem STM32 , ich find das so 
spannend und interessant!

von Achim M. (minifloat)


Lesenswert?

Timo schrieb:
> Wie müsste ich denn jetzt meine Case Strukturen coden

Genau so wie du es gemacht hast. Break und default-Zweig nicht 
vergessen.
Hex oder ASCII ist nur eine Anhelegenheit der Darstellung einer oder 
mehrerer Zahlen.
Wenn die Kommandos immer nur 2 Byte lang sind, lohnt sich eine Union, 
die die zwei empfangenen Bytes in eine 16bit-Zahl zusammenfasst. Man 
könnte dann auch mit einer Sprungtabelle arbeiten. Ein guter Compiler 
dampft das aber bei entsprechender Optimierung sowieso ein.

Ein weiterer Weg wäre die Verwendung eines Parsers. Du fasst also z.B. 
erstmal alle Kommandos zusammen, die mit 0xAA beginnen. Das endet dann 
in einem verschachtelten Switch/Case. Da gibts hier im Forum auch 
mehrere Ansätze, die sowas mehr oder weniger automatisiert als Code 
erzeugen.

Timo schrieb:
> sorry ich bin erst 19

Und? Macht doch nix. Danke, dass du sauber formulierte Fragen stellst 
und außerdem die gängigen Regeln der Orthografie beherzigst. Daumen 
hoch, so Leute wie du sind hier gern gesehen!

mfg mf

von Timo (Gast)


Lesenswert?

Hi MF,

vielen Dank fuer das Kompliment!

Das mit dem Parser hoert sich sehr interessant an. Hast du vielleicht 
einen Link? Ich hab jetzt angst, das ich nicht den richtigen Thread 
finde.

Beitrag "Auswertung RS232-Befehle"



Viele Gruesse
Timo

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.