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

menue+eigene threads Kategorie: Programmierung (von dirk - 5.08.2009 0:03)
Ich nutze:
C-Control II Unit, CC2-Application-Board, OSOPT_V2
hallo,

moechte ein kleines demoprog. zur verfügung stellen. darin sind eigene
quasi-threads vorhanden.  eine menuefuehrung wird mit einer variablen umgesetzt.
für verbesserungen oder hinweise waere ich dankbar. :-)

//******************************************************************************
//hier können globale var's def. werden
int i;
//******************************************************************************
function temp12() //returns int
{
  //locale var's
  string s1,s2,s3,s4,s_out;
  float U1,U2,U3,R1,R2,R3,T1,T2,T3;
 
  lcdext.clear();
  s1="";
  U1=0.004*ports.adc(0);
  R1=5/U1-1;
  T1=1000/(math.ln(R1)/3.435+1000/298)-275;//-273
 
  if (T1 > 26) ports.set(14,1);
  if (T1 < 25) ports.set(14,0);

  s2="";
  U2=0.0049*ports.adc(1);
  R2=5/U2-1;
  T2=1000/(math.ln(R2)/3.435+1000/298)-274;//-273

  if (T2 > 28) ports.set(15,1);
  if (T2 < 27) ports.set(15,0);

  s3="";
  U3=0.004*ports.adc(2);
  R3=5/U3-1;
  T3=1000/(math.ln(R3)/3.435+1000/298)-274;//-273

  str.putfloatf(s1,T1,1);
  str.putfloatf(s2,T2,1);
  str.putfloatf(s3,T3,1);

  /*s_out=s1+";"+s2+";"+s3;
  hwcom.send(s_out,str.length(s_out));

  hwcom.put(10);
  hwcom.put(13);*/
 
  /*plm.beep(plm.TONE_DIS1);
  sleep 100;
  plm.beep(plm.TONE_OFF);*/

  s1="INN-TEMP :"+s1+" C";
  s2="OUT-TEMP :"+s3+" C";

  s3="DCF-ERR.";


  lcdext.print(s1);
  lcdext.goto(1,0);
  lcdext.print(s2);
 
  lcd.goto(0,0);
  lcd.print(s3,str.length(s3));

  lcd.goto(1,0);
  str.putint(s4,system.dcferr());
  lcd.print(s4,str.length(s4));
  /*lcd.goto(1,0);
  lcd.print(s3,str.length(s3));*/
  lcd.clreol();

  i=0;
  //return system.second();
  //return system.timer();  //systemtimer wird jede 1ms um 1erhöht
}
//******************************************************************************
function clock() //returns int
{
  string std, min, sec,monat,tag,jahr,s;
  int second;

  lcdext.clear();

  lcdext.goto(0,0);
  tag="";
  str.putintf(tag,system.day(),2);
  monat="";
  str.putintf(monat,system.month(),2);
  jahr="";
  str.putintf(jahr,system.year(),2);
  //s="";
  s="DATE :"+tag+":"+monat+":"+jahr;
  lcdext.print(s);

  second=system.second();
  lcdext.goto(1,0);
  std="";
  str.putintf(std,system.hour(),2);
  min="";
  str.putintf(min,system.minute(),2);
  sec="";
  str.putintf(sec,system.second(),2);
  //s="";
  s="TIME :"+std+":"+min+":"+sec;
  lcdext.print(s);

  //lcd.clreol();
 
  //return system.second();
}
//******************************************************************************
/*function temp3() returns int
{
  string s3;
  float U3,R3,T3;

  s3="";
  U3=0.004*ports.adc(2);
  R3=5/U3-1;
  T3=1000/(math.ln(R3)/3.435+1000/298)-274;//-273

  str.putfloatf(s3,T3,1);
  s3="T3:"+s3+"C";
  lcd.goto(1,0);
  lcd.print(s3,str.length(s3));
  lcd.clreol();

  return system.second();
  //return system.timer();  //systemtimer wird jede 1ms um 1erhöht
}*/
//******************************************************************************
function selector() returns int
{
 i=i+1;
 if (i==1) clock();
 if (i==2) temp12();
 return system.second();
}
//******************************************************************************
thread main
{
 ports.setb(1,0);
 i=0;
 lcd.init();
 sleep 200;
 lcdext.init();
 sleep 200;
 /*hwcom.init();
 hwcom.setspeed(hwcom.SPEED_9600);*/

 int t1_old,t2_old,t3_old;

 //t1_old=system.timer();
 //t1_old=system.second();
 t2_old=system.second();

 loop
 {
  //if (math.abs(system.timer()-t1_old) > 499) t1_old=temp(); //alle 0.5s ausführen
  //der system.timer läuft mit einem Takt von 1 ms!!!
  //if (math.abs(system.second()-t1_old) > 1) t1_old=temp12(); //alle 2s ausführen
  //if (math.abs(system.second()-t2_old) > 0) t2_old=clock();  //alle 1s ausführen

  if (math.abs(system.second()-t2_old) > 3) t2_old=selector();  //alle 2s ausführen

  //if (math.abs(system.second()-t3_old) > 1) t3_old=temp3();  //alle 2s ausführen
 }
}
//******************************************************************************


    Antwort schreiben


Antworten: