falsches Abfrageergebnis????? Kategorie: Programmierung (von Markus - 12.11.2006 12:40) | ||
| ||
Hallo Gemeinde, ich versuche zur Zeit eine Rollosteuerung mit Hilfe von I/O Modulen 8574 zu programieren. In einem thread initialisiere ich die pcf. mit dem Ergebnis möchte ich eine "Freischaltung" der Ansteuerung der Module realisieren. Im Display erscheint der Ausgelesene Wert ,00 und die LED 4 geht an. Was soweit ja auch richitg ist. Nach meinem logioschen Verständnis sollte nun aber auch die LED 5 angehen, da das Ergbnis des Vergleichs ja ungleich ist -tu es aber nicht das Programm läuft weiter als wären die Wert gleich. Da ich im Forum des öfteren von Variablen Problemen der CC gelesen habe, habe ich auch mal den Vergleich herumgedreht -ohne Erfolg. Das Kuriose daran ist nun, das es gestern funktioniert hat. Ich sende die aktuellen Daten über hwcom in eine Excel Tabelle und mache damit das bugfixing. Hier kann ich die aktuellen Weret sehen - und die stimmten auf einmal nicht mehr mit der Realität überein. Hier habe ich nun die Display und LED Ausgabe eingefügt um zu sehen wo genau der Fehler wohnt. Hat jemnd eine Idee wo oder was der Fehler sein könnte?? Zum besseren Verständnis der aktuelle Code. danke Markus var. = Modul Variablendekaration var.RolloOn[Nummer des Rollo(0-15)] Staus des Rollos 0=Offline 1=Online // Rollo[0]= Init Ergebnis Modul[Nummer des Moduls(0-8)] 0= Offline 1=Online var.Modul[Nummer des Rollo(1-15)] 0-8 Nummer des Moduls Alle Globalen Variablen werden beim start auf 0 gesetzt //************ Testzeile int lop, OnTemp, Modul[15]; string text; thread On { var.RolloOn[0]=pcf.init(); // lesen welche Module online sind station_io.LEDtoggle(4);//*********************************** str.putintf(text,var.RolloOn[0],2);text=text+",";str.putintf(text,var.OldRollo,2);//********************* station_lcd.cursorpos(2,0);station_lcd.print(text);//*********************************** if var.RolloOn[0]!=var.OldRollo // nur lesen, wenn differenz {capture var.flag; station_io.LEDtoggle(5);//******************************* var.OldRollo=0; OnTemp=var.RolloOn[0]; // temp zuweisen if OnTemp>=256 // Wenn Bit gesetzt ist {OnTemp=OnTemp-256;Modul[8]=1;var.OldRollo=var.OldRollo+256;} // Variablen setzen else {Modul[8]=0;} if OnTemp>=128 // Wenn Bit gesetzt ist ........... if OnTemp>=1 {OnTemp=OnTemp-1;Modul[0]=1;var.OldRollo=var.OldRollo+1;} // Variablen setzen else {Modul0]=0;} for lop=1 ...15 {var.RolloOn[lop]=Modul[var.Modul[lop]];} release; } } | ||
Antwort schreiben Antworten: |