Registervariable auslesen und definierte Stringposition in Variable ausgeben?

Hallo zusammen,

ich stehe mal wieder vollständig auf dem Schlauch und benötige eure Hilfe.

Ich lese per UDP Socket eine TCP/IP basierte I/O Box via SNMP Trap aus. Per Registervariable ziehe ich mir den Datensatz und lasse mir bei einer Aktualisierung des Traps in der Registervariable eine Variable auf True schalten.

Nun aber zu meinem Problem. Ich möchte nicht einfach nur pauschal auf eine Änderung Triggern, sondern den Dateninhalt vom String auswerten und in eine jeweilige String Variable schreiben. Leider sieht der String so kryptisch aus, dass ich ein Unterscheidungsmerkmal auswerten muss.

Folgendes liegt mir vor:

String Eingang 1:
19.12.2013 18:34:27.00 | Received Data | 0> aprivate¤0+‚®@À¨²2fC ƒë00+‚®
String Eingang 2:
19.12.2013 18:34:45.00 | Received Data | 0> aprivate¤0+‚®@À¨²2eC …L00+‚®

Die fett markierte Stelle möchte ich auswerten, das ist im String die 35. Stelle und diese zeigt eindeutig den jeweiligen Eingang 1 oder 2.

Kann mir einer kurzfristig bei dieser Problematik helfen? Der Textparser Befehl funktioniert leider nicht.

Für einen Skriptvorschlag wäre ich sehr dankbar. Die Suche und die Hilfe hat leider nicht meine Bedürfnisse befriedigt oder ich bin einfach nur zu unfähig.

Vielen Dank.

Gruß

Felix

Hast Du schon einmal probiert es über einen Cutter direkt in Variablen schreiben zu lassen?

Super Tipp, danke dir, hat auf Anhieb funktioniert. Kann man mit der Cutter Instanz auch das letzte Zeichen eines Strings herausfiltern? Mir ist bisher nur ein Ausschnitt innerhalb des Strings gelungen.

Viele Grüße

Felix

Du kannst mit dem Cutter auch Zeichen zwischen zwei von Dir zu definierenden Werten/Zeichenketten ausschneiden.

Ja das ist mir klar und funktioniert auch wunderbar. Wenn ich nun aber nichts aus dem String ausschneiden möchte, sondern vom gesamten String die letzte Stelle? Rechts vom String kommt ja nichts mehr.

Das ist der Ausgangsinhalt:

aprivate¤0+‚®@À¨²2fC ƒë00+‚®

Was hast Du denn im Moment in der Variable noch übrig?

Wenn

private¤0+‚®@À¨²2fC ƒë00+‚®
der Ausgangsstring ist und der Teilstring, welchen du als Ergebnis erhalten möchtest, immer an der Stelle „start“ beginnt und immer „length“ Zeichen lang ist sollte dir

substr("private¤0+‚®@À¨²2fC ƒë00+‚®", start, length)

helfen. Mit negativen Werten für „start“ und „length“ läßt sich auch ein Teilstring in Bezug auf das Ende des Ausgangsstrings abschneiden.

substr("private¤0+‚®@À¨²2fC ƒë00+‚®", -3)

Gibt die letzten 3 Zeichen des Ausgangsstrings zurück.
Ansonsten findet sich mit den PHP-Stringfunktionen bestimmt eine Lösung.

Gruß
ralla

@felix

Lass dir doch mal den Socket als Hex-Code debuggen, dann kommen die kryptischen Zeichen auch nicht mehr und danach kannst du im Cutter ein definiertes Anfang/Ende (wiederkehrend) setzen und diesen weiter auswerten.

Vielen Dank, ich werte jetzt den String im HEX aus, ist wirklich übersichtlicher. Die Frage war nur was ich beim Cutter einstellen muss um den letzten Hex Wert (00 für aus und 01 für an) abzuschneiden und weiterzugeben? Ich muss den vom UDP Socket bereit gestellten String noch irgend ein Zeichen anfügen, so dass ich mit dem Cutter arbeiten kann aber wie mach ich das?