+ Antworten
Ergebnis 1 bis 1 von 1
  1. #1
    Registriert seit
    Oct 2005
    Ort
    Gehrden / Hannover
    Beiträge
    501

    Standard eDip-PHP-Hilfsklasse

    Ich habe mal eine kleine Hilfsklasse für die eDip240 zusammengenagelt.

    Die Klasse übernimmt die ausgehende Kommunikation zum eDip und kümmert sich im Prinzip um alles .

    Benutzte das Teil für mein eDip (Bild unten angehängt).


    Hier mal ein Beispielcode:
    PHP-Code:
    // Klasse einbinden
    require_once("edip.class.php");

    /* Objektinstanz bauen
     * Man kann dem Objekt sowohl direkt eine Comport-Instanz geben
     * oder eine Registervariable.
     * Das Objekt unterscheidet das dann selbstständig
     */ 
    $edip=new edip(55804 /*[edip Com Port]*/ );
    // oder
    //$edip=new edip(58522  /*[eDip\Register Variable]*/);

    // Hier kann die Wartezeit zwischen den einzelnen Kommandos angegeben werden
    $edip->send_delay=0;

    // Und hier gehts auch schon los:
    $edip->DL(); // Display leeren
    $edip->YH(80); // helligkeit auf 80
    $edip->RT(0,20,240,100,2); // einen Rahmen generieren

    //Alle Kommandos können auch in einer Kette angegeben werden (PHP Method Chaining):
    $edip->ZF(6)->ZV(3)->ZL(36,34,"~IPS~-eDIP-PHP|Klasse v0.8"); 
    Es können ALLE Kommandos genutzt werden die auch im Datenblatt angegeben sind. (Eigentlich auch alle die da nicht drinstehen )

    Ich weiss leider nicht mehr von wem hier aus dem Forum die Funktion "edip_send" ist. Ich möchte aber zumindest darauf hinweisen das diese NICHT von mir ist!

    Hier die Klasse:

    PHP-Code:
    <?
    // Version 0.8
    /*

    Installation: Eine neue Scriptinstanz erstellen. Den Dateinamen (!!!) 
    (nicht den Scriptnamen) dann auf "edip.class.php" setzen damit der Include funktioniert!

    */
    class edip{

        var 
    $_COMPORT=false;
        var 
    $send_delay=0;
        var 
    $_DEBUG=false;

        function 
    edip($com_inst){
            
    $this->_COMPORT=$com_inst;
            
    $this->_getComType();
        }
        
        
    /**
         * Funktionen für das eOnline-XBEE-eDip-Board
         * HINWEIS: Bei mir (?) ist es so das die dritte LED auf Port 4 ist.
         **/
        
    function led1($state=1){return $this->out(7,$state);}
        function 
    led2($state=1){return $this->out(6,$state);}
        function 
    led3($state=1){return $this->out(4,$state);}

        
    /**
         * Setzt den Outputport $port auf den Status $state (0,1,2)
         **/
        
    function out($port,$state=1){
            return 
    $this->YW($port,$state);
        }

        
    /**
         * PHP Magic ;)
         **/
        
    function __call($method,$arguments){
           foreach(
    $arguments AS $ak=>$av)
              
    $arguments[$ak]=(string)$av;
            
    $call="#".$method.implode(",",$arguments);
            
    $this->debug($call);
            
    $this->edip_send($call);
            return 
    $this;
        }
        
        
        function 
    edip_send($string){
            
        
    //*********************************************************************
        // Sonderzeichen wandeln
        //*********************************************************************
            
    $string str_replace("Ä","Ä",$string);
            
    $string str_replace("ä","ä",$string);
            
    $string str_replace("Ö","Ö",$string);
            
    $string str_replace("ö","ö",$string);
            
    $string str_replace("%F6","ö",$string);
            
    $string str_replace("%FC","ü",$string);
            
    $string str_replace("Ãœ","Ü",$string);
            
    $string str_replace("ü","ü",$string);
            
    $string str_replace("ß","ß",$string);
            
    $string str_replace("Ä""\x8E"$string);
            
    $string str_replace("ä""\x84"$string);
            
    $string str_replace("Ö""\x99"$string);
            
    $string str_replace("ö""\x94"$string);
            
    $string str_replace("ü""\x81"$string);
            
    $string str_replace("Ü""\x9A"$string);
            
    $string str_replace("ß""\xE1"$string);
            
    $string str_replace(",""\xFB"$string);   // Komma in Sonderzeichen


            
    $string $string.chr(13); //`nen Abschlusszeichen ans Ende zufügen
            
    $string chr(17).chr(strlen($string)).$string//<DC1>=chr(17) und die Länge voranstellen
            
    $s1 0;
            for(
    $i 0$i strlen($string); $i++){
                    
    $s1 $s1 ord(substr($string$i1));  // Prüfsumme Bilden... hierzu alle Byte Saldieren
                
    }
             
    $string .= chr($s1 256); // Modulo 256 der Summe aller Byte an den String hängen

                
    $this->_send($string);
        }

        
    /**
         * Daten an eDIP senden
         * Je nach Instanztyp (Serial oder RegisterVar)
         **/
        
    function _send($data){
           if(
    $this->_COMINSTNAME=="Serial Port"){
            
    COMPort_SendText($this->_COMPORT,$data);
            }elseif(
    $this->_COMINSTNAME=="Register Variable"){
                
    RegVar_SendText($this->_COMPORT,$data);
            }
            
            
    ips_sleep($this->send_delay);
        }

        
    /**
         *
         **/
        
    function _getComType(){
          
    $instinfo        =IPS_GetInstance($this->_COMPORT);
          
    $insttypeid        =$instinfo['ModuleInfo']['ModuleID'];
            
    $insttypename    =$instinfo['ModuleInfo']['ModuleName'];
            
    $this->_COMINSTNAME=$insttypename;
        }
        
        
        function 
    debug($text){
            if(
    $this->_DEBUG)
               echo 
    $text."\n";
        }
    }
    ?>
    Geändert von sysrun (16.05.10 um 17:34 Uhr)

Ähnliche Themen

  1. xBEE und eDIP auf Leiterplatte
    Von andrge im Forum IPS-868 / ProJET, XBee, ZigBee, XPort
    Antworten: 5
    Letzter Beitrag: 21.01.10, 21:35
  2. edip schläft ein und wird nicht wieder wach
    Von NBA im Forum Alles rund um den PC
    Antworten: 4
    Letzter Beitrag: 11.11.09, 22:51
  3. IP-Symcon & PHP 5.3
    Von icey im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 2
    Letzter Beitrag: 19.06.09, 23:36
  4. Problem - PHP version 5.1 und extensions
    Von daniel1005 im Forum Allgemeine Diskussion
    Antworten: 4
    Letzter Beitrag: 30.11.05, 21:29