PHP Neuling möchte Plain Daten wandeln

Ich habe eine RegisterVariable-Instance mit der FTDI-Instance verbunden.
Die Variable enthält " Plain - Daten " mit was für einen PHP-Befehl kann ich die Daten in Dezimal-werte umwandeln?

Edit: Und warum geht dieser Code nicht?

15> $len = strlen(Register_Variable);
16> for($i=0; $i<$len; $i++)
17> printf("Zeichen %d ist %s<br>
", $i, $str{$i});

ergibt:

Parse: parse error, unexpected T_VARIABLE in line 15
auch schon so probiert:

15> $len = strlen($Register_Variable);
16> for($i=0; $i<$len; $i++)
17> printf("Zeichen %d ist %s<br>
", $i, $str{$i});

ergibt:

Parse: parse error, unexpected T_VARIABLE in line 15



$Register_Variable="ABCD".chr(12);

$len = strlen($Register_Variable);
for($i=0; $i<$len; $i++)
{
 printf("Zeichen %d ist %s, %s <br>
", $i, $Register_Variable{$i}, ord($Register_Variable{$i}));
}


Grüße, paresy

oder so…

das folgende script loggt die variablen in eine logdatei hinein. das verzeichnis ‚logs_var‘ muss vorhanden sein. die register variable einfach mit diesem script verknüpfen.


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File	 : FTDI_Debugger.ips.php
Trigger  : 
Interval : 
*/
$t = GetUpdateTime( $IPS_VARIABLE );
$v = GetValueString( $IPS_VARIABLE );
$l = strlen($v);
$o = "";
for( $i=0; $i<$l; $i++)
{
  $o .= bin2hex( substr($v,$i,1))." ";
}
$handle = fopen("logs_var/FTDI.txt", "a");
fwrite( $handle,  date("d.m.y").
				  "  ".
				  date("H:i:s").
				  "  (".str_pad($l,2," ",STR_PAD_LEFT).")".
				  ": ".
				  $o.
				  "
");
fclose($handle);
?>

Das Forum ist echt gut. Dank an Paresy.Jo, Danke habe das System runter und rauf gefahren den Code erstellt und es funktioniert.

$Register_Variable=GetValuestring(Register_Variable);

$len = strlen($Register_Variable);
for($i=0; $i<$len; $i++)
{
printf("Zeichen %d ist %s, %s <br>
", $i, $Register_Variable{$i}, ord($Register_Variable{$i}));
}

@Olli wenn ich meine Variable „Register_Variable“ rein baue bekomme ich Fehlermeldungen

Das Skript ist so aufgebaut, dass du deine Variable „Register_Variable“ gar nicht einbauen musst - es erkennt durch $IPS_VARIABLE selbstständig den Variablennamen der geloggt werden soll. Erstelle das richtige Verzeichnis, verknüpfe deine Registervariable (vom Typ String) via IPS mit dem Skript und schon wird alles aufgezeichnet was du dir wünscht (in der Datei logs_var\FTDI.TXT) ohne weitere Änderungen am Skript.

PS: die Daten werden Hexadezimal aufgezeichnet…

Danke Olli !
Habe ich im Script Event eingetragen. Logt auch wunderbar. Nur im Script-Output gibt es die Fehlermeldung:

Notice: Undefined variable: IPS_VARIABLE in line 10
Notice: Undefined variable: IPS_VARIABLE in line 11

Variablen undefiniert. Soll ich das ignorieren? Funktioniert ja!

Du hast bestimmt noch einen Timer, der das Script startet, oder?

Ansonsten machen folgende Abfrage drumrum:


if($IPS_SENDER="Variable") {

... ollis code ...

}

Grüße, paresy

der Code:

<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File     : FTDI_Debugger.ips.php
Trigger  :
Interval :
*/
$t = GetUpdateTime($IPS_VARIABLE);
$v = GetValueString($IPS_VARIABLE);
$l = strlen($v);
$o = "";
for( $i=0; $i<$l; $i++)
{
  $o .= bin2hex( substr($v,$i,1))." ";
  echo $o;
}
$handle = fopen("logs_var/FTDI.txt", "a");
fwrite( $handle,  date("d.m.y").
                  "  ".
                  date("H:i:s").
                  "  (".str_pad($l,2," ",STR_PAD_LEFT).")".
                  ": ".
                  $o.
                  "
");
fclose($handle);
?>

funkioniert ja, was mich wundert ist die Fehlermeldung. Im Script Event habe ich bei Triggers Variables meine „Register_Variable“ eingetragen, Timer Intervall 0 Sekunden.
Der Script wird ja auch ausgeführt, sieht man im Log-Verzeichniss an dem File.