Hallo Bernd,
hallo Jens,
hier das Ergebnis eurer Tipps.
Habe auf Basis von HJHs Skript das Ganze mal für die Ausgänge gebaut.
switch($IPS_SENDER)
{
case "Execute":
case "TimerEvent":
CSCK_SendText(34705 /*[AVR-NET-IO]*/, "GETSTATUS");
break;
case "RegisterVariable":
SetValue(19603 /*[.Entwicklung\AVR\AVR_Status]*/, $IPS_VALUE);
$allport = GetValue(19603 /*[.Entwicklung\AVR\AVR_Status]*/);
if (substr($allport,0,1) == 'S')
{
SetValue(28557 /*[.Entwicklung\AVR\AVR A Port 1]*/, substr($allport,8,1));
SetValue(25435 /*[.Entwicklung\AVR\AVR A Port 2]*/, substr($allport,7,1));
SetValue(20488 /*[.Entwicklung\AVR\AVR A Port 3]*/, substr($allport,6,1));
SetValue(27171 /*[.Entwicklung\AVR\AVR A Port 4]*/, substr($allport,5,1));
SetValue(53061 /*[.Entwicklung\AVR\AVR A Port 5]*/, substr($allport,4,1));
SetValue(12259 /*[.Entwicklung\AVR\AVR A Port 6]*/, substr($allport,3,1));
SetValue(25274 /*[.Entwicklung\AVR\AVR A Port 7]*/, substr($allport,2,1));
SetValue(36103 /*[.Entwicklung\AVR\AVR A Port 8]*/, substr($allport,1,1));
}
break;
Skript wird im Moment im Sekundentakt getriggert, wird später sicherlich ein längerer Zyklus.
Wie im obigen Skript zu sehen wird der Antwort-String aus der Register-Variable in einer Stringvariable zwischengespeichert, kann später wahrscheinlich auch entfallen.
Anschließend wird der Antwortstring in seine Einzelteile zerlegt und in die entsprechende Boolean-Variable geschrieben.
Soweit so gut.
Jetzt habe ich nur noch ein kleines Problem das ich nach ein gewissen Zeit, ca. zwischen 20 und 60 Sekunden keine Antwort mehr vom AVR-NET-IO erhalte. Erst nach einem SET-Befehl oder wenn ich nebenbei den NetServer starte funktioniert das Antwortverhalten wieder einwandfrei.
Kann mir hier jemand einen Tipp geben, könnte zwar die NetServer-Anwendung mitlaufen lassen aber das ist ja nicht im Sinne des Erfinders.
@paresy: Gibt es vielleicht eine Chance für den AVR ein Modul zu bekommen?