Forum: Mikrocontroller und Digitale Elektronik Zeitliche Abfolge kontrollieren


von Knut (Gast)


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

von Peter (Gast)


Lesenswert?

merken und dann vergleichen? Wo ist das Problem.

von Pascal H. (pase-h)


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

von Jean Payer (Gast)


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:
1
char* a = "C9B24056780D";
2
char* b = "B5B24058890D";
3
char* c = "A5B24058690D";
4
int i = strcmp(a, "2405");
5
if(i >= 0) {printf("string ist gefunden !");}

Gruß

von Knut (Gast)


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

von Huch (Gast)


Lesenswert?

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

von Peter (Gast)


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.

von Huch (Gast)


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

von Knut (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.