-
        

Ergebnis 1 bis 4 von 4

Thema: [Sprache C#] Datenstrom von Serieller Schnittstelle verarbeiten

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.266

    [Sprache C#] Datenstrom von Serieller Schnittstelle verarbeiten

    Anzeige

    Hallo

    ich sitze im Moment an der Frage wie ich einen Datenstrom, der von meinem Roboter kommt am Besten wieder in einfach zu verarbeitende Datenobjekte/pakete verwandeln kann. (möglichst effizient)
    Die Daten kommen immer in der Form: (alles in eckigen Klammern entspricht jeweils einem Byte)
    [Startbedingung] [ID LowByte] [ID HighByte] [Length] [ersten Datenbyte] .... [letztes Datenbyte] [Kontrollbyte] [Endbedingung]

    Diese Byteabfolge soll dann in ein entsprechendes Datenobjekt zerlegt werden das inetwa so aussieht:

    uint ID
    byte Length
    byte[] Datenbytes
    byte Kontrollbyte

    Meine bisherige Idee ist alle Bytes zwischen einer Startbedinung und einer Endbedingung in einen Datenpuffer (Liste) zu schreiben und mit einem extra Thread diesen Datenpuffer zu verarbeiten.
    Allerdings habe ich Bedenken, dass sich dann die verschiedenen Threads in die Haare kommen und es zu inkonstenten Daten kommt.
    Deshalb hoffe ich, dass bereits von euch einige vor dem selben Problem standen und mir ihre Lösung davon mitteilen können

    Viele Grüße

    PS. Wie berechnet man am Besten ein Kontrollbyte ?

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.05.2005
    Ort
    Berlin
    Beiträge
    316
    Pipes and Filters. Über Pipes and Filters synchronisierst du deinen Datenfluss. Jeder Filter läuft in einem eigenen Thread. Der erste Filter sitzt an der seriellen Schnittstelle, nimmt einfach die Bytes entgegen und schiebt sie in seine Ausgabe-Pipe.
    Der zweite Filter arbeitet als State-Machine, nimmt die Bytes und Packt sie in die zu erstellende Entity. Immer wenn eine Entity fertig ist, schiebt er sie wieder über seine Ausgabe-Pipe raus.
    Das Längen-Byte würde ich rausnehmen, die Länge kriegst du sicherer über das Byte-Array selbst.

    Es gibt hunderttausend Möglichkeiten, das Kontrollbyte zu errechnen. Eine Möglichkeit wäre, einfach alle Bytes per XOR zu verknüpfen. Aufwändiger, aber sicherer ist eine Huffman Codierung. Da geht dir aber Bandbreite verloren. Vorteil ist eine sehr viel höherer Fehlererkennungsfähigkeit und sogar die Möglichkeit, Fehler zu korrigieren.
    Geändert von lokirobotics (23.12.2011 um 13:51 Uhr)

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.266
    Vielen Dank für deine Hilfe, ich werde mal versuchen so ein Architekturmuster die nächsten Tage zu implementieren und melde mich dann zurück.
    PS. dein Link funktioniert nicht.

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.05.2005
    Ort
    Berlin
    Beiträge
    316
    WTF? Ein l am Ende vergessen. Link is aktualisiert.

Ähnliche Themen

  1. Aktivitätsanzeige an serieller Schnittstelle
    Von Bot-Builder im Forum Elektronik
    Antworten: 11
    Letzter Beitrag: 20.10.2009, 09:17
  2. ISP mit 5V serieller schnittstelle
    Von Roboman93 im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 13.06.2008, 11:20
  3. Zahl an serieller Schnittstelle
    Von paula im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 1
    Letzter Beitrag: 13.07.2006, 11:35
  4. Serieller schnittstelle
    Von flownfluid im Forum PIC Controller
    Antworten: 7
    Letzter Beitrag: 10.11.2005, 16:18
  5. Serieller Datenstrom
    Von Goldfinger im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 03.05.2005, 20:55

Berechtigungen

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