Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Programmierung E-Dip 240 Kategorie: Programmierung (von wema - 27.01.2009 11:35)
Als Antwort auf Programmierung E-Dip 240 von Heiko - 18.01.2009 13:30
Ich nutze:
C164CI-ControllerBoard, CC2-ReglerBoard, OSOPT V3.1
Hallo User,

ich habe noch eine Frage zur Programmierung des E-Dip:
Zur Zeit habe ich einen Thread geschieben, der ständig im Hintergrund läuft und über wait den Interrupt
des E-Dip abfragt. Hier der Code:

//------------------------------------------------------------------------
thread touchabfrage  //Hier werden die Touchbuttons der eDIP's abgefragt
//------------------------------------------------------------------------

//  Dieser Thread läuft ständig im Hintergrund und fragt die Interruptleitung
//  des eDIP's ab - nach gedrückten Touchbuttons.
//  Bei einem entsprechenden Druck wird in die Globalvariable "def.edipTouch"
//  der aktuelle Wert des Buttons abgelegt

{

  //r=edip.receiveframe(def.edipAddr,Display1);
  // eDIP-Touch wird über Interrupt abgefragt, Port P1H.4, Wannenstecker Pin 5
  wait not ports.get(12); // nur weitermachen, wenn Interupt von edip vorliegt!
  {
    r=edip.receiveframe(def.edipAddr,Display1);
    /*
    Scheinbar wird in diesem Array bei der edip-Abfrage über receiveframe
    die Antwort als String abgelegt. Dabei bedeuten:
    t[0] = 'A' Touchtaste/-Schalter wurde gedrückt > t[2] = Nummer
         = 'N' Menüeintrag wurde gedrückt > t[2] = Menüeintrag
         = 'B' Bargraph wurde angewählt > t[2] = Bargraph + t[3] = Wert
         = 'T' Anforderung Touchmenü öffnen
         = 'H' Touchbereich > t[3] = x + t[4] = Y + t[2] = 0 (losgelassen)
                                                    t[2] = 1 (berührt)
                                                    t[2] = 2 (drag)
         = 'X' Touchschalter > t[2] = Schalter + t[3] = Status
         = 'V' Version > t[1] = Text (???)
    */

   
    // ab hier die weiteren Befehlsfolgen für die Edip nach Touch...
    do
    {
      a=edip.getRxData(Display1,t);
      if a<255 and a
      {
        def.edipBereich= t[0];  //siehe oben
        //def.edipT1=t[1];
        def.edipTouch = t[2];  //Touch
      }
    } while a<255 and a;
    sleep 100;
  }
}

Meine Frage: ist dies sinnvoll oder ist es besser, den gleichen Code nicht in einen Thread, sondern
in eine Funktion zu packen
und eben diese Funktion immer wieder aufzurufen, wenn man eine Eingabe über das E-Dip erwartet?

Danke für Eure Antworten,
Heiko


    Antwort schreiben


Antworten: