LEDs



  • Hy leute,

    ich hab ein kleines problem und bitte um unterstutzung:
    mit diese switch anweisung will ich ein paar led zu leuchten bringen

    if (i==5)
    		{
                switch (DpData.InputData[i])
    		{
    			case 0X04:m_CLOSED1.ShowWindow(TRUE);
    				      m_CLOSED2.ShowWindow(FALSE);	
    		              break;
    
    			case 0X05:m_SENS11.ShowWindow(TRUE);
    				      m_SENS12.ShowWindow(FALSE);
    		              break;
    
    			case 0X0C:m_SENSEXT1.ShowWindow(TRUE);
    		              m_SENSEXT2.ShowWindow(FALSE);
    				      break;
    
    			  case 0X06:m_SENS21.ShowWindow(TRUE);
    				        m_SENS22.ShowWindow(FALSE);	
    		              break;
    
    			  default:m_SENS11.ShowWindow(FALSE);
    				      m_SENS12.ShowWindow(TRUE);
    				      m_SENSEXT1.ShowWindow(FALSE);
    				      m_SENSEXT2.ShowWindow(TRUE);
    				      m_SENS21.ShowWindow(FALSE);
    				      m_SENS22.ShowWindow(TRUE);		    	
    		}
    		}
    

    es Klappt beim leuchten aber anscheind wird default nicht angenommen die leds werden nicht zuruckgesetzt!!oder hab etwa falsch programmiert??
    danke voraus



  • Hi leute,

    kann keiner hilfe anbieten. 😡



  • 1. Hab Geduld 🙂
    2. Code Tags wären nett - hab ich mal nachgebessert 🙄
    3. Wo sind da LEDs?
    4. Schau doch mal per Debugger, ob du überhaupt im default-Zweig lang kommst.


  • Mod

    Alex Andrej schrieb:

    kann keiner hilfe anbieten. 😡

    Wir soll Dir da jemand helfen?

    Offensichtlich bestehen Deine Wert eben nur aus 0x04, 0x05, 0x06, 0x0C!
    Dann kann eben der default nicht anspringen.
    Kontrolliere eher alle Werte die DpData.InputData[i] liefern kann!



  • Am besten bastelst Du Dir ein MessageBox( DpData.InputData[i] ) (vorher formatieren, damit es als String durchgeht) und schaust Dir an, ob Du wirklich nur die Werte in den case-Zweigen erhälst. Dann musst Du Dich um die Logik kümmern.



  • Erhard Henkes schrieb:

    Am besten bastelst Du Dir ein MessageBox( DpData.InputData[i] ) (vorher formatieren, damit es als String durchgeht) und schaust Dir an, ob Du wirklich nur die Werte in den case-Zweigen erhälst...

    und wenn man sich sowas sparen will: visual studio hat einen wirklich guten eingebauten debugger...



  • visual studio hat einen wirklich guten eingebauten debugger...

    Das stimmt. Man kann mit TRACE(...) bestens Abläufe und Variablen-Werte verfolgen. In der Releaseversion werden die TRACE-Anweisungen anschließend einfach übergangen.

    Neben TRACE gibt es noch die speziellen Makros TRACE0, TRACE1, TRACE2 und TRACE3:

    TRACE0( format-string )
    TRACE1( format-string, var1 )
    TRACE2( format-string, var1, var2 )
    TRACE3( format-string, var1, var2, var3 )

    Beim Einsatz von Unicode sind die Makros TRACE0, TRACE1, TRACE2 und TRACE3 einfacher zu verwenden als TRACE, da in diesem Fall _T(...) nicht notwendig ist.

    Beispiele:

    BOOL CMyApplication :: InitInstance() 
    { 
    	TRACE0("CMyWindow soll nun auf dem Heap erstellt werden.\n");
    	TRACE1("m_pMainWnd: %X\n", m_pMainWnd);
    	m_pMainWnd = new CMyWindow;
    	TRACE0("CMyWindow wurde auf dem Heap erstellt.\n");
    	TRACE1("m_pMainWnd: %X\n", m_pMainWnd);
    	m_pMainWnd ->ShowWindow( m_nCmdShow ); 
    	TRACE0("ShowWindow(...) wurde ausgeführt.\n");
    	return TRUE; 
    }
    

    oder

    m_pMainWnd = new CMyWindow;
    TRACE2("Style: %d, ExStyle: %d \n", m_pMainWnd->GetStyle(),
                                        m_pMainWnd->GetExStyle() );
    

    Damit einfach die Variable im switch/case-Zweig verfolgen.


Anmelden zum Antworten