Auswerten von Register-Variablen und schreiben in Variablen

Hallo Community,

ich habe mich an ein neues Projekt herangemacht und es fehlt mir der Einstieg. Es wäre klasse, wenn ich über das Forum die eine oder andere Hilfestellung erhalten könnte.

Thema: Wir haben im Unternehmen einen Lagerlift erhalten, der über eine ClientSocket Schnittstelle angebunden ist. Die Kommunikation dorthin funktioniert, ich kann auch über CSCK_SendText und dem entsprechnende Syntax die unterscheidlichen Ebenen des Gerätes anfordern bzw. steuern.

Jetzt zu meinem Problem. Ich brauche für weitere Funktionen auch die Statusrückmeldungen, die regelmäßig getriggert werden. Die Register Variable, die an die ClientSocket angebunden ist, gibt mir im Debug Werte zurück.

24.11.2023, 17:20:00 | RECEIVED | 31 31 7C 31 30 30 30 30 31 7C 53 54 41 54 55 53 7C 30 7C 30 7C 30 7C 30 7C 30 7C 30 0D

Diese Werte ergeben nun, wenn Datum und Info abgeschnitten werden diesen String (hex in String über externes Programm) „11|100001|STATUS|0|0|0|0|0|0“

Aktuell sind die Zeichen hinter der 5. und der 7. Pipe interessant. Im Bespiel oben steht hier die 0, aber im Betrieb sind da Zeichenfolgen wie 1016 oder ähnlich. Genau diese Werte benötige ich, um Variablen zu setzen bzw. Skripte auszulösen.

  1. wie könnte ich hex in text umwandeln. Über die PHP-Hilfen komme ich nicht weiter
  2. oder kann ich vielleicht die beiden Werte direkt aus der Variable auslesen und schreiben

Ich hoffe, das Problem verständlich beschrieben zu haben und freue mich nun auf Unterstützung.

VG Max

Die Daten grundsätzlich im Register-PHP-Script siehst du? Ein echo $_IPS['VALUE']; bringt diese in den MessageLog?

Eigentlich müsste dort schon der leserliche Text stehen. Ein explode auf den senkrechten Strich und dann die 6. und 7. Array Elemente.

Sähe etwa so aus:

$arr = explode("|", $_IPS['VALUE']);
$status5 = $arr[6];
$status7 = $arr[8];

Falls die Registervariable garnichts anzeigt, muss diese dem Gateway zugeordnet werden (oben in der Button-Leiste in dem auch der Käfer für Debug ist).

Vielen Dank, das war´s, mit einem hohen Lerneffekt.

VG Max

Jetzt könnte man noch überprüfen, bzw. sollte ggf. sogar, ob der String auch wirklich dem angefragten Muster übereinstimmt. Also z.B. mindestens 10 Zeichen lang ist. Nach der Trennung nach | es mindestens oder genau? 9 Felder gibt und ob Feld 2 auch wirklich Status heißt.
Ansonsten die Daten verwerfen.

Woran lag es jetzt genau? Explode, RegisterVariable, $_IPS['VALUE']?