int bzw. long int und switch funktion
-
Hallo,
habe ein problem mit dem borland c++ 5.02 compiler. Ich habe mir eine Funktion für meine Wetterdaten programmiert. Hier verwende ich auch einen Sensor für die Helligkeit. Dabei ergibt sich das Problem, das man im Sommer mittags schon mal 120000Lux erreichen kann. Also habe ich es es mit einem integer und einer switch funktion probiert.
Das Problem ist, dass der int wert hell an verschiedenen Stellen im Programm benutzt wird. An einigen funktioniert er und an einer anderen wieder nicht.
Anbei ein Ausschnitt aus meinem Quelltext:
habe
long int hell=0;
und auch
int hell=0; ausprobiert.if ((type >= 0x58) && (type <= 0x5f)) {
printf("\n\r\tHelligkeit Aussensensor Version V1.2");
hell = ((0x7f&w[1])*0x80+(0x7f&w[2]))*4 + (0x3&w[3]);
printf("\n\r\tHelligkeit: %5ldEXP(%2d)", hell/4,0x3&hell);hell= s_log[j].hell/4;
switch (s_log[j].hell%4) {
case 1: hell =hell10;
break;
case 2: hell =hell100;
break;
case 3: hell =hell*1000;
break;
default: break;
}sprintf(tmpbuffer,
"<td><div align=%ccenter%c>%dL/m2</div></td>\n\r"
// "<td><div align=%ccenter%c>%dmm</div></td>\n\r"
"<td><div align=%ccenter%c>%6ldLux</div></td>\n\r",index = (2*tm.ti_hour)+(dt.da_day%LOG_DAYS)*LOG_SAMPLES_PER_DAY; // log 2 data set per hour
// max. LOG_DAYS days
if(tm.ti_min >= 30) i=index+1;
else i=index; // 30min samplings_log[i].dt.da_day = dt.da_day;
s_log[i].dt.da_mon = dt.da_mon;
s_log[i].dt.da_year = dt.da_year;
s_log[i].tm.ti_hour = tm.ti_hour;
s_log[i].tm.ti_min = tm.ti_min;
s_log[i].tm.ti_sec = tm.ti_sec;
s_log[i].feuchte = feuchte;
s_log[i].temperatur = temperatur;
s_log[i].druck = druck;
s_log[i].type = type;
s_log[i].regen = regen;
s_log[i].hell = hell;
s_log[i].feuchteI = feuchteI;
s_log[i].temperaturI = temperaturIIm Prinzip funktioniert das so. Obwohl ich bei einer höheren Release Version das Problem habe, das es nicht funktioniert. Ist dort genauso reinkopiert. (Compilerfehler!?)
In dem Release in dem es funktioniert, gibt es eine Stelle, wo der Wert falsch ausgegeben wird, obwohl es wie oben beschrieben eingesetzt wird.
In der Praxis sieht das ganze so aus:
http://wehrmann-power.dyndns.org/elv_dat.htm
Danke im voraus!
Gruß
Sven