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
Hallo leusl,
wie sehen denn eure konkreten Ansätze aus. Und wo genau liegen da eure Probleme?
Gruß, Alf
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.
[<][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.
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
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.