Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: switch Abfrage Kategorie: Programmierung C (von Josef - 28.10.2015 23:12)
Als Antwort auf Re: switch Abfrage von Josef - 28.10.2015 23:08

ich sende dir für den Test noch das komplette Prg

> Anbei sende ich dir die screenshots.
> Beim screenshot 1 mit aktivierten U Prg funktioniert das Prog. Jetzt wird die Endlosschleife
> nicht mehr unterbrochen, wenn das Prg so wie im screenshot 2 compiliert wird. Jedoch habe ich
> am Display keine Anzeige mehr.
>
>
> > Also eigentlich gibt's keine Beschränkung bei Switch.
> > Wenn Du mal das Prog. soweit abspeckst und als Demo hier als Dateianhang anfügen würdest ging es
> > schneller mit Debuggen :-)
> >
> > Evtl. auch einen Screenshot deiner Fehlermeldung.
> >
> >
> > > > > Hallo zusammen,
> > > > >
> > > > > habe eine sehr lange switch Abfrage. Caseabfragen sinds ca. 30.
> > > > > Gibt es hier eine Begrenzung der Befehlszeilen?
> > > > > Das Problem tritt auf, wenn ich in einer caseabfrage mehr
> > > > > als 16 Befehlszeilen habe. Beim compilieren wird keine Fehlermeldung angezeigt.
> > > > > Der Start wird trotz Endlosschleife jedoch nach 250ms unterbrochen.
> > > > > Habe die Befehlszeilen in ein U-Prg ausgelagert, dann funktionierts.
> > > > >
> > > >
> > > > Kannst du das Bespiel hier mal als Zip anhängen zum testen?
> > > >
> > > Danke für die rasche Antwort.
> > >
> > > Ich hänge mal das U-Prg an in dem es passiert ist. In Zeile 200 und 204 habe ich die Befehlszeilen
> > > und ein weiteres U-Prg auslagern müssen.(Zeile habe ich fett gekennzeichnet)
> > > In diesem U-Prg werden von einem Touchdisplay die vorher definierten Tasten beim Seitenwechsel
> > > gelöscht.
> > >
> > > // -- Bei der Definition neuer Touchpages sind die vorigen Seiten zu löschen ---
> > > void page_change(void)
> > > {
> > >   eDIP_cmd16(0,'R','L',0,51,480,255,d16,d16);       // Bereich löschen
> > >   eDIP_cmd16(0,'R','L',150,254,350,272,d16,d16);    // Bereich löschen
> > >   switch (m_page)             // Vorige Touchbereiche löschen
> > >   {
> > >     case pageError:
> > >     eDIP_cmd4_8('A','L',Error_return,1);
> > >     eDIP_cmd4_8('A','L',Error_reset,1);
> > >     break;
> > >     case page1:
> > >     eDIP_cmd4_8('A','L',menu_down,1);
> > >     eDIP_cmd4_8('A','L',pageWG_MWdown,1);     // Vesteckte Taste für WG Daten
> > >     eDIP_cmd4_8('A','L',page_E_KFZ_down,1);   // Vesteckte Taste für KFZ-Ladedaten
> > >     if (page!=pageE_KFZ)            // sonst wird in KFZ Seite das Menü angezeigt
> > >     {
> > >       if (menu==page3_menu) TOUCHMENU3_DELETE();
> > >       if (menu==page2_menu) TOUCHMENU2_DELETE();
> > >       if (menu==page1_menu) TOUCHMENU1_DELETE();
> > >       Menu_page1();               //Menüanzeige initialisieren
> > >       menu=page1_menu;
> > >       m_menu=menu;
> > >       eDIP_cmd4_8('A','P',pagePVdown,1);      //Schalter PV-Seite stellen
> > >     }
> > >     else eDIP_cmd16(0,'R','L',0,0,480,255,d16,d16);       // gesamten Bereich löschen
> > >     break;
> > >     case pageE_KFZ:
> > >     eDIP_cmd4_8('A','L',E_KFZvoll_down,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',E_KFZ_4h_down,1);
> > >     eDIP_cmd4_8('A','L',E_KFZ_7h_down,1);
> > >     eDIP_cmd4_8('A','L',E_KFZ_Eco_down,1);
> > >     eDIP_cmd4_8('A','L',E_KFZ_Ecoplus_down,1);
> > >     eDIP_cmd4_8('A','L',E_KFZ_AUS_down,1);
> > >     eDIP_cmd4_8('A','L',menu_ret_down,1);
> > >     break;
> > >     case pageWG:
> > >     eDIP_cmd4_8('A','L',BeschOBENdown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',BeschUNTENdown,1);
> > >     eDIP_cmd4_8('A','L',FensterZUdown,1);
> > >     eDIP_cmd4_8('A','L',FensterOFFENdown,1);
> > >     eDIP_cmd4_8('A','L',KlappeZUdown,1);
> > >     eDIP_cmd4_8('A','L',KlappeOFFENdown,1);
> > >     eDIP_cmd4_8('A','L',SpeicherAUSdown,1);
> > >     eDIP_cmd4_8('A','L',SpeicherEINdown,1);
> > >     eDIP_cmd4_8('A','L',WGBautodown,1);
> > >     eDIP_cmd4_8('A','L',WGFautodown,1);
> > >     eDIP_cmd4_8('A','L',WGKautodown,1);
> > >     eDIP_cmd4_8('A','L',WGSautodown,1);
> > >     break;
> > >     case pageAlarm:
> > >     eDIP_cmd4_8('A','L',Al_Start_plus,1);
> > >     eDIP_cmd4_8('A','L',Al_Ende_plus,1);
> > >     eDIP_cmd4_8('A','L',Al_Start_minus,1);
> > >     eDIP_cmd4_8('A','L',Al_Ende_minus,1);
> > >     eDIP_cmd4_8('A','L',Al_ein_down,1);
> > >     eDIP_cmd4_8('A','L',Al_ein_down,1);
> > >     eDIP_cmd4_8('A','L',Al_Panik_down,1);
> > >     eDIP_cmd4_8('A','L',Al_Urlaub_down,1);
> > >     eDIP_cmd4_8('A','L',Al_StiegeLicht_down,1);
> > >     break;
> > >     case pageRollDach:
> > >     eDIP_cmd4_8('A','L',RSobendown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',RSuntendown,1);
> > >     eDIP_cmd4_8('A','L',RSautodown,1);
> > >     eDIP_cmd4_8('A','L',RBobendown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',RBuntendown,1);
> > >     eDIP_cmd4_8('A','L',RBautodown,1);
> > >     eDIP_cmd4_8('A','L',RKobendown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',RKuntendown,1);
> > >     eDIP_cmd4_8('A','L',RKautodown,1);
> > >     break;
> > >     case pagePV:
> > >     eDIP_cmd4_8('A','L',WR_LufterON,1);
> > >     eDIP_cmd4_8('A','L',WR_LufterOFF,1);
> > > //    eDIP_cmd4_8('A','L',Speich_pumpON,1);
> > > //    eDIP_cmd4_8('A','L',Speich_pumpOFF,1);
> > > //    eDIP_cmd4_8('A','L',Speich_pumpautodown,1);
> > >     break;
> > >     case pageBewBLicht:
> > >     eDIP_cmd4_8('A','L',BewassrgONdown,1);
> > >     eDIP_cmd4_8('A','L',BewassrgOFFdown,1);
> > >     eDIP_cmd4_8('A','L',Bewassrg_Start1,1);
> > >     eDIP_cmd4_8('A','L',Bewassrg_Lauf1,1);
> > >     eDIP_cmd4_8('A','L',Bewassrg_Start2,1);
> > >     eDIP_cmd4_8('A','L',Bewassrg_Lauf2,1);
> > >     eDIP_cmd4_8('A','L',BLichtONdown,1);
> > >     eDIP_cmd4_8('A','L',BLichtOFFdown,1);
> > >     eDIP_cmd4_8('A','L',BLicht_Start,1);
> > >     eDIP_cmd4_8('A','L',BLicht_Lauf,1);
> > >     break;
> > >     case pageZSaugTeichp:
> > >     eDIP_cmd4_8('A','L',H2O_EnthartgON,1);
> > >     eDIP_cmd4_8('A','L',H2O_EnthartgOFF,1);
> > >     eDIP_cmd4_8('A','L',ZSaugerON,1);
> > >     eDIP_cmd4_8('A','L',ZSaugerOFF,1);
> > >     eDIP_cmd4_8('A','L',ZSauger_Nachl,1);
> > >     eDIP_cmd4_8('A','L',TeichpONdown,1);
> > >     eDIP_cmd4_8('A','L',TeichpOFFdown,1);
> > >     eDIP_cmd4_8('A','L',TeichpTIME1,1);
> > >     eDIP_cmd4_8('A','L',TeichpTIME2,1);
> > >     eDIP_cmd4_8('A','L',TeichpAUTO,1);
> > >     break;
> > >     case pageRollKUCHE:                   // Touchs von Rolladen Küche löschen
> > >     eDIP_cmd4_8('A','L',RKNeinfdown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',RKNausfdown,1);
> > >     eDIP_cmd4_8('A','L',RKNautodown,1);
> > >     eDIP_cmd4_8('A','L',RKOeinfdown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',RKOausfdown,1);
> > >     eDIP_cmd4_8('A','L',RKOautodown,1);
> > >     case pageRollWZ:                   // Touchs von Rolladen Wohnzimmer löschen
> > >     eDIP_cmd4_8('A','L',RWZTeinfdown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',RWZTausfdown,1);
> > >     eDIP_cmd4_8('A','L',RWZTautodown,1);
> > >     eDIP_cmd4_8('A','L',RWZSeinfdown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',RWZSausfdown,1);
> > >     eDIP_cmd4_8('A','L',RWZSautodown,1);
> > >     eDIP_cmd4_8('A','L',RWZWeinfdown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',RWZWausfdown,1);
> > >     eDIP_cmd4_8('A','L',RWZWautodown,1);
> > >     break;
> > >     case pageRollOG:                      // Touchs von Rolladen OG löschen
> > >     eDIP_cmd4_8('A','L',RGOeinfdown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',RGOausfdown,1);
> > >     eDIP_cmd4_8('A','L',RGOautodown,1);
> > >     eDIP_cmd4_8('A','L',RGTeinfdown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',RGTausfdown,1);
> > >     eDIP_cmd4_8('A','L',RGTautodown,1);
> > >     eDIP_cmd4_8('A','L',RSTeinfdown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',RSTausfdown,1);
> > >     eDIP_cmd4_8('A','L',RSTautodown,1);
> > >     eDIP_cmd4_8('A','L',RKWeinfdown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',RKWausfdown,1);
> > >     eDIP_cmd4_8('A','L',RKWautodown,1);
> > >     break;
> > >     case pageFS20:                   // Touchs von Rolladen Küche löschen
> > >     FS20_CLEAR();               // U-Prg notwendig, da zu viel Befehlzeilen für switch
> > >     RS232=WR_RS;                        // RS232 auf WR zurückstellen (Mux und Baudrate)
> > >     break;
> > >     case pageHEIZUNG_STAT:                   // Touchs löschen
> > >  HEIZUNG_STAT_CLEAR();       // U-Prg notwendig, da zu viel Befehlzeilen für switch      
> > >     break;
> > >     case pageHEIZUNG_EINSTLLG:                   // Touchs löschen
> > >     eDIP_cmd4_8('A','L',Hzgwahl_down,1);
> > >     eDIP_cmd4_8('A','L',HK_Tempdown,1);
> > >     eDIP_cmd4_8('A','L',FBH_Tempdown,1);
> > >     break;
> > >     case pageHEIZUNG_ZEIT:                   // Touchs von Rolladen Küche löschen
> > >     eDIP_cmd4_8('A','L',GasZeitdown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',PufferZeitdown,1);
> > >     eDIP_cmd4_8('A','L',FBH_Zeitdown,1);
> > >     break;
> > >     case pageHEIZUNG_ENERGIE:
> > >     eDIP_cmd4_8('A','L',StartEnergie,1);
> > >     eDIP_cmd4_8('A','L',StopEnergie,1);
> > >     break;
> > >   }
> > >   if (menu!=m_menu)
> > >   {
> > >     switch (m_menu)             // Vorige Touchbereiche löschen
> > >     {
> > >     case page3_menu:
> > >       TOUCHMENU3_DELETE();
> > >       Menu_page1();               //Menüanzeige initialisieren
> > >       page=pagePV;
> > >       eDIP_cmd4_8('A','P',pagePVdown,1);      //Schalter PV-Seite stellen
> > >     break;
> > >     case page2_menu:
> > >       TOUCHMENU2_DELETE();
> > >       Menu_page3();               //Menüanzeige initialisieren
> > >       page=pageHEIZUNG_TMP;
> > >       eDIP_cmd4_8('A','P',pageHEIZUNG_TMPdown,1);      //Schalter PV-Seite stellen
> > >     break;
> > >     case page1_menu:
> > >       TOUCHMENU1_DELETE();
> > >       Menu_page2();               //Menüanzeige initialisieren
> > >       page=pageRollDach;
> > >       eDIP_cmd4_8('A','P',pageRollDach_down,1);      //Schalter
> > >     break;
> > >     }
> > >     m_menu=menu;
> > >   }
> > >   switch (page)                                         // Seitenauswahl
> > >   {
> > >     case pageError:
> > >     ERROR_INIT();
> > >     ERROR_ANZ();
> > >     break;
> > >     case page1:
> > >     PAGE1_INIT();                           // Seite 1 aktivieren
> > >     PAGE1_ANZ();
> > >     break;
> > >     case pageE_KFZ:
> > >     PAGE_E_KFZ_INIT();
> > >     PAGE_E_KFZ_ANZ();
> > >     break;
> > >     case pageWG_MW:
> > >     WG_MW_INIT();
> > >     WG_MW_ANZ();
> > >     break;
> > >     case pageBewBLicht:
> > >     BLICHT_INIT();
> > >     BLICHT_ANZ();
> > >     break;
> > >     case pageWG:
> > >     WG_INIT();
> > >     WG_ANZ();
> > >     break;
> > >     case pagePV:
> > >     PV_INIT();
> > >     PV_ANLAGE();
> > >     PV_ANZ();
> > >     break;
> > >     case pageAlarm:
> > >     ALARM_INIT();
> > >     ALARM_ANZ();
> > >     break;
> > >     case pageZSaugTeichp:
> > >     ZSAUG_TEICHP_H2OENTHARTG_INIT();
> > >     ZSAUG_TEICHP_H2OENTHARTG_ANZ();
> > >     break;
> > >     case pageRollDach:
> > >     ROLL_DACH_INIT();
> > >     ROLL_DACH_ANZ();
> > >     break;
> > >     case pageRollKUCHE:
> > >     ROLL_KUCHE_INIT();
> > >     ROLL_KUCHE_ANZ();
> > >     break;
> > >     case pageRollWZ:
> > >     ROLL_WZ_INIT();
> > >     ROLL_WZ_ANZ();
> > >     break;
> > >     case pageRollOG:
> > >     ROLL_OG_INIT();
> > >     ROLL_OG_ANZ();
> > >     break;
> > >     case pageFS20:
> > >     RS232=FS20page_RS;             // RS232 auf FS20 stellen (Mux und Baudrate)
> > >     FS20_INIT();
> > >     FS20_ANZ();
> > >     break;
> > >     case pageHEIZUNG_STAT:
> > >     HEIZUNG_STAT_INIT();
> > >     HEIZUNG_STAT_ANZ();
> > >     break;
> > >     case pageHEIZUNG_EINSTLLG:
> > >     HEIZUNG_EINSTLLG_INIT();
> > >     HEIZUNG_EINSTLLG_ANZ();
> > >     break;
> > >     case pageHEIZUNG_ZEIT:
> > >     HEIZUNG_ZEIT_INIT();
> > >     HEIZUNG_ZEIT_ANZ();
> > >     break;
> > >     case pageHEIZUNG_TMP:
> > >     HEIZUNG_TMP_INIT();
> > >     HEIZUNG_TMP_ANZ();
> > >     break;
> > >     case pageHEIZUNG_ENERGIE:
> > >     HEIZUNG_ENERGIE_INIT();
> > >     HEIZUNG_ENERGIE_ANZ();
> > >     break;
> > >
> > >   }
> > >   if (month) DATUM();
> > >   m_page=page;
> > > }
> > > void FS20_CLEAR(void)
> > > {
> > >     eDIP_cmd4_8('A','L',RKNtimedown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',RKOtimedown,1);
> > >     eDIP_cmd4_8('A','L',RWZTtimedown,1);
> > >     eDIP_cmd4_8('A','L',RWZStimedown,1);
> > >     eDIP_cmd4_8('A','L',RWZWtimedown,1);
> > >     eDIP_cmd4_8('A','L',RGOtimedown,1);
> > >     eDIP_cmd4_8('A','L',RGTtimedown,1);
> > >     eDIP_cmd4_8('A','L',RSTtimedown,1);
> > >     eDIP_cmd4_8('A','L',RKWtimedown,1);
> > > }
> > > void HEIZUNG_STAT_CLEAR(void)
> > > {
> > >     eDIP_cmd4_8('A','L',HEIZGautodown,1);   // vorige Touchbereiche löschen
> > >     eDIP_cmd4_8('A','L',HEIZGhanddown,1);
> > >     eDIP_cmd4_8('A','L',GasEINdown,1);
> > >     eDIP_cmd4_8('A','L',PufferEINdown,1);
> > >     eDIP_cmd4_8('A','L',HK_EINdown,1);
> > >     eDIP_cmd4_8('A','L',HK_AUSdown,1);
> > >     eDIP_cmd4_8('A','L',FBH_EINdown,1);
> > >     eDIP_cmd4_8('A','L',FBH_AUSdown,1);
> > >     eDIP_cmd4_8('A','L',OfenEINdown,1);
> > >     eDIP_cmd4_8('A','L',OfenAUSdown,1);
> > >     eDIP_cmd4_8('A','L',HKMischerAUFdown,1);
> > >     eDIP_cmd4_8('A','L',HKMischerZUdown,1);
> > >     eDIP_cmd4_8('A','L',FBHMischerAUFdown,1);
> > >     eDIP_cmd4_8('A','L',FBHMischerZUdown,1);
> > > }

ZIP.zip




    Antwort schreiben


Antworten:

Re: switch Abfrage (von Josef - 1.11.2015 10:37)
    Re: switch Abfrage (von Josef - 1.11.2015 12:13)
        Re: switch Abfrage (von Josef - 1.11.2015 12:27)
            Re: switch Abfrage (von UlliS - 2.11.2015 8:59)
                Re: switch Abfrage (von Josef - 2.11.2015 21:06)
                    Re: switch Abfrage (von Josef - 4.11.2015 20:52)