LEDs
-
Hy leute,
ich hab ein kleines problem und bitte um unterstutzung:
mit diese switch anweisung will ich ein paar led zu leuchten bringenif (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.
-
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.