Ankündigung

Einklappen
Keine Ankündigung bisher.

Guntamatic LBS - Programmierproblem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Guntamatic LBS - Programmierproblem

    Hallo Zusammen,

    ich hatte ja vor einiger Zeit angekündigt mich über den Guntamatic LBS zu machen. Recht und schön heute habe ich dann auch Zeit gefunden das PHP Script in einen LBS einzubauen, jedoch scheine ich da irgendwas verhunzt zu haben. Kann einer von euch Profis da mal drüberschauen? Das kommt mir beim Speichern des LBS.

    fehler.jpg

    Zeile 133 wäre die hier: $text = str_replace("\r\n", "\n", $text); // windows -> linux

    Bin ich einfach zu blöd, oder seh ich den Wald vor lauter Bäumen nicht?


    Code:
    ###[DEF]###
    [name        = GUNTAMATIC MODBUS 0.1]
    
    [e#1        =aktiv #init=1    ]
    [e#2        =IP Heizung ]
    [e#3        =KEY v. Guntamatic ]
    [e#4        =LogLevel #init=1 ]
    [e#5        =A1 ]
    [e#6        =A2 ]
    [e#7        =A3 ]
    [e#8        =A4]
    [e#9        =A5 ]
    [e#10        =A6]
    [e#11        =A7 ]
    [e#12        =A8 ]
    [e#13        =A9 ]
    [e#14        =A10 ]
    [e#15        =A11 ]
    [e#16        =A12 ]
    [e#17        =A13 ]
    [e#18        =A14 ]
    [e#19        =A15 ]
    [e#20        =A16 ]
    [e#21        =A17 ]
    [e#22        =A18 ]
    [e#23        =A19 ]
    [e#24        =A20 ]
    
    
    [a#1        =E4         ]
    [a#2        =E5        ]
    [a#3        =E6        ]
    [a#4        =E7        ]
    [a#5        =E8    ]
    [a#6        =E9        ]
    [a#7        =E10        ]
    [a#8        =E11        ]
    [a#9        =E12        ]
    [a#10        =E13        ]
    [a#11        =E14    ]
    [a#12        =E15        ]
    [a#13        =E16        ]
    [a#14        =E17        ]
    [a#15        =E18    ]
    [a#16        =E19        ]
    [a#17        =E20        ]
    [a#18        =E21        ]
    [a#19        =E22        ]
    [a#20        =E23        ]
    [v#1 = 0]
    ###[/DEF]###
    
    
    ###[HELP]###
    
    GUNTAMATIC MODBUS INTERFACE
    
    Dieser Baustein liest das MODBUS Interface der Guntamatic Heizung aus, und gibt die gewählten Wert an A1-A20 aus.
    falls mehr Werte benötigt werden, einfach einen 2. LBS nutzen. 
    
    Es werden von den Heizungen unterschiedliche Werte zur Verfügung gestellt, es empfiehlt sich die Abfrage IP/ext/daqdesc.cgi?key=XXX 
    durchzuführen um zu sehen welche werte zur Verfügung gestellt werden. IP ist dabei die IP der Heizung XXX der Key der von Guntamatic 
    zur Verfügung gestellt wird (muss dort beantragt werden) bis SW-Version 3.00 wird der Key mMn nicht benötigt.
    
    E1: Flag Baustein Aktiv 1/0 Ja/nein 
    E2: IP Heizungssteuerung
    E3: Guntamatic KEY
    E4: LogLevel
    E5-E24: Ausgangszuweisungen 
    
    V 0.1 - Initale Version
    
    ###[/HELP]###
    
    ###[LBS]###
    <?
    function LB_LBSID($id) {
      if ($E=getLogicEingangDataAll($id)) {
       if (getLogicElementVar($id,1)!=1) {
        setLogicElementVar($id,1,1);                      //setzt V1=1, um einen mehrfachen Start des EXEC-Scripts zu verhindern
    
        if (!$E[2]['value']) {                                                    //IP Prüfen
                    LB_LBSID_debug($id,"Abbruch, keine IP definiert",3);
                    logic_setOutput($id,1,"Fehlende IP");
                } else {
        if (!$E[3]['value']) {                                                            //KEY Prüfen
                    LB_LBSID_debug($id,"Abbruch, kein KEY definiert",3);
                    logic_setOutput($id,1,"Fehlende KEY");
                } else {
                LB_LBSID_debug($id,"Starte EXEC-Teil",7);
                callLogicFunctionExec(LBSID,$id);                 //EXEC-Script starten (garantiert nur einmalig)
        }
       }
      }
     }
    }
    function LB_LBSID_debug($id,$s,$l=6) {
        $a=array("Emergency","Alert","Critical","Error","Warning","Notice","Informational","Debug");
        $E=logic_getInputs($id);
        $DEBUG=$E[9]['value'];
        $l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s);
    }
    
    ?>
    ###[/LBS]###
    
    ###[EXEC]###
    <?
    require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
    set_time_limit(0);                                       //Wichtig! Script soll endlos laufen
    
    if ($E=logic_getInputs($id)) {
    
        $DEBUG=$E[23]['value'];
        $DEBUG && debug($id,"Baustein startet"); 
    sql_connect();
    while (getSysInfo(1)>=1) {
               try{ 
                    $url = "http://" . $E[1] ."/daqdata.cgi?key=" . $E[1] ."; 
                    $ch = curl_init(); 
    
    
                    curl_setopt ($ch, CURLOPT_URL, $url); 
                    curl_setopt ($ch, CURLOPT_HEADER, 0); 
    
    
                    ob_start(); 
    
                    curl_exec ($ch); 
                    curl_close ($ch); 
                    $text = ob_get_contents();
                    ob_end_clean(); 
    
                    $text = str_replace("\r\n", "\n", $text); // windows -> linux
                    $text = str_replace("\r", "\n", $text); // mac -> linux
    
                    # array bilden
                    $part = explode("\n", $text);
    
    for ($i = 4; $i < count($E); $i++) {
    logic_setOutput($id,$E-3,$Part[$E]) 
    
    }
    
    }catch(Exception $er){ 
                echo "Fehler"; 
    } 
      usleep(1000*500);                                      //z.B. 10ms warten - wichtig, um die CPU-Last zu begrenzen!
    }
    }
    finish();
    
    function debug($id,$s,$l=6) {
        $a=array("Emergency","Alert","Critical","Error","Warning","Notice","Informational","Debug");
        global $DEBUG;
        $l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s);
    }
    
    function finish() {
        global $id;
        debug($id,"Baustein beendet");
        sql_disconnect();
        exit();
    }
    ?>
    ###[/EXEC]###

    #2
    PHP-Code:
      logic_setOutput($id,$E-3,$Part[$E]) 
    Diese Zeile sieht schon sehr seltsam aus.
    $E ist eigentlich das array mit den Daten der Eingänge. Du subtrahierst 3 von einem array. Ausserdem verwendest du es als Index. und zusätzlich fehlt das Semikolon am Ende der Zeile.

    Ich vermute du willst hier $i verwenden und willst die Zeile mit einem Semikolon abschließen.

    Kommentar


      #3
      ja da war ich gerade dran, bin aber dann beim speichern auf den Fehler gestoßen und hab ihn net weggebracht, und es war ja schon spät

      Aber du hast Recht, so schaut es glaub ich besser aus

      Code:
        logic_setOutput($id,$i-3,$Part[$i])
      hilft mir aber im ersten Moment mit dem Separator Problem nicht weiter

      Kommentar


        #4
        Machmal kann ein fehlendes Semikolon oder ähnliches auch Fehlermeldungen an ganz anderen Stellen des Codes erzeugen.
        Meine Empfehlung wäre (falls noch nicht geschehen) einen Editor mit Syntax Highlighting/Validation zu verwenden und idealerweise auch mit autom. Syntax Formatierung, dann ist es deutlich einfacher inen solchen Fehler zu finden

        Kommentar


          #5
          Zitat von HeMichael Beitrag anzeigen
          PHP-Code:
          $url "http://" $E[1] ."/daqdata.cgi?key=" $E[1] ."; 
          In einem Editor mit Syntaxhighlighting sieht man sofort, dass die o.g. Zeile ein Problem hat. Das ." am Ende passt nicht. Danach sieht der Code bis auf die bereits im Post zuvor angesprochene Zeile eigentlich ganz okay aus.

          Kommentar


            #6
            hmm ok, ich arbeite normal mit Notepad ++, aber da wäre wohl ein richtiger PHP Editor besser

            Kommentar


              #7
              Notepad++ hat doch Syntaxhighlighting für php. Oben unter Sprache php auswählen.

              Kommentar


                #8
                notepad++ sollte das Problem aber auch sichtbar machen

                Kommentar


                  #9
                  hmm irgendwie steh ich immernoch aufm Schlauch

                  solange ich die IF klausel drin hab bricht er mit da ab

                  PHP-Code:
                    if ($E=logic_getInputs($id)) { 
                  nehm ich das if weg und lass das &E xxxx stehen dann macht er zumindest weiter, es scheint aber dass er die Variablen nicht befüllt, denn jede Zeile der schleife bringt die gleiche Ausgabe im Log.

                  d.h.

                  writeToCustomLog("19201040",3,"http://" . $E[2] ."/daqdata.cgi?key=" . $E[3]);
                  wird im Log zu: http:///daqdata.cgi?key=

                  und

                  writeToCustomLog("19201040",3,"logic_setOutput".$i d .",".($i-3).",".$Part[$i]);
                  wird zu logic_setOutput411,1

                  für mich sieht das so aus als ob der die Eingänge einfach net ausliest.

                  Ins Systemlog Schreibt er mit dann noch das die Variable Part nicht definiert ist. das Kommt aber mMn daher dass der das Curl nicht richtig durchführt, daher die Variable &text leer ist und damit das Explode für das Array nicht funktioniert.

                  Nehmt mir mal kurz das Brett vom Kopf bitte

                  Danke

                  aktueller code:
                  PHP-Code:
                  ###[DEF]###
                  [name        = GUNTAMATIC MODBUS 0.1]

                  [e#1        =aktiv #init=1    ]
                  [e#2        =IP Heizung ]
                  [e#3        =KEY v. Guntamatic ]
                  [e#4        =LogLevel #init=1 ]
                  [e#5        =A1 ]
                  [e#6        =A2 ]
                  [e#7        =A3 ]
                  [e#8        =A4]
                  [e#9        =A5 ]
                  [e#10        =A6]
                  [e#11        =A7 ]
                  [e#12        =A8 ]
                  [e#13        =A9 ]
                  [e#14        =A10 ]
                  [e#15        =A11 ]
                  [e#16        =A12 ]
                  [e#17        =A13 ]
                  [e#18        =A14 ]
                  [e#19        =A15 ]
                  [e#20        =A16 ]
                  [e#21        =A17 ]
                  [e#22        =A18 ]
                  [e#23        =A19 ]
                  [e#24        =A20 ]


                  [a#1        =E4         ]
                  [a#2        =E5        ]
                  [a#3        =E6        ]
                  [a#4        =E7        ]
                  [a#5        =E8    ]
                  [a#6        =E9        ]
                  [a#7        =E10        ]
                  [a#8        =E11        ]
                  [a#9        =E12        ]
                  [a#10        =E13        ]
                  [a#11        =E14    ]
                  [a#12        =E15        ]
                  [a#13        =E16        ]
                  [a#14        =E17        ]
                  [a#15        =E18    ]
                  [a#16        =E19        ]
                  [a#17        =E20        ]
                  [a#18        =E21        ]
                  [a#19        =E22        ]
                  [a#20        =E23        ]
                  [v#1 = 0]
                  ###[/DEF]###


                  ###[HELP]###

                  GUNTAMATIC MODBUS INTERFACE

                  Dieser Baustein liest das MODBUS Interface der Guntamatic Heizung aus, und gibt die gewählten Wert an A1-A20 aus.
                  falls mehr Werte benötigt werden, einfach einen 2. LBS nutzen. 

                  Es werden von den Heizungen unterschiedliche Werte zur Verfügung gestellt, es empfiehlt sich die Abfrage IP/ext/daqdesc.cgi?key=XXX 
                  durchzuführen um zu sehen welche werte zur Verfügung gestellt werden. IP ist dabei die IP der Heizung XXX der Key der von Guntamatic 
                  zur Verfügung gestellt wird (muss dort beantragt werden) bis SW-Version 3.00 wird der Key mMn nicht benötigt.

                  E1: Flag Baustein Aktiv 1/0 Ja/nein 
                  E2: IP Heizungssteuerung
                  E3: Guntamatic KEY
                  E4: LogLevel
                  E5-E24: Ausgangszuweisungen 

                  V 0.1 - Initale Version

                  ###[/HELP]###

                  ###[LBS]###
                  <?
                  function LB_LBSID($id) {
                    if ($E=getLogicEingangDataAll($id)) {
                     if (getLogicElementVar($id,1)!=1) {
                      setLogicElementVar($id,1,1);                      //setzt V1=1, um einen mehrfachen Start des EXEC-Scripts zu verhindern

                      if (!$E[1]['value']) {                                                    //IP Prüfen
                                  LB_LBSID_debug($id,"Abbruch, keine IP definiert",3);
                                  logic_setOutput($id,1,"Fehlende IP");
                              } else {
                      if (!$E[2]['value']) {                                                            //KEY Prüfen
                                  LB_LBSID_debug($id,"Abbruch, kein KEY definiert",3);
                                  logic_setOutput($id,1,"Fehlende KEY");
                              } else {
                              LB_LBSID_debug($id,"Starte EXEC-Teil",7);
                              callLogicFunctionExec(LBSID,$id);                 //EXEC-Script starten (garantiert nur einmalig)
                              writeToCustomLog("19201040",3,"Start EXEC");
                      }
                     }
                    }
                   }
                  }
                  function LB_LBSID_debug($id,$s,$l=6) {
                      $a=array("Emergency","Alert","Critical","Error","Warning","Notice","Informational","Debug");
                      $E=logic_getInputs($id);
                      $DEBUG=$E[9]['value'];
                      $l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s);
                  }

                  ?>
                  ###[/LBS]###

                  ###[EXEC]###
                  <?
                  require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
                  set_time_limit(0);                                       //Wichtig! Script soll endlos laufen
                  writeToCustomLog("19201040",3,"EXEC gestartet");
                  $E=logic_getInputs($id);
                      $DEBUG=$E[4]['value'];
                      $DEBUG && debug($id,"Baustein startet"); 
                      sql_connect();
                  writeToCustomLog("19201040",3,"SQL Connect durchgeführt");
                  writeToCustomLog("19201040",3,"Sys info");
                  while (getSysInfo(1)>=1) {
                                  writeToCustomLog("19201040",3,"Sys info");
                                  $url = "http://" . $E[2] ."/daqdata.cgi?key=" . $E[3];
                                  writeToCustomLog("19201040",3,"http://" . $E[2] ."/daqdata.cgi?key=" . $E[3]); 
                                  $ch = curl_init(); 

                                  curl_setopt ($ch, CURLOPT_URL, $url); 
                                  curl_setopt ($ch, CURLOPT_HEADER, 0); 

                                  ob_start(); 

                                  curl_exec ($ch); 
                                  curl_close ($ch); 
                                  $text = ob_get_contents();
                                  ob_end_clean(); 

                                     $text = str_replace("\r\n", "\n", $text); // windows -> linux
                                  $text = str_replace("\r", "\n", $text); // mac -> linux

                                  # array bilden
                                  $part = explode("\n", $text);

                                  for ($i = 4; $i < count($E); $i++) {
                                  logic_setOutput($id,$i-3,$Part[$i]); 
                                  }
                  writeToCustomLog("19201040",3,"logic_setOutput".$id .",".($i-3).",".$Part[$i]);
                  usleep(1000*500);                                      //z.B. 10ms warten - wichtig, um die CPU-Last zu begrenzen!
                  }
                  //}

                  finish();

                  function debug($id,$s,$l=6) {
                      $a=array("Emergency","Alert","Critical","Error","Warning","Notice","Informational","Debug");
                      global $DEBUG;
                      $l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s);
                  }

                  function finish() {
                      global $id;
                      debug($id,"Baustein beendet");
                      sql_disconnect();
                      exit();
                  }    
                  ?>
                  ###[/EXEC]###

                  Kommentar


                    #10
                    Schiebe mal dein sql_connect vor die Abfrage der Eingänge.

                    Kommentar


                      #11
                      ok, das hat zumindest soweit geholfen dass er die Variablen anscheinend einliest.

                      Das mit den Belegung stimmt aber noch nicht, er macht mir aus

                      writeToCustomLog("19201040",3,"http://" . $E[2] ."/daqdata.cgi?key=" . $E[3]);
                      http://Array/daqdata.cgi?key=Array

                      wieso interpretiert er $E[2] und $E[3] als Array und nicht als den Wert aus dem array?

                      Gruß

                      Michael

                      Kommentar


                        #12
                        Weil die syntax
                        Code:
                        $E[2]['value']
                        heist.

                        Kommentar


                          #13
                          danke

                          Kommentar


                            #14
                            Einen schönen Ostersonntag zusammen

                            das ganze gedeiht langsam. Ich habe nur noch 2 Fragen:

                            1) nachdem ich die Variable z eingebaut habe

                            Code:
                            for ($i = 5; $i < count($E); $i++) {
                            $z = $E[$i]['value'];
                            writeToCustomLog("19201040",3,"Variable Z: ".$z);
                            logic_setOutput($id,$i-3,$part[$z]['value']);
                            rennt mir das Errorlog voll mit Undefined index:

                            error_index.jpg

                            das Programm läuft aber und gibt die Werte zurück. Ignorieren will ich den error aber nicht, muss ja nen Grund haben. Und den Baustein brauch ich so net verteilen wenn in ner stunde 30.000 errors im log sind

                            2)

                            liefert mir $part[$z]['value'] immer nur das 1. Zeichen zurück.

                            eigentlich wäre es :

                            0 => string 'REGELUNG' (length=8)
                            1 => string '6.20' (length=4)
                            2 => string '40' (length=2)

                            bekommen tu ich:
                            2018-04-01 10:19:29 154640 2312 3 Variable Z: 0
                            2018-04-01 10:19:29 154901 2312 3 logic_setOutput411-2-R
                            2018-04-01 10:19:29 154942 2312 3 Variable Z: 1
                            2018-04-01 10:19:29 155090 2312 3 logic_setOutput411-3-6
                            2018-04-01 10:19:29 155118 2312 3 Variable Z: 2
                            2018-04-01 10:19:29 155282 2312 3 logic_setOutput411-4-4
                            sorry aber PHP is mir halt nicht so allerbest geläufig

                            schöne Ostern noch!

                            Hier der aktuelle Code


                            Gruß

                            Michael



                            PHP-Code:
                            ###[DEF]###
                            [name        = GUNTAMATIC MODBUS 0.1]

                            [e#1        =aktiv #init=1    ]
                            [e#2        =IP Heizung ]
                            [e#3        =KEY v. Guntamatic ]
                            [e#4        =LogLevel #init=1 ]
                            [e#5        =A1 ]
                            [e#6        =A2 ]
                            [e#7        =A3 ]
                            [e#8        =A4]
                            [e#9        =A5 ]
                            [e#10        =A6]
                            [e#11        =A7 ]
                            [e#12        =A8 ]
                            [e#13        =A9 ]
                            [e#14        =A10 ]
                            [e#15        =A11 ]
                            [e#16        =A12 ]
                            [e#17        =A13 ]
                            [e#18        =A14 ]
                            [e#19        =A15 ]
                            [e#20        =A16 ]
                            [e#21        =A17 ]
                            [e#22        =A18 ]
                            [e#23        =A19 ]
                            [e#24        =A20 ]


                            [a#1        =E4         ]
                            [a#2        =E5        ]
                            [a#3        =E6        ]
                            [a#4        =E7        ]
                            [a#5        =E8    ]
                            [a#6        =E9        ]
                            [a#7        =E10        ]
                            [a#8        =E11        ]
                            [a#9        =E12        ]
                            [a#10        =E13        ]
                            [a#11        =E14    ]
                            [a#12        =E15        ]
                            [a#13        =E16        ]
                            [a#14        =E17        ]
                            [a#15        =E18    ]
                            [a#16        =E19        ]
                            [a#17        =E20        ]
                            [a#18        =E21        ]
                            [a#19        =E22        ]
                            [a#20        =E23        ]
                            [v#1 = 0]
                            ###[/DEF]###


                            ###[HELP]###

                            GUNTAMATIC MODBUS INTERFACE

                            Dieser Baustein liest das MODBUS Interface der Guntamatic Heizung aus, und gibt die gewählten Wert an A1-A20 aus.
                            falls mehr Werte benötigt werden, einfach einen 2. LBS nutzen.

                            Es werden von den Heizungen unterschiedliche Werte zur Verfügung gestellt, es empfiehlt sich die Abfrage IP/ext/daqdesc.cgi?key=XXX
                            durchzuführen um zu sehen welche werte zur Verfügung gestellt werden. IP ist dabei die IP der Heizung XXX der Key der von Guntamatic
                            zur Verfügung gestellt wird (muss dort beantragt werden) bis SW-Version 3.00 wird der Key mMn nicht benötigt.

                            E1: Flag Baustein Aktiv 1/0 Ja/nein
                            E2: IP Heizungssteuerung
                            E3: Guntamatic KEY
                            E4: LogLevel
                            E5-E24: Ausgangszuweisungen

                            V 0.1 - Initale Version

                            ###[/HELP]###

                            ###[LBS]###
                            <?
                            function LB_LBSID($id) {
                              if ($E=getLogicEingangDataAll($id)) {
                               if (getLogicElementVar($id,1)!=1) {
                                setLogicElementVar($id,1,1);                      //setzt V1=1, um einen mehrfachen Start des EXEC-Scripts zu verhindern

                                if (!$E[1]['value']) {                                                    //IP Prüfen
                                            LB_LBSID_debug($id,"Abbruch, keine IP definiert",3);
                                            logic_setOutput($id,1,"Fehlende IP");
                                        } else {
                                if (!$E[2]['value']) {                                                            //KEY Prüfen
                                            LB_LBSID_debug($id,"Abbruch, kein KEY definiert",3);
                                            logic_setOutput($id,1,"Fehlende KEY");
                                        } else {
                                        LB_LBSID_debug($id,"Starte EXEC-Teil",7);
                                        callLogicFunctionExec(LBSID,$id);                 //EXEC-Script starten (garantiert nur einmalig)
                                        writeToCustomLog("19201040",3,"Start EXEC");
                                }
                               }
                              }
                             }
                            }
                            function LB_LBSID_debug($id,$s,$l=6) {
                                $a=array("Emergency","Alert","Critical","Error","Warning","Notice","Informational","Debug");
                                $E=logic_getInputs($id);
                                $DEBUG=$E[9]['value'];
                                $l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s);
                            }

                            ?>
                            ###[/LBS]###

                            ###[EXEC]###
                            <?
                            require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
                            set_time_limit(0);                                       //Wichtig! Script soll endlos laufen
                            writeToCustomLog("19201040",3,"EXEC gestartet");
                            sql_connect();
                            if ($E=logic_getInputs($id)) {
                                $DEBUG=$E[4]['value'];
                                $DEBUG && debug($id,"Baustein startet");

                            writeToCustomLog("19201040",3,"SQL Connect durchgeführt");
                            writeToCustomLog("19201040",3,"Sys info");
                            while (getSysInfo(1)>=1) {
                                            writeToCustomLog("19201040",3,"Sys info");
                                            $url = "http://" . $E[2]['value'] ."/daqdata.cgi?key=" . $E[3]['value'];
                                            writeToCustomLog("19201040",3,"http://" . $E[2]['value'] ."/daqdata.cgi?key=" . $E[3]['value']);
                                            $ch = curl_init();

                                            curl_setopt ($ch, CURLOPT_URL, $url);
                                            curl_setopt ($ch, CURLOPT_HEADER, 0);

                                            ob_start();

                                            curl_exec ($ch);
                                            curl_close ($ch);
                                            $text = ob_get_contents();
                                            ob_end_clean();

                                               $text = str_replace("\r\n", "\n", $text); // windows -> linux
                                            $text = str_replace("\r", "\n", $text); // mac -> linux

                                            # array bilden
                                            $part = explode("\n", $text);

                                            for ($i = 5; $i < count($E); $i++) {
                                            $z = $E[$i]['value'];
                                            writeToCustomLog("19201040",3,"Variable Z: ".$z);
                                            logic_setOutput($id,$i-3,$part[$z]['value']);
                                            writeToCustomLog("19201040",3,"logic_setOutput".$id ."-".($i-3)."-".$part[$z]['value']);                
                            }
                            usleep(1000*500);                                      //z.B. 10ms warten - wichtig, um die CPU-Last zu begrenzen!
                            }
                            }

                            finish();

                            function debug($id,$s,$l=6) {
                                $a=array("Emergency","Alert","Critical","Error","Warning","Notice","Informational","Debug");
                                global $DEBUG;
                                $l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s);
                            }

                            function finish() {
                                global $id;
                                debug($id,"Baustein beendet");
                                sql_disconnect();
                                exit();
                            }    
                            ?>
                            ###[/EXEC]###
                            Zuletzt geändert von HeMichael; 01.04.2018, 09:35. Grund: kleine Rechtschreib und Schönheitskorrekturen

                            Kommentar


                              #15
                              Zitat von HeMichael Beitrag anzeigen
                              logic_setOutput($id,$i-3,$part[$z]['value']);
                              Was genau soll denn $part[$z]['value'] sein?
                              in $z steht doch schon $E[$i]['value'].

                              Was genau willst du eigentlich machen? Ich verstehe es trotz lesen der Hilfe nicht?

                              $part enthält die gelesenen Zeilen, oder?
                              Was steht denn an deinen Eingängen E5-En? (Zeilennummern?)

                              Ist es richtig, dass du erst ab Ausgang 2 die Werte ausgeben willst, denn $i-3 nimmt im ersten Durchlauf den Wert 2 an? Was ist dann an Ausgang 1?

                              Ich vermute was du machen willst ist:

                              PHP-Code:

                              for ($i 5$i 25$i++)
                              if (
                              array_key_exists($E[$i]['value'],$part))
                                 
                              logic_setOutput($id,$i-4,$part[$E[$i]['value']]); 

                              Kommentar

                              Lädt...
                              X