Laden...

Regex - Parameter von Barcode-Reader-Antwort parsen

Erstellt von leusl vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.137 Views
Thema geschlossen
L
leusl Themenstarter:in
1 Beiträge seit 2013
vor 11 Jahren
Regex - Parameter von Barcode-Reader-Antwort parsen

Liebes myC#-Forum!

Als Teil eines 4-er Teams setzen wir in der Schule eine Diplomarbeit für Infineon um (2 Steuerung/Elektronik, 2 Konstruktion).
Wir haben uns dafür entschieden, das Interface, mit dem der Arduino kommuniziert, in C# zu erstellen, da war im Informatik schon einige Kenntnisse sammeln konnten.
Das Interface steht grundsätzlich, jedoch besteht das Problem, dass wir nach einer weiteren Besprechung die Aufgabe gestellt bekommen haben, die Parameter des verwendete Barcode-Readers laufend zu aktualisieren.

Das Ergebnis der Parameter-Abfrage:

Z_DAT 
 [Fehler: ] <0> 
 [Fehler(alt): ] <0>
 [Schaltung: ] <HF>
 [Dek_Richt: ] <neg.> 
 [HW: ] <64> 
 [ZLE: ] <5> 
 [Bild: ] <5> 
 [CLK: ] <0> 
 [Blitz: ] <1> 
 [Opt_Out_1: ] <0> 
 [Opt_Out_2: ] <0> 
 [Blitzinterrupt: ] <0> 
 [Opt_Inp_1: ] <1> 
 [Opt_Inp_2: ] <1> 
 [Schwelle: ] <0>

Wir benötigen aus der Liste, die über sie serielle Schnittstelle kommt, die Werte zwischen "< >" hinter 4 Parametern (Dek_Richt, HW, ZLE, CLK).

Weiters wird noch ein Befehl gesendet, der folgendes Ergebnis liefert:

GET_CTRST00187,00154

Dort sind die zwei Zahlen gefordert.

Wir haben schon verschiedenste Möglichkeiten die Zahlen herauszuparsen ausprobiert, jedch ohne Erfolg. Regex schien uns noch am sinnvollsten, nur leider haben wir nie die Zahlen mit allen Stellen (1-3) bzw. den Wert ohne andere Zeichen herausgeparst bekommen.

Es muss jetzt keine vollständige Lösung sein, mit einem zielführenden Ansatz wäre uns schon viel geholfen.

Vielen Dank im Voraus! 🙂

lg Daniel

A
764 Beiträge seit 2007
vor 11 Jahren

Hallo leusl,

wie sehen denn eure konkreten Ansätze aus. Und wo genau liegen da eure Probleme?

Gruß, Alf

2.891 Beiträge seit 2004
vor 11 Jahren

Wir haben schon verschiedenste Möglichkeiten die Zahlen herauszuparsen ausprobiert, jedch ohne Erfolg. Regex schien uns noch am sinnvollsten, nur leider haben wir nie die Zahlen mit allen Stellen (1-3) bzw. den Wert ohne andere Zeichen herausgeparst bekommen.

Warum nicht? Bzw. was habt ihr denn schon alles probiert?
Denn die ganze Aufgabenstellung ist relativ trivial - und sollte sich durch die Lektüre von [Artikel] Regex-Tutorial eigentlich leicht lösen lassen.

Das einzige Knifflige, das mir einfällt, ist, dass man die eckigen Klammern escapen muss, da sie in regulären Ausdrücken u.U. Schlüsselzeichen sind.

B
357 Beiträge seit 2010
vor 11 Jahren

[<][0-9]{1;3}[>]

Um mal das einfachste zu nennen... Wie man die richtigen Zeilen ermittelt, setze ich mal als absolute Grundlagen voraus, ansonsten hat man sich mit Regex noch keine 5 Minuten beschäftigt.

S
269 Beiträge seit 2010
vor 11 Jahren

der simpelste RegEx (aus meiner Sicht) der auch seine Arbeit tut für Aufgabe 1: "(?:Dek_Richt:|HW:|ZLE:|CLK:)[<]+?<([>]+?)>"
dafür einfach den Input am Zeilenumbruch splitten und dann jede Zeile mit dem RegEx bearbeiten, das sollte ausreichen....
das 2., wenn richtig verstanden, ließe sich wie folgt lösen: "GET_CTRST(\d+?),(\d+?)"

[<][0-9]{1;3}[>] damit kann er Problemlos HW, ZLE und CLK parsen, aber nicht Dek_Richt 😉 außerdem bezog sich das "1-3 Stellen", imho, auf Aufgabe 2

so far
Karill Endusa

Hinweis von herbivore vor 11 Jahren

Das Parsen solcher einfachen Formate kann man auch als Regex-Neuling wirklich problemlos erledigen, wenn man einen Blick in ein Tutorial wirft. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1.

Thema geschlossen