- LiFePO4 Speicher Test         
Ergebnis 1 bis 7 von 7

Thema: Seriell-RF mehrere Bytes übertragen und auswerten (Gcc)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    37
    Beiträge
    1.225
    Zitat Zitat von oberallgeier Beitrag anzeigen
    Ich habe mein Protokoll dran aufgehängt, dass ich eine führende Kennung bei mehreren Bytes verwende, wobei für sehr wichtige Aktionen die Kennung als Information alleine (also NUR EIN Byte senden!) ausreicht.
    Und das ist ein sehr interessanter Fall, weil man hier nämlich mit einer Kombination aus beiden Techniken arbeiten kann/muss. Du hast einen Protokollkopf (bei dir ein Byte), der mitteilt was für einen Datagrammtyp eigentlich gesendet wird. Der Zustandsautomat müsste folglich das erste Mal eine Prüfung starten, wenn der Protokollkopf vollständig ist. Danach könnte der Code dann warten bis das Datagramm komplettiert wurde. Das reduziert die Anzahl der Zustände auf Datagrammanzahl + 1 anstelle der max. Datagrammlänge bei der reinen Zustandsautomatenlösung.

    Übrigens: In einem union können mehrere Datenstrukturen überlagert werden. Zum Beispiel besagter Protokollkopf, Datagrammtyp1, Datagrammtyp2 etc., womit du gleich auf alles bequem zugreifen kannst.

    Grüße,
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    75
    Beiträge
    1.175
    Blog-Einträge
    1
    Danke für Eure Unterstützung, versuche jetzt zu verstehen.. aber was ich dar nicht erst begreiffe ,wie bekomme ich den Datenframe in die Serielle Übertragung, da hängt bei mir der Hase im Pfeffer, da tue ich mir mit schwer...
    Ich will auch offenlegen was damit geschehen soll:
    ein JoyStick gibt analogX und analogY , jeweils 0...255 aus, das wären 2 Byte, dann muss nochmal 0x00 oder 0xFF als "Bool" übetragen werden. die Ersten zwei Byte sollen 2 Motore steuern(PWM) der "boolsche Wert" stopt oder startet die Motoren....aber irgendwie klemme ich da fest...
    Na ja ich werde mal ein Prog anfangen und kann es dann zur Diskussion stellen..
    Vorerst vielen Dank Euch allen

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    37
    Beiträge
    1.225
    Zitat Zitat von oderlachs Beitrag anzeigen
    Danke für Eure Unterstützung, versuche jetzt zu verstehen.. aber was ich dar nicht erst begreiffe ,wie bekomme ich den Datenframe in die Serielle Übertragung, da hängt bei mir der Hase im Pfeffer, da tue ich mir mit schwer...
    Auch da funktioniert die union/struct-Variante: Anstatt den Puffer zu beschreiben und dann den struct auszulesen befüllst du auf Senderseite den struct mit deinen Daten und iterierst dann beim Senden über den byte-Puffer.

    Grüße,
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.708
    ... In einem union ... mehrere ... überlagert ... womit du gleich auf alles bequem zugreifen kannst ...
    Bequem? Kannst? Bei mir liest sich das "könntest" - wenn ich verstünde was ein union ist. Ok, ein Anfang ist gemacht, ich habe gerade im Kernighan/Ritchie-Sachverzeichnis das union (struct, Struktur) gesucht, gefunden und die Seite aufgeschlagen *ggg*.

    Zitat Zitat von markusj Beitrag anzeigen
    ... Zustandsautomat ... Prüfung starten, wenn der Protokollkopf vollständig ist. Danach ...
    Genau, das ist das Schicke daran:
    Code:
    //...
         }
         /*  Und jetzt das geniale Ergebnis:
           Wenn nun "zeiger" und "telegrammlaenge" gleich sind,
           dann haben wir ein fertig empfangenes Kommando mit
           seiner erwarteten Laenge.        */
         if (zeiger == telegrammlaenge)
         {
    //...
           /* Die Funktionen koennen nun gemuetlich das
              Telegramm auswerten.       */
    
    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    //    Fahre verschiedene Anwendungsprogramme, je nach Nummer 
        if (mein_rx_buff [0] == KOMMANDO_APPS)      // Tastatur-Eingabe "Annkkkk"
        {                                   //   Annkkkk
                                            //    nn =:  01..99 - Programm-Casenummer
                                            //      kkkk  Parameter für Prog
    //      Dekodiere Programmkennziffer im Byte mein_rx_buff 1 und 2
          for ( u8 i=0; i<=1; i++) { s[i] = mein_rx_buff [i + 1]; }
          s[2]  = 0;                        // Markiere Stringende "0"
          nmbr  = atoi ( s );               //
    
    // - - - - - - - - - - - - - - -
    //    case
    //      10      Augen rollen k mal (erstes "k")
    Geändert von oberallgeier (22.09.2013 um 16:00 Uhr)
    Ciao sagt der JoeamBerg

Ähnliche Themen

  1. Mega8 slave transmitter, 2 bytes übertragen mit i2c
    Von wobachm im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 21.01.2012, 22:21
  2. Wie mehrere Bytes über TWI / I2C übertragen?
    Von Teslafan im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 21.01.2012, 22:15
  3. 5 Bytes per UART zwischen 2 µCs übertragen...
    Von Willa im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 18.09.2010, 07:09
  4. UART mehrere Bytes empfangen
    Von homedom im Forum Assembler-Programmierung
    Antworten: 1
    Letzter Beitrag: 01.08.2007, 12:37
  5. Seriell empfangene Bytes zählen, wie geht das?
    Von Toxic im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 1
    Letzter Beitrag: 14.02.2006, 18:30

Berechtigungen

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

12V Akku bauen