-
        

Ergebnis 1 bis 5 von 5

Thema: Serielle Übertragung mehrerer Variablen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    05.12.2007
    Beiträge
    12

    Serielle Übertragung mehrerer Variablen

    Anzeige

    Hai,

    mein Problem ist folgendes:
    ich möchte zwei µCs (Atmel Mega, mit Bascom-Software) miteinander verbinden. Das ganze über eine serielle Schnittstelle, also RS-232.
    Der eine soll jetzt möglichst schnell hintereinander mehrere Variablen senden, mit denen der Empfänger dann was machen soll. Nun meine eigentliche Frage: Wie erkennt der Empänger wo die eine Variable aufhört und die nächste anfängt??
    Ist wahrscheinlich eine ziemlich dämliche Frage aber ich komm einfach zu keiner Lösung...


    Vielen Dank schonmal...

    Grüße die Giraffe

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Wenns ne Bytevariable ist, dann ergibt sich das bei RS232 von selbst.
    Wenn die Variable(n) grösser sind, dann wird zwangsweise ein Protokoll fällig.

    Am einfachsten: ein Startzeichen, Trennzeichen und Endzeichen für nen Satz. Als Zeichen idealerweise Werte verwenden, die die Variable selbst nicht oder nur selten erreicht.

    z.B wenn die Werte nur von 0 bis 100 gehen, dann z.B. 200 als Start, 201 als Datentrenner und 202 als Endzeichen.

    Beim I2C könntest dir das sparen, da dort pro "Datensatz" die Daten in nem Array gespeichert werden können; werden die Variablen also immer in der gleichen Reihenfolge gesendet, dann kannst du mit nem Index immer auf die jeweilige Variable drauf.
    #ifndef MfG
    #define MfG

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    WIllst du deine Variablen als ASCII übermitteln oder binär ?

    However, um was damit anzufangen, müssen der Sender und der Empfänger wohl sowieso einige Vereinbarungen treffen, also z.B. die Variablenlänge und den Datentyp.

    z.B CSV-Format (Excel) : da werden ASCII-Datensätze ausgetauscht, wobei die einzelnen Variablen durch vereinbarte Trennzeichen getrennt sind ( ein semikolon ; ist beliebt)
    Aber ob eine Variable ein Text, eine Zahl oder sonstwas ist, muss vereinbart werden.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.02.2005
    Ort
    NRW-Bergisches Land
    Beiträge
    311
    Hängt von deinem "Protokoll" ab.
    Musst halt am Empfänger nachvollziehen können welche Var grad rein kommt.
    Es gibt viele Möglichkeiten.
    1. Der Empfänger fragt eine bestimmte Var an.
    2. Du sendest den Var-Namen mit "A=1234" ; "B=678" und der Empfänger zerlegt den String und weiss, das hinter dem "=" der Var-Wert kommt.
    3. Du sendest immer alle Variablenwerte in einer festen Reihenfolge, welche durch ein bestimmtes Zeichen getrennt sind.
    Auch wenn sich einige Werte gar nicht geändert haben.
    Z.B.: "1234,678,4567,0000"
    Der Empfänger weiss dann, dass zunächst A, nach dem Komma B kommt etc.
    ..........
    Gruß RePi!


    *** Holzhacken ist deshalb so beliebt, weil man bei dieser Tätigkeit den Erfolg sofort sieht. ***
    *** (Albert Einstein) ***

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    05.12.2007
    Beiträge
    12
    Hai

    schonmal vielen Dank für die vielen schnellen Antworten

    also I²C scheidet aus > weil Übertragungsstrecke.

    ich würde die Daten gerne binär übertragen. Ich denke das schaffe ich indem ich "Printbin" verwende oder?
    übertragen werden NUR Bytevariablen. Gesendet wird über RS232 allerdings hängt direkt dahinter ein RS485 Wandler aber das sollte ja letztlich egal sein für die Übertragung...

    um ehrlich zu sein weiss ich nicht wie ich die Abfrage realisieren soll... Würde mir jemand ein kleines Beispiel aufschreiben? oben steht noch dass es sich bei Bytes von selber ergibt... heisst das dass ich einfach schreibe:

    Do
    A = Inkey()
    B = Inkey()
    C = Inkey()
    Loop
    End

    das erscheint mit etwas zu leicht / schön um wahr zu sein :P

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •