eDip 240 - Sendepuffer füllen und dann übertragen

Hallo zusammen,

ich suche für das eDip einen Befehl der mir ermöglicht, mehrere Zeichen in den
Sendepuffer zu schreinen und dann zu übertragen.
Ich möchte ein Codeschloss bauen. Also drücke ich die 1,2,3,4 und danach Taste Enter. Nun soll der Inhalt, welcher als „Down“ Code hinter den Zahlen
1,2,3,4 hinterlegt ist, an IPS übertragen werden.
Leider habe ich bis jetzt keinen Befehl dafür gefunden. Geht soetwas?
Danke für Eure Hilfe.

Gruss
Michael

Mit dem eDip. Nein. Mit IPS dahinter. Ja.

Du musst jeden Tastenanschlag an IPS senden lassen und IPS die Pufferung und das Auswerten übernehmen lassen. Dann sollte es klappen.

paresy

Hallo Paresy,

kannst Du mir einen kleinen Denkanstoß geben?
Ich komme irgendwie nicht auf einen grünen Zweig.
Im Moment erfasse ich die Eingabe vom eDip über ein
Script welches gestartet wird, wenn sich die Variable
ändert.


$Command = GetValueString("COM_RX_eDip_SZ");
$wert = substr($Command, -1);
switch ($wert)
    {
    case 2 :
             IPS_RunScript("wasauchimmer");
      break;

Wie kann ich nun feststellen, das ich mich im Eingabemodus für den Code befinde und die gesendeten Zeichen bis zu einem bestimmten Zeichen zwischengespeichert werden.
Danach soll die Auswertung erfolgen.

Kannst Du mir eine kurze anregung geben?
Danke

Gruss
Michael

So ich glaube ich hab was hinbekommen.
Ist sicherlicht nicht der einfachste Weg bin für verbesserungen jederzeit offen.
Anbei mal die Scripte:

Eingabe verarbeiten:


// Eingabe Auswerten
$Command = GetValueString("COM_RX_eDip_SZ");
$wert = substr($Command, -1);    // gibt den Letzten Buchstaben zurück

if (($wert == "È") or ($wert == "É") or ($wert == "Ê") or ($wert == "Ë"))
{
    $code1 = GetValueString("Display.SZ_Code1");
    $code2 = GetValueString("Display.SZ_Code2");
    $code3 = GetValueString("Display.SZ_Code3");
    $code4 = GetValueString("Display.SZ_Code4");
    
    if ($code1 == "0")
    {
    SetValueString("Display.SZ_Code1", $wert);
    return;
    }
    if ($code2 == "0")
    {
    SetValueString("Display.SZ_Code2", $wert);
    return;
    }
    if ($code3 == "0")
    {
    SetValueString("Display.SZ_Code3", $wert);
    return;
    }
    if ($code4 == "0")
    {
    SetValueString("Display.SZ_Code4", $wert);
    return;
    }
}

switch ($wert)
    {
     // Enterbutton
     case "Ò" :
             IPS_RunScript("Display.SZ_Code_auswerten");
      break;
     }


Code überprüfen:


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Display.SZ_Code_auswerten.ips.php
Trigger  : 
Interval : 
*/

// Common eDip defines
include_once("eDip_Global.ips.php");

// Variablen definieren
include_once("Display.SZ_Global.ips.php");

// Code einlesen
$code1 = GetValueString("Display.SZ_Code1");
$code2 = GetValueString("Display.SZ_Code2");
$code3 = GetValueString("Display.SZ_Code3");
$code4 = GetValueString("Display.SZ_Code4");

if (($code1 == "È") && ($code2 == "È") && ($code3 == "È") && ($code4 == "È"))
   {
      // Codeeingabe war richtig
      // Display löschen und Hauptmenu-Button anzeigen
      SetValueString(TX_SZ, ESC.A.I.chr(0));
      SetValueString(TX_SZ, ESC.A.S.chr(1));
      SetValueString(TX_SZ, ESC.D.L);
      SetValueString(TX_SZ, ESC.A.L.chr(0).chr(0));
      SetValueString(TX_SZ, ESC.U.V.chr(4));

      SetValueString(TX_SZ, ESC.Z.F."CHICAGO14");
      SetValueString(TX_SZ, ESC.Z.V.chr(1));

      SetValueString(TX_SZ, ESC.Z.L.chr(8).chr(2).$Datum.CR);
      SetValueString(TX_SZ, ESC.Z.R.chr(230).chr(2).$Zeit.CR);

      SetValueString(TX_SZ, ESC.R.R.chr(00).chr(00).chr(240).chr(128).chr(13).CR);
      SetValueString(TX_SZ, ESC.G.D.chr(50).chr(00).chr(50).chr(15).CR);
      SetValueString(TX_SZ, ESC.Z.C.chr(120).chr(02)."Codeeingabe OK".CR);
      SetValueString(TX_SZ, ESC.G.D.chr(00).chr(15).chr(240).chr(15).CR);
      SetValueString(TX_SZ, ESC.G.D.chr(190).chr(00).chr(190).chr(15).CR);

      // Displayausgabe
      SetValueString(TX_SZ, ESC.Z.L.chr(100).chr(50)."Code wurde angenommen".CR);
      // Befehl ausführen
      

      // Codevariablen auf 0 setzen
      SetValueString("Display.SZ_Code1", "0");
      SetValueString("Display.SZ_Code2", "0");
      SetValueString("Display.SZ_Code3", "0");
      SetValueString("Display.SZ_Code4", "0");
      
      // Zeit abwarten und Hauptmenü anzeigen
      IPS_Sleep(3000);

      // Hauptmenü
      IPS_RunScript("Display.SZ_MainMenu");
      
      Return;
   }

// Codeeingabe war falsch
// Display löschen und Hauptmenu-Button anzeigen
SetValueString(TX_SZ, ESC.A.I.chr(0));
SetValueString(TX_SZ, ESC.A.S.chr(1));
SetValueString(TX_SZ, ESC.D.L);
SetValueString(TX_SZ, ESC.A.L.chr(0).chr(0));
SetValueString(TX_SZ, ESC.U.V.chr(4));

SetValueString(TX_SZ, ESC.Z.F."CHICAGO14");
SetValueString(TX_SZ, ESC.Z.V.chr(1));

SetValueString(TX_SZ, ESC.Z.L.chr(8).chr(2).$Datum.CR);
SetValueString(TX_SZ, ESC.Z.R.chr(230).chr(2).$Zeit.CR);

SetValueString(TX_SZ, ESC.R.R.chr(00).chr(00).chr(240).chr(128).chr(13).CR);
SetValueString(TX_SZ, ESC.G.D.chr(50).chr(00).chr(50).chr(15).CR);
SetValueString(TX_SZ, ESC.Z.C.chr(120).chr(02)."Codeeingabe falsch".CR);
SetValueString(TX_SZ, ESC.G.D.chr(00).chr(15).chr(240).chr(15).CR);
SetValueString(TX_SZ, ESC.G.D.chr(190).chr(00).chr(190).chr(15).CR);

// Displayausgabe
SetValueString(TX_SZ, ESC.Z.L.chr(100).chr(50)."Code war falsch".CR);
// Befehl ausführen bei falscher Codeeingabe
IPS_LogMessage("Display.SZ","Es wurde ein falscher Code am LCD-Display im Schlafzimmer eingegeben.");

// Codevariablen auf 0 setzen
SetValueString("Display.SZ_Code1", "0");
SetValueString("Display.SZ_Code2", "0");
SetValueString("Display.SZ_Code3", "0");
SetValueString("Display.SZ_Code4", "0");

// Zeit abwarten zu erneuten Codeeingabe
IPS_Sleep(3000);

// Codeeingabe erneut anzeigen
IPS_RunScript("Display.SZ_Code");

?>