ich ecke gerade wieder mal an. Hab meinen Fingerprint über einen Cutter an die Registervariable übergeben. Nun schreibt es mir aber nicht das gewünschte in die Variable. Ich brauche nur die erste Zeile (41 D3 0E… siehe Anhang). Kann mir da jemand behilflich sein?
<?php
// wenn das Skript von einer RegisterVariable-Instanz aus aufgerufen worden ist
if ($IPS_SENDER == "RegisterVariable")
{
// bereits im Puffer der Instanz vorhandene Daten in $data kopieren
$data = RegVar_GetBuffer($IPS_INSTANCE);
// neu empfangene Daten an $data anhängen
$data .= $IPS_VALUE;
// wenn das Trennzeichen ; in $data gefunden worden ist
if (strpos(strTohex($data), 'da'))
{
// $data in durch ; separierte Datensätze zerlegen
$datasets = explode('da', strtohex($data));
// alle nicht durch ; terminierten Datensätze ausgeben
for ($i = 0; $i < count($datasets) - 1; $i++)
{
SetValueString(36584 /*[Anwesenheit\Variablen\BioGate Ankunft]*/, $datasets[$i]);
echo "empfangener Datensatz: ".$datasets[$i]."
";
}
}
// Inhalt von $data im Puffer der RegisterVariable-Instanz speichern
RegVar_SetBuffer($IPS_INSTANCE, $data);
}
function strToHex($string)
{
$hex='';
for ($i=0; $i < strlen($string); $i++)
{
$hex .= dechex(ord($string[$i]));
}
return $hex;
}
?>
Ich les jetzt keine fast 400 Seiten. Auf Seite 13 geht es los, jenachdem was Du verwendest hast Du Start und Endadresse, dies kannst Du im Script auswerten. Den Cutter kannst Du entsorgen und die Regvar direkt mit deinem Eingang verbinden.
Richte doch mal einen Cutter ein:
(ist wiedermal seltsames Protokoll, 0x0a als Endezeichen, obwohl 0x0a auch in den Daten vorkommen könnte…
Benutze feste Länge
Eingabelänge 15
Synch-Zeichen 41 HEX
Das Script der Registervariable (mal für’s Erste):
<?php
// wenn das Skript von einer RegisterVariable-Instanz aus aufgerufen worden ist
if ($IPS_SENDER == "RegisterVariable")
{
// empfangene Daten
$data = $IPS_VALUE;
// Daten in hex umwandeln
$dataStr = strToHex($data);
IPS_LogMessage( "KEY"," Data:".$dataStr);
}
function strToHex($string)
{
$hex='';
for ($i=0; $i < strlen($string); $i++)
{
$hex .= dechex(ord($string[$i]));
}
return $hex;
}
?>