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
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
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ß
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
Du kannst ja den Zähler wieder auf Null setzen, wenn der Substring nicht vorkommt.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.