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

Re: Programmdurchlauf funktioniert nicht richtig!! Kategorie: Programmierung (von André H. - 4.09.2004 9:44)
Als Antwort auf Programmdurchlauf funktioniert nicht richtig!! von Peter - 2.09.2004 22:12
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT_V2, OSOPT V3.0
Hallo Peter,

> kann mal jemand bitte meinen Code checken. Ich glaube ich habe ein Problem mit einem ordentlichen
> Programmdurchlauf. Womöglich arbeit mein thread falsch und ich komme nie zu einer Stelle im Code.
> Oder kann ich das Problem irgendwie mit capture und release lösen.

Zuerst ein paar grundlegende Dinge:
1. Benutze immer das Code-Tag für Quellcode. Ansonsten kann man diesen nur schwer lesen und
    wird meistens auch falsch dargestellt, da einzelne Sonderzeichen ganze Passagen als HTML-Tag
    interpretiert werden können.
2. Poste bitte keine so langen Codes als Text direkt ins Posting !!
    Packe sich bitte als ZIP, lade diese auf einen WEB-Space Deiner Wahl und verlinke
    diese Datei dann im Text.
    Ansonsten wird sich kaum jemand die Mühe machen, sich mit Deinem Programm zu beschäftigen.
3. Wenn Du das Programm schon als Text postest, dann poste bitte nur das wesentliche und
    mit genauer Fehlerbeschreibung. Denn so wie ich es kurz überflogen habe, werden einige
    selbstdefnierte Module bzw. Erweiterungen benutzt, die keiner auÃ?er Dir kennen kann.
4. Optimiere das Programm etwas, um zeilen (und somit Code) zu sparen.
Als Bsp.:

Dies kann man auch einfacher schreiben:

     a2_var.y[1].port = 0;// Taster 0
     a2_var.y[2].port = 1; // Taster 1
     a2_var.y[3].port = 2; // Taster 2
     a2_var.y[4].port = 3; // Taster 3
     a2_var.y[5].port = 4; // Taster 4
     a2_var.y[6].port = 5; // Taster 5
     a2_var.y[7].port = 6; // Taster 6
     a2_var.y[8].port = 7; // Taster 7

     a2_var.y[9].port = 0; // Taster 8
     a2_var.y[10].port = 1; // Taster 9
     a2_var.y[11].port = 2; // Taster 10
     a2_var.y[12].port = 3; // Taster 11
     a2_var.y[13].port = 4; // Taster 12
     a2_var.y[14].port = 5; // Taster 13
     a2_var.y[15].port = 6; // Taster 14
     a2_var.y[16].port = 7; // Taster 15

     a2_var.y[17].port = 0;// Taster 0
     a2_var.y[18].port = 1; // Taster 1
     a2_var.y[19].port = 2; // Taster 2
     a2_var.y[20].port = 3; // Taster 3
     a2_var.y[21].port = 4; // Taster 4
     a2_var.y[22].port = 5; // Taster 5
     a2_var.y[23].port = 6; // Taster 6
     a2_var.y[24].port = 7; // Taster 7

     a2_var.y[25].port = 0; // Taster 8
     a2_var.y[26].port = 1; // Taster 9
     a2_var.y[27].port = 2; // Taster 10
     a2_var.y[28].port = 3; // Taster 11
     a2_var.y[29].port = 4; // Taster 12
     a2_var.y[30].port = 5; // Taster 13
     a2_var.y[31].port = 6; // Taster 14
     a2_var.y[32].port = 7; // Taster 15


Und zwar so:
  for i=0 ... 31 a2_var.y[i+1].port = 7t = i % 8;

Und schon spart man sich 31 Zeilen ...

Auch soetwas ist viel zu umständlich und unübersichtlich:

   a2_var.textoutput[0] = 'V';
   a2_var.textoutput[1] = 'e';
   a2_var.textoutput[2] = 'n';
   a2_var.textoutput[3] = 't';
   a2_var.textoutput[4] = 'i';
   a2_var.textoutput[5] = 'l';
   a2_var.textoutput[6] = '0';
   a2_var.textoutput[7] = '1';
   a2_var.textoutput[8] = 0;

   //touchlcd.textmode(3);
   touchlcd.touch_schalter(5,7,1,a2_var.textoutput,9);


Warum benutzt Du keine Strings?
In etwas so:
string text;
...
 text="Ventil010";
 touchlcd.touch_schalter(5,7,1,text,9);


Auch die Art mit den If-Abfragen als Switch kann man übersichlticher darstellen:
Also Ausschnitt:

   if menue == 3
   {
     a8_func.a3();
   }

   if menue == 4
   {
     a8_func.a4();
   }

   if menue == 5
   {
     a8_func.a5();
   }

   if menue == 6
   {
     a8_func.a6();
   }

   if menue == 7
   {
     a8_func.a7();
   }

   if menue == 8
   {
     a8_func.a8();
   }


   if menue == 9
   {
     a8_func.a9();
   }


Dies lässt sich so viel übersichlticher Schreiben:
...
   if menue == 3 a8_func.a3();
   else if menue == 4 a8_func.a4();
   else if menue == 5 a8_func.a5();
   else if menue == 6 a8_func.a6();
   else if menue == 7 a8_func.a7();
   else if menue == 8 a8_func.a8();
   else if menue == 9 a8_func.a9();
   ...



Das sind alles Kleinigkeiten, die ein Programm übersichlticher machen und auch die Fehlersuche
erleichtern. So habe ich auf jeden Fall keine Lust und Zeit die Routinen nach Fehlern zu
durchforsten.

MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten: