www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS232 Kommunikation - Protokoll


Autor: Andreas Riegebauer (blackpuma)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schönen Abend!

Ich möchte vom PC aus mit meinem uC sprechen. Ich weiß aber nicht wie 
ich das am besten anstelle. Soll ich am PC ein Frame zusammenstellen aus 
ein paar Bytes und das an den uC schicken? Oder soll ich alles einzeln 
schicken? Also ich meine das so: Ich habe ein Visual C# Programm wo ich 
z.B. 5 Relais schalte. Soll ich nun pro Relais einen Datensatz schicken 
oder den Status aller Relais immer schicken auch wenn sich nur der eines 
verändert?

Soll ich am uC die Empfangenen Daten sofort Auswerten, also jedes 
einzelne Byte, oder den ganzen Datensatz empfangen und dann erst 
Auswerten? Hat jemand von euch ein Codebeispiel dazu?

Wie löst man das?

BG
Andreas

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn es wirklich nur 5 Relays sein sollen kannst du dir es ganz einfach 
machen. Sende einfach ein byte( also 8bit). Jedes Relay ordnest du ein 
bit zu und schon geht es. Das hat den Vorteil das es erstmal recht 
schnell umzusetzen ist und du dabei bestimmt auch etwas erfahrung 
sammelst. Wenn du später mehr machen willst, kann man immer noch auf ein 
etwas kompizierteres Protokoll wechseln.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Fresse, das kannst du halten wie ein Dachdecker.
Hauptsache der uC versteht es. Denk dir ein Protokoll
aus und arbeite damit. Wenn du mit einem Byte auskommst
dann schick nur ein Byte. Wenn du mehr brauchst dann schick
mehr.

Autor: Oliver Döring (odbs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bastele mir gerne "menschenlesbare" ASCII-Protokolle. Das Zeichen 
zum Abschluß eines Kommandos oder einer Abfrage wäre dann natürlich 
CR/LF. So bleibt es flexibel, du kannst verschiedene Kommandos 
definieren, die unterschiedlich lang sein dürfen und beliebige Mengen 
von Parametern haben können. Außerdem ist ein ASCII-Protokoll praktisch 
zum Debuggen.

Das Schema ist immer wie folgt:

Die Interrupt-Routine für den Empfang auf der seriellen Schnittstelle 
sammelt alle Zeichen in einen globalen Puffer. Wird CR oder LF 
empfangen, wird dieser Puffer in einen zweiten "Parser"-Puffer kopiert 
und das Parser-Flag gesetzt.

In der Hauptschleife werte ich das Flag aus. Ist es gesetzt, rufe ich 
den Parser auf.

Im Parser untersuche ich den Puffer, separiere Kommando und dazugehörige 
Daten, konvertiere Strings in Integer, rufe die entsprechenden 
Funktionen auf oder setze entsprechende Flags und globale Variablen, die 
im Hauptprogramm bearbeitet werden. Zum Schluß lösche ich das 
Parser-Flag.

Dieses Schema ist intuitiv zu verstehen, der Code ist einfach und lässt 
sich gut lesen.

Autor: Giuseppe G. (Firma: ACS) (gcrax)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas,
schau mal schnell hier, ist genau das was du machst nur mit 6 statt 5 
Ports.
Steht auch drin, wie ich es gelöst hab, auch wenns deutlich einfacher 
geht...

Beitrag "verkaufe mein CDC Gerät"

LG Giuseppe

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.