www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeitliche Abfolge kontrollieren


Autor: Knut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich möchte gerne serielle Daten (9600 bps 8N1) auf verschiedene 
Teilstrings untersuchen. Wie kann ich programmiertechnisch am besten 
herausfinden, ob ein bestimmter Teilstring direkt im nächsten seriellen 
Protokoll wieder auftaucht. Bspw so, mit 2405:

C9B24056780D
B5B24058890D
A5B24058690D
.
.
.
.
Hmmm, ich steh da etwas auf dem Schlauch.
Hat jemand ein Tipp, wie ich das am besten umsetzen könnte?
VG
Knut

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
merken und dann vergleichen? Wo ist das Problem.

Autor: Pascal H. (pase-h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. In welcher Sprache Programmierst du?
2. Hast du bzw. wie ist dein bisheriges Progamm

Peter schrieb:
> merken und dann vergleichen? Wo ist das Problem.

Er weiss nicht, wie man einen string zerlegt. Dafür bräuchten wir ja 
aber seine Programmiersprache.

Mfg

Autor: Jean Payer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Knut schrieb:
> ob ein bestimmter Teilstring direkt im nächsten seriellen
> Protokoll wieder auftaucht. Bspw so, mit 2405:

Naja in C z.B. so:
char* a = "C9B24056780D";
char* b = "B5B24058890D";
char* c = "A5B24058690D";
int i = strcmp(a, "2405");
if(i >= 0) {printf("string ist gefunden !");}

Gruß

Autor: Knut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh sorry, in C.

es geht mir vielmehr um die zeitliche Abfolge. Wenn die Teilstrings 
direkt aufeinanderfolgend erscheinen, möchte ich mit einem Unterprogramm 
nach einer bestimmten Anzahl reagieren...if(Teilstring == 4)
Ich wollte das erst mit einem Counter realisieren. Allerdings erhalte 
ich dadurch keine Aussage, ob diese Teistrings direkt nacheinander 
erschienen sind.

C9B 2405 6780D "Treffer" Counter -> 1
B5B 2405 8890D "Treffer" Counter -> 2
A5B 2405 8690D "Treffer" Counter -> 3
A5B 5678 8690D ---------
A5F 4907 1230D ---------
D5B 2405 8550D "Treffer" Counter -> 4

VG

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst ja den Zähler wieder auf Null setzen, wenn der Substring 
nicht vorkommt.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Knut schrieb:
> Ich wollte das erst mit einem Counter realisieren. Allerdings erhalte
> ich dadurch keine Aussage, ob diese Teistrings direkt nacheinander
> erschienen sind.
wenn du kein Treffer hasst, brauchst du den counter nur auf 0 setzen.

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also

C9B 2405 6780D "Treffer" Counter -> 1
B5B 2405 8890D "Treffer" Counter -> 2
A5B 2405 8690D "Treffer" Counter -> 3
A5B 5678 8690D Counter -> 0
A5F 4907 1230D Counter -> 0
D5B 2405 8550D "Treffer" Counter -> 1

Autor: Knut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Danke für die Antworten!
Klaro, das passt perfekt.
Bis dann

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.