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

Funktionen Kategorie: Programmierung (von ChristianS - 30.10.2009 12:15)
Ich nutze:
C-Control II Station, OSOPT V3.1
Hallo,
ich kann mir folgendes Phänomen nicht erklären, vielleicht kann mir jemand auf die Sprünge helfen:

function Ir () returns int
/******************************************************************************/
/*    Auswertung der Lichtschranke                                            */
/******************************************************************************/
{
   long t;
   t=timeout[0];                     //von int nach long konvertieren
   t=t*1000;
   if ports.get(ir) and ir_busy==0   //warten auf seigende Flanke
   {
    ir_busy=1;                                //Ir() hat High-Pegel
    ir_on=system.timer();                     //Zeitpunkt der steigenden Flanke
    //hwcom.print(" IR steigende Flanke");
    //hwcom.ret();
    reset timer0;                             //Timer nachtriggern
    t_start[0]=1;                             //Startflag für timer setzen
   }
  if not ports.get(ir) and ir_busy            //warten auf fallende Flanke
  {
   ir_busy=0;                                 //Ir() wieder Low
   //hwcom.print("IR fallende Flanke");
   //hwcom.ret();
  }
  if ir_busy
  if system.timer()-ir_on > t                 //auf timeout prüfen
   return 2;                                  //FehlerCode zurückgeben
 return ir_busy;                              //Status zurückgeben:
}                                             //0:= Ruhezustand
                                              //1:= High-Signal
/******************************************************************************/


1. Frage:
warum kann ich die Variable ir_on nicht lokal in der Funktion definieren? Wenn ich das tue,
dann funktioniert der timeout nicht und ir_on nimmt in der steigenden und fallen Flanke unter-
schiedliche Werte an. Delfiniere ich ir_on global, sind beide Werte identisch und der Timeout funzt.

2. Frage:
timeout[0] ist eine Konstante. Wieso funktioniert die Zeile
if system.timer()-ir_on>(timeout[0]*1000) nicht? Ich muss den Umweg über die Variable" t"
machen. Das verstehe ich auch nicht so ganz.

Vielen Dank,
ChristianS.


    Antwort schreiben


Antworten:

Re: Funktionen (von Heiko - 30.10.2009 20:02)