LabVIEWForum.de
Match Patter (Muster suchen) funktioniert nicht immer - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Match Patter (Muster suchen) funktioniert nicht immer (/Thread-Match-Patter-Muster-suchen-funktioniert-nicht-immer)



Match Patter (Muster suchen) funktioniert nicht immer - HIMI - 15.10.2013 07:46

Hallo liebe LabVIEW-Gemeinde,

nach langer Zeit hat sich bei mir auch mal wieder ein Problem aufgetan.
Ich empfange über eine serielle Schnittstelle mir bekannte Daten, sammle diese mit Hilfe eines Schieberegisters und wenn ich mir sicher bin alles empfangen zu haben was ich möchte, wird die Schleife beendet und der Wert der SR an meine Suchfunktion übergeben. Die angehängten Bilder zeigen eine stark vereinfachte Version, welche nur die Fehlfunktion deutlich machen sollen.

Zu finden sein soll folgendes:
0A00 6047 001B
0A00 6047 002B
0A00 6047 003B
0A00 6047 004B
0A00 6047 005B
(sämtliche Anzeigen stehen auf "HEX Display")

Diese Phrasen befinden sich nachweislich alle im Schieberegister, jedoch wird immer nur ...1B, ...3B und ...4B gefunden. Habe auch schon nur nach ...2B zu suchen, aber ohne Erfolg.

Ich bin mit meinem Latain am Ende, kann mir jemand helfen?


RE: Match Patter (Muster suchen) funktioniert nicht immer - GerdW - 15.10.2013 08:47

Hallo HIMI,

probiere das hier mal aus:
[attachment=46746]
Das zeigt dir alle Werte an, die nach einem "0A006047" gefunden werden.

Hintergrundinfo: $2B ist das ESCAPE-Zeichen. Wenn du dieses mit MatchPattern suchen lässt, kann es zu "Querwirkungen" kommen. Das steht zwar nicht direkt in der Kontexthilfe, dafür aber der Hinweis, beliebige Zeichen per \xx suchen zu lassen...


RE: Match Patter (Muster suchen) funktioniert nicht immer - HIMI - 15.10.2013 09:26

Der Gerd,

immer ein Garant für gute Hinweise. Das Problem ist gelöst, wird mich aber demnächst wieder ereilen, denn ich muss in einer bestimmten Stelle meines Problemes eine Fallunterscheidung machen und da muss ich dann auf "002B" vergleichen. Wie kann es sein, dass LV das fehlinterpretiert? Das mit dem Escape-Zeichen habe ich nicht richtig gelöffelt, auf der seriellen Schnittstelle liegt doch stellvertretend für 0x002B (HEX Dsiplay) in ASCII der NUL-Charakter gefolgt vom "+". Gibt es da eventuell eher Probleme mit dem häufig gesendeten NUl-Char?
Wie kann ich jetzt das Problem löse, dass wenn ich ein 0x002B empfange ein Ereignis X ausgelöst wird?


RE: Match Patter (Muster suchen) funktioniert nicht immer - GerdW - 15.10.2013 09:46

Hallo HIMI,

sorry, ESCAPE ist natürlich $1B...

Zitat:Wie kann es sein, dass LV das fehlinterpretiert?
Die Hilfe sagt: beliebige Zeichen mit Escape-Char "\" suchen!
Es gibt auch die (einfachere) Funktion "Search/SplitString"...

Zitat:Wie kann ich jetzt das Problem löse, dass wenn ich ein 0x002B empfange ein Ereignis X ausgelöst wird?
Soll ein Ereignis/"Event" ausgelöst werden oder soll einfach ein Case in einer Case-Struktur aufgerufen werden?
[attachment=46749]


RE: Match Patter (Muster suchen) funktioniert nicht immer - HIMI - 15.10.2013 09:51

Danke Gerd,

bin auch gerade darauf gekommen den String in ein Byte Array zu wandeln und dann zu vergleichen - das funktioniert tadellos. In dem String sind noch ein paar mehr nötige Informationen versteckt.

Vielen Dank Gerd