Fenster umschalten
-
Hallo, leute,
ich versuche einen Display mit dem µVision (Änlich dem c++, c#) zu programmieren. Es dient zur Steuerung einer Anlage mit mehreren schaltern.
Auf dem Display werden in jeweiligem Fenster die Schalterstellung ausgegeben und die Parameter der Anlage.
Es gibt Automatik und Manuell ausgabe auf dem Display.
Die Fensternamen fangen ab 100 an und enden mit 117Nun zum Beispiel:
Ich habe 17 Fenster:
|x| |x| || || |x| || || || |x| |x| || || || || |x| || |_|
Im Automatik Modus sollen nur die Fenster angezeigt werden wo der Schalte (In diesem Fall x) betätigt ist. Und das als Schleife bis man eingreift und auf Manuell umstellt.
Der Manuellteil ist bei mir fertig. Nur den Automodus bekomme ich nicht hin.Bitte um Hilfe
mfg
-
Was ich über µVision gerade gelesen habe, hat das überhaupt gar nichts mit C# oder C++ zu tun. Grundsätzlich ist µVision eine IDE für die C Programmierung auf Mikrocontrollern.
In diesem Forum bist du definitiv falsch, allerdings habe ich mühe das passende Forum für dich zu finden, weil du uns so gut wie keine Informationen gibst. Was für Fenster? Was für einen automatik/manuell Modus? Was für ein Display? Was für eine Bibliothek? Ich weiss nicht, ob dies irgendwie automatisch alles von der µVision IDE geliefert wird. Ist dein Problem C bezogen oder auf die µVision IDE? Oder auf die verwendete Bibliothek? Oder vielleicht doch eher Assembler?
Aktuell sehe ich 4 mögliche Foren, welche passen könnte:- Ansi C
- Assembler
- Rund um die Programmierung
- Compiler- und IDE-Forum
Hier im C# Bereich sind deine Chancen gering Hilfe zu bekommen, hilf mir also, dich korrekt zu verschieben
Grüssli
-
Die Programmierung ansich ist in diesem Fall änlich.
Ich brauche die Logick zum umschalten zwieschen den Fenstern.
Hier mal ein Bild von:
http://img828.imageshack.us/img828/4276/03082010045k.th.jpgim Automatik Modus soll das Programm vom Fenster zum Fenster rüberspringen. Aber nur zum Fenster die Aktiviert sind. Also Im Bild sieht man Quadrate mit einem minus in der Mitte, die sollen übersprungen werden. Das kann sich natürlich jederzeit ändern.
Hier ein Beispiel aus dem Quelcode.
if(Manuell==1) //Manuell Modus { Anzeigen(); strprint(30,1,7,669,LEFT); //Manuell men.tastsym[0]=13; //Symbole der Display-Keys men.tastsym[1]=19; men.tastsym[2]=8; men.tastsym[3]=9; switch (taste) { case C_LEFT: //Tastenabfrage { Anzeigen(); Manuell=0; men.tastsym[0]=14; //Symbole der Display-Keys men.tastsym[1]=19; men.tastsym[2]=14; men.tastsym[3]=14; break; } case ENTER: //Tasten Abfrage { menanfnr=2; //Menü 2 aufrufen break; } case C_RIGHT: //Tasten Abfrage { if(Seite==114) { Seite = 99; } menanfnr=Seite+1; break; } case C_DOWN: //Tasten Abfrage { if(Seite==100) { Seite =115; } menanfnr=Seite-1; break; } case C_UP: //Tasten Abfrage { menanfnr=90; //Menü 90 aufrufen break; } } }
Das ist mein Beispiel aus dem Manuell Betrieb.
Ich möchte, ein Beispiel:
schalter 1 ist an , dann Menü 1 darstellen(menanfnr=100 Hiermit wird das menü aufgerufen ). Ist sSchalter 2 aus überspringen, und so weiter.
-
Boss123 schrieb:
Die Programmierung ansich ist in diesem Fall änlich.
Aber nicht gleich und oft ist der Unterschied grösser als man denkt. So kannst du jedenfalls nicht argumentieren und dann einfach hier irgendein Unterforum auswählen. Wir haben viele Unterforen, welche deutlich besser zutrefffen als C#.
Dein Problem habe ich leider immer noch nicht ganz verstanden. Meiner Meinung nach hälst du immer noch Wissen zurück, welches für dich selbstverständlich erscheint, es aber tatsächlich nicht ist. Da es aber anscheinend um C geht und wohl eher ein Aufbau-Logik-Problem ist, werde ich dich mal ins Ansi C Forum verschieben.
Übrigens, ich habe bei deinem Beitrag noch CPP-Tags reingemacht, damit die Code-Formatierung besser wird. Das nächste Mal bitte selber machen. Den CPP Tags Button findest du unterhalb der Smilies.
@Ansi C Moderatoren,
Hier, euer Problem :pGrüssli
-
Dieser Thread wurde von Moderator/in Dravere aus dem Forum C# und .NET in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Also,
bei mir happerts an der umsetzung.
Nemhmen wir an es ist C++. Die Konvertierung mach ich später wenn die Logik da ist.Also:
Fenster 1 = true, Fenster 2=true, Fenster 3, 4 , 5 = false, Fenster 6,7 =true;If(Manuell ==1) //Manuell Modus { if(fenster 1==true) { menanfnr=101; // Menü 100 wird aufgerufen warte(3000); //warte 3 sec. } else menanfnr=102; // Menü 101 wird aufgerufen if fenster 2==true) { menanfnr=102; // Menü 100 wird aufgerufen warte(3000); //warte 3 sec. } else menanfnr=103; // Menü 2 wird aufgerufen if fenster 3==true) { menanfnr=103; // Menü 100 wird aufgerufen warte(3000); //warte 3 sec. } else menanfnr=104; // Menü 2 wird aufgerufen ... }
Einfaches umschalten zwieschen den Fenstern.
Mit dieser Logik wird das Fenster 4 aufgerufen obwohl der schalter aus ist.
Ich wes nicht wie ich das umgehen soll.
-
Boss123 schrieb:
Nemhmen wir an es ist C++.
wir nehmen an es ist ANSI C wenn wir schon mal da sind
-
Sind fenster1, 2, 3 usw. die Schalter? Welche Id hat denn nun das Fenster 4? Meinst du mit Fenster 4 wird aufgerufen, dass das Menü 4 aufgerufen wird? Ist Menü 4 die Id 104? Dann würde es aber zum Fenster 3 Schalter gehören? Und wieso steht in den Kommentaren, dass Menü 100 aufgerufen wird, aber es wird immer eine andere Id an
menanfnr
zugewiesen? Fragen über Fragen über Fragen ...Der Code ist das reinste Verwirrspiel.
Zudem solltest du dich mal für eine Programmiersprache entscheiden. Ich tippe immer noch darauf, dass es C ist, denn die μVision IDE wird für Mikrocontroller Programmierung beworben und es steht, dass da vor allem ein C Kompiler dabei sei. Was ja durchaus auch üblich für die Mikrocontroller Programmierung wäre.
Grüssli
-
Sind fenster1, 2, 3 usw. die Schalter?
Ja. Bei betätigtem Schalter wird das Fenster Aktiv geschaltet.
Welche Id hat denn nun das Fenster 4?
104
Mit dem Befehl menanfnr=104 Wird das Fenster 4 auf dem Display Angezeigt.
Wenn du dir das Bild anschauest, welches ich am anfang gepostet habe, dann siehst du da Q26 = Ein, das ist der Schalter der abgefragt wird. Zudem sieht man weiter rechts die Betriebsart. In diesem fall Auto.
Da drunter werden die Werte der Anlage ausgelesen (Strom, Spannung)Nach einer gewissen zeit (z.B 3s) sollte zum nächsten Schalter gesprungen werden, der an ist und die werte ausgegeben werden.
Der Sinn ist, in einem Automatik modus nur die Werte darzustellen bei dem die Schalter aktiv sind. Ganz unten sieht man schon im voraus welche schalter aktiviert und welche deaktiviert sind. Die mit dem Minus sollten übersprungen werden.
das ist eigentlich alles.
-
Ich habe den Code zwar nicht compiliert, aber ich vermute stark das wird auch nichts.
keine Ahnung wasif fenster 2==true)
sein soll...
Ich würde eine Structur Array machentypedef struct { struct { BOOL bVisible; int menanfnr; ... }tagFenster[17]; }TagInfo;
, die du mit allen Informationen zu den Fenstern fütterst. Im Automatic mode durchläufst du in einer Schleife alle Member und prüfst z.B ob bVisible true ist.
Gruss Binggi