XCP Frame aus Bytestrom filtern

Gast #2377765
Lesenswert?

Hallo Leute,

ich versuche mich momentan an einer XCP Verbindung die über die serielle 
Schnittstelle läuft.
Also praktisch USART - RS232.
Laut XCP Spezifikation ist dies möglich und nennt sich XCP over Sxi.

Mein Problem dabei ist, ich weis nicht wie ich eine eingehende XCP 
Nachricht aus dem RX Bytestream herausfiltern soll.
Im angehängten Bild ist der Aufbau eines XCP over Sxi - Frames zu sehen.
Aber im Gegensatz zu zB PPP Frames beginnt und endet dieser Frame mit 
keinem speziellen Steuerzeichen.

Kennt sich damit zufällig jemand aus? Wie würdet ihr einen solchen Frame 
"erkennen"?

Hab mir schon gedacht über einen Timer Übertragungspausen zu messen. 
Empfange ich mehrere Bytezeiten nichts kann die Übertragung als zu Ende 
angenommen werden.

Wobei ich das eher für Pfusch halte, vor allem wenn evtl. noch andere 
Sachen an der Seriellen empfangen werden sollen.

Jemand eine Idee?

Viele Grüße,
hiko
Angehängte Dateien:
Gast #2378666
Lesenswert?

Sorry, aber deine Frage ist zu allgemein und doch zu speziell.

Zu speziell, weil hier kaum einer Zugriff auf die ASAM-Specs haben wird 
und wenn dann müsste er diese auch erst durcharbeiten.

Zu allgemein, weil du nicht beschreibst aus was du die Daten heraus 
filtern willst.

Wenn man den Frame-Aufbau in deinem Bild anschaut, so sieht es danach 
aus als würde auf dem seriellen Bus zu dem Zeitpunkt nur der XCP-Frame 
übertragen (und dessen Länge steht ja im Header).
Also wird entweder der Bus ausschließlich für XCP sein oder es wird sich 
um eine Master-Slave Kommunikation handeln (was bei XCP der Normalfall 
ist). Und dann weiß der Master ja automatisch dass die Antwort eben auch 
ein XCP-Frame ist.

Den Frame als Spy heraus lesen geht dann nur, wenn man die Kommunikation 
auf dem Bus von Anfang an mit macht oder wenn die Pausen zwischen den 
Anfragen des Masters ausreichend groß sind, dass man sie detektieren 
kann.

Gruß,
TManiac
Gast #2378707
Lesenswert?

Ja, hab mich jetzt auch dazu durchgerungen das erste empfangene Byte als 
Längenbyte zu werten und dann eben genau soviele Bytes zu lesen. Nur 
schiefgehen darf dabei dann nix...

Die Specs gibts btw für jeden verfügbar, sind Teil des (kostenlosen) 
Basictreiber den es bei Vector gibt. Aber viel Lektüre ist es 
wirklich... :)

Grüße,
hiko

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren