Hallo,
wie lässt sich eine serielle Kommunikation elegant in einer Hochsprache
umsetzen?
Problem:
> PC sendet einen Befehl
< Gerät antwortet dem Befehl entsprechend
Sowohl der Befehl als auch die Antwort unterscheiden sich in ihrem
Format, teilweise ist die Antwort paketweise und muss vom PC bestätigt
werden.
Drumherum braucht man natürlich Funktionen zum Ansprechen der
Schnittstelle, Fehlerbehandlung, Herstellen/Prüfen der Verbindung zum
Gerät, etc. die dann ggf. auch von höheren Funktionen benutzt werden.
Wie baut man so ein Programm auf? Einen Haufen Prozeduren/Funktionen
bekommt man bei einem bottom-up Ansatz, hat dann aber am Ende teilweise
ziemlich spezialisierten Code (jeder Gerätebefehl bekommt eine eigene
Funktion, die dann aber teilweise redundaten Code enthält).
Sollte man eine allgemeine Funktion Befehl() bauen, wo aus einer Liste
ein Handler für den Befehl ausgewählt wird?
Bringt ein objektorientierter Ansatz evtl. etwas?
Und wozu gehört dann die serielle Schnittstelle vom PC (gehört das
Öffnen der Schnittstelle zum Geräte-Objekt, oder habe ich ein Objekt der
lokalen seriellen Schnittstelle - und wie verbindet man sowas?)?
Aber selbst wenn das als Objekt gekapselt wird, vielleicht so in der
Art:
1 | Geraet = Device.new()
|
2 | Geraet.supported_baudrates = (9600,56700)
|
3 | ..
|
4 | antwort = Geraet.befehl("CMD param")
|
muss die Antwort unterschiedlich behandelt werden.
Wie geht so was allgemein?