so jetzt zum Beamer:
hier meine function:
<?php
//******************************************************************************
// PJLink ausführen
// include '37077.ips.php';
// aufrufen z.B. mit: $return = PJLink(array('%1ERST ?', '%1POWR ?'));
//******************************************************************************
function PJLink($array)
{
$ID_socket = 56275;
IPS_SetProperty ($ID_socket, "Open", true);
IPS_ApplyChanges($ID_socket);
IPS_Sleep(500);
for ( $x = 0; $x < count ( $array ); $x++ )
{
CSCK_SendText ($ID_socket, $array[$x].CHR(0x0D));
IPS_Sleep(200);
}
IPS_Sleep(500);
IPS_SetProperty ($ID_socket, "Open", false);
IPS_ApplyChanges($ID_socket);
}
hier der Objektbaum:
und hier die Auswertung der Registervariable:
<?php
//******************************************************************************
// 49463
//******************************************************************************
//
//echo "REG-Var = ".$_IPS['VALUE'];
include '17825.ips.php'; // Funktionen Meldungsausgabe
$prio = 0;
$laut = 20;
$ID_power = 39302;
$ID_eingang = 15382;
$ID_Lzeit = 28248;
$ID_Lstatus = 51852;
$ID_fehler = 19388;
$ID_hw = 36838;
$ID_Ltyp = 30898;
$ID_sec = 50233;
$command = substr($_IPS['VALUE'],2,4);
$result = "Fehler";
$meldung = "";
//******************************************************************************
// Befehl oder Abfrage ist fehlgeschlagen
//******************************************************************************
IF(substr($_IPS['VALUE'],7,3) == "ERR")
{
$array = array("Undefined command", "Out of parameter", "Unavailable time", "Projector/Display failure");
$fehler = (int) substr($_IPS['VALUE'],10,1);
$meldung .= "Fehler ".$command." : ".$array[$fehler];
$command = "";
}
SetValueString($ID_fehler,$meldung);
//******************************************************************************
// Befehl wurde ausgeführt
//******************************************************************************
IF(substr($_IPS['VALUE'],7,2) == "OK")
{
$meldung .= $_IPS['VALUE'];
$command = "";
}
//******************************************************************************
// Ergebnis Abfrage auswerten
//******************************************************************************
switch ($command)
{
case "": // schon abgefragt ERR oder OK
break;
case "ERST": // Abfrage Hardware
$result = substr($_IPS['VALUE'],7,6);
$meldung .= "OK";
if($result <> "000000")
{
$meldung = "";
$array = array('OK','Fan error', 'Lamp error', 'Temperature error', 'Cover open error', 'Filter error', 'Other errors');
$x = 0;
while ( $x < 7 )
{
$code = substr($result,$x,1);
if($code == 1) $meldung .= "Warning ".$array[$x+1]."\n";
if($code == 2) $meldung .= "Error ".$array[$x+1]."\n";
$x++;
}
}
SetValueString($ID_hw, $meldung);
break;
case "POWR": // Abfrage POWER
$result = (int) substr($_IPS['VALUE'],7,1);
SetValueInteger($ID_power,$result);
break;
case "INPT": // Abfrage EINGANG
$result = (int) substr($_IPS['VALUE'],7,2);
SetValueInteger($ID_eingang,$result);
break;
case "LAMP": // Abfrage EINGANG $result = %1LAMP=34 0 = 34 Std. Lampe ist aus
$result = substr($_IPS['VALUE'],7,6);
$array = explode(" ", $result);
SetValueInteger($ID_Lzeit, $array[0]);
SetValueBoolean($ID_Lstatus, $array[1]);
break;
case "RLMP": // Abfrage Lampentypen für Ersatzlampe
$result = substr($_IPS['VALUE'],7,128);
SetValueString($ID_Ltyp, $result);
break;
case "LINK": // Security-Status
$result = (int)substr($_IPS['VALUE'],7,1);
SetValueInteger($ID_sec, $result);
break;
default:
echo 'nicht unterstützt: '.$_IPS['VALUE'];
break;
}
hoffentlich hilft es dir weiter.
Grüße, Peter