Suche Tipps zur Speicherung von Daten in Struct oder Klasse



  • Moin,

    erstmal Hintergrundinformation: Wir entwickeln ein Modellbootautopiloten, und es werden jede menge Daten über Funk ausgetauscht. Dazu gehören Steuerangaben, Koordinaten, Status Infos, Licht, usw.

    Um diesen Datenstrom zu managen haben wir uns ein Protokoll überlegt.

    Synchronisationszeichen *
    Endzeichen $
    

    Nach dem Synchrozeichen kommen erstmal 4 Bytes.

    1. Byte: Steuerangaben
    2. Kran
    3. Autopilot
    4. Status
    

    In jedem Byte können 8 Infos übertragen werden. Wir schreiben dann in die jeweiligen Bytes, ob die jeweilige Info hinter den 4 Bytes steht.
    Beim ersten Byte sieht das so aus.

    1. Bit Servo
    2. Motor
    3. Querstrahlruder
    

    Wenn eins der Bits auf 1 ist, wird nach den 4 Bytes die Info abgerufen.
    Ein bsp:

    * 0x01 0x00 0x00 0x00 (erst die 4 Bytes, Steuerbyte/Servo auf 1 also kommt als nächstes die Servoangabe z.b.) 0xff (255)$
    

    Wenn das Teil decodiert wird kommt dabei raus, dass der Servo auf 255 kommt.

    Nun zu der Frage. All die Daten wollen auch verwaltet werden. Um den Datenfluss etwas einzugrenzen, läuft ein Timer, und löst alle 100ms (oder andere Zeit) einen Interrupt aus, und sendet alle Daten, die seit der letzten Übertragung gespeichert wurden.

    Der Mikrocontroller, muss Daten empfangen und Speicher und weiterleiten, bzw. wieder an den PC zurücksenden.
    Habt ihr eine Idee, wie man ein System aus Klassen entwerfen kann, das Daten speichert, (Funktionen zum decodieren schon fertig) und anzeigt, welche Daten noch nicht gesendet worden sind, wenn eine anfrage vom Interrupt kommt.

    MfG
    Philipp



  • Ich würde eine Klasse "Nachricht" verwenden, die das codieren der einzelnen Steueranweisungen übernimmt. Diese kann die Nachrichten dann jeweils als std::string oder std::vector<char> zusammenbauen und in einer std::queue<...> unterbringen. Der Interrupt muß dann nur diese Queue entleeren und die Mitteilungen senden.


Anmelden zum Antworten