RS232 Epson Beamer Steuerung

Hallo zusammen,

ich habe meinen Epson Beamer über Serial Port angeschlossen.
Das senden von Befehlen funktioniert einwandfrei mit z.B.:

COMPort_SendText(17936 /[Serial Port]/, „pwr on“.chr(13));

Mit folgendem Befehl frage ich den Beamer, ob er eingeschaltet ist:

COMPort_SendText(17936 /[Serial Port]/, „pwr?“.chr(13));

Wie kann ich den Rückgabewert auslesen und in eine Variable schreiben ?

Viele Grüße und schonmal danke!

Erstelle einen Cutter, der als übergeordnete Instanz die serielle Schnittstelle hat, eine Registervariable, die als übergeordnete Instanz den Cutter hat und eine Stringvariable zB Beamer empfang.

In der Cutterinstanz im Zielfeld trägst Du ein Scriptaufruf von diesen Script ein:

 <?
// 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'];

SetValueString(12345 /*[Beamer empfang]*/,$data);
}
?>  

Im Cutter mußt Du noch Deine eigenen Eistellungen vornehmen, wenn Du noch mehr auswerten willst

Wenn Du im Debugfenster schaust, sollten dann die Rückmeldedaten ankommen, wenn alles klappt.

Um die Stringvariabe zu irgendwelchen Sachen zu bewegen, mußt Du so ein Script schreiben, dessen Aufruf von dem Ändern der Stringvariablen ausgelöst wird:

 $Text= GetValueString(12345 /*[Beamer empfang]*/);
if ($Text == "Lampe aus ")
   {
SetValueBoolean(25221 /*[ xyz ]*/,false);
    }   

Nimmst Du nicht den Befehl „SPRT_SendText“ ?
Gruß Helmut

Diese Zeile ist irrelevant wenn man den Cutter nutzt: $data = RegVar_GetBuffer($_IPS[‚INSTANCE‘]);
Und anstatt COMPort_SendText (veraltet) und SPRT_SendText ist es besser man nutzt RegVar_SendText. Damit ist man unabhängig von dem IO und dessen ID, und kann alles mit der ID der RegisterVariable ansprechen :slight_smile:
Michael

Hallo Michael,
gut zu wissen, wo ist der Vorteil?

Ob ich nun die ID vom Comport eintrage oder von der Registervariable, das kann es nicht sein, allein,
für mich, des Überblickes wegen, was habe ich damals da in dem Script gemacht, hätte ich immer die ComPort ID eingetragen.
Gruß Helmut

Gerade wegen den Überblick.
Du empfängst von der RegVar, also sendet man auch an die RegVar. Ob da drüber dann eine serielle Schnittstelle, ein NetzwerkSocket oder what ever ist, ist dann egal.
Und die ID brauchst man auch nicht im Script eintragen, wenn man etwas trickst und das Script unterhalb der RegVar anlegt.
Dann reicht ein IPS_GetParent($_IPS[‚SELF‘]) und schon hast du ein universelles Script ohne IDs für die Kommunikation.
Michael

Ok, das probiere ich mal aus, das müßte dann auch für zB Clientsocket gelten, dachte an mein Wemos und HMI Display.
Danke Dir.
Gruß Helmut