Jürgen75
18.03.2008, 22:25
Hi,
bin ziemlich neu in dem C Gebiet. Da ich mit BASCOM irgendwie nicht mehr weitergekommen bin muß ich mir das alles noch anlernen.
Bei diesem Code (unten) wird der Ringpuffer mit vorgegebenen Daten verglichen und dann geantwortet. Funktioniert so wie er ist auch wunderbar.
Nur möchte ich noch ein paar Optimierungen wo ich aber nicht weiß wie ich die umsetzen kann.
Wenn dieser Code empfangen wurde " if (lexer(&door_all_lock)) " soll das Programm nicht sofort die msg senden, sondern 2 Sekunden warten und dann nochmal überprüfen ob eine Bestimmte Nachricht angekommen ist.
Wichtig wäre mir dass das Programm die 2 Sekunden wartet, wenn die msg schon vorher kommt darf es nicht beachtet werden.
Für eine andere Sache würde ich das aber auch nochmal genau umgekehrt brauchen. Nach dem Empfang von if (lexer(&door_all_lock)) muß innerhalb 2 Sekunden nochmal ein bestimmter Code empfangen werden .. wenn darüber dann einfach nicht mehr beachten.
Kann mir jemand tipps dazu geben ?
Vielen Dank im voraus !!!
while (1)
{
while (uart0_haschar())
{
chl = uart0_getchar();
if (lexer(&door_all_lock))
{
uart0_sendibus_EEP(mirror_driver_foldin_msg);
_delay_ms(100);
uart0_sendibus_EEP(mirror_passanger_foldin_msg);
continue; //im aktuellen Schleifendurchlauf alles abgebrochen, nächster Durchlauf eingeleitet.
}
if (lexer(&door_all_unlock))
{
uart0_sendibus_EEP(mirror_driver_foldout_msg);
_delay_ms(100);
uart0_sendibus_EEP(mirror_passanger_foldout_msg);
continue; //im aktuellen Schleifendurchlauf alles abgebrochen, nächster Durchlauf eingeleitet.
}
}
} // Haupt While-Schleife Hauptprogramm
cli();
return 0;
bin ziemlich neu in dem C Gebiet. Da ich mit BASCOM irgendwie nicht mehr weitergekommen bin muß ich mir das alles noch anlernen.
Bei diesem Code (unten) wird der Ringpuffer mit vorgegebenen Daten verglichen und dann geantwortet. Funktioniert so wie er ist auch wunderbar.
Nur möchte ich noch ein paar Optimierungen wo ich aber nicht weiß wie ich die umsetzen kann.
Wenn dieser Code empfangen wurde " if (lexer(&door_all_lock)) " soll das Programm nicht sofort die msg senden, sondern 2 Sekunden warten und dann nochmal überprüfen ob eine Bestimmte Nachricht angekommen ist.
Wichtig wäre mir dass das Programm die 2 Sekunden wartet, wenn die msg schon vorher kommt darf es nicht beachtet werden.
Für eine andere Sache würde ich das aber auch nochmal genau umgekehrt brauchen. Nach dem Empfang von if (lexer(&door_all_lock)) muß innerhalb 2 Sekunden nochmal ein bestimmter Code empfangen werden .. wenn darüber dann einfach nicht mehr beachten.
Kann mir jemand tipps dazu geben ?
Vielen Dank im voraus !!!
while (1)
{
while (uart0_haschar())
{
chl = uart0_getchar();
if (lexer(&door_all_lock))
{
uart0_sendibus_EEP(mirror_driver_foldin_msg);
_delay_ms(100);
uart0_sendibus_EEP(mirror_passanger_foldin_msg);
continue; //im aktuellen Schleifendurchlauf alles abgebrochen, nächster Durchlauf eingeleitet.
}
if (lexer(&door_all_unlock))
{
uart0_sendibus_EEP(mirror_driver_foldout_msg);
_delay_ms(100);
uart0_sendibus_EEP(mirror_passanger_foldout_msg);
continue; //im aktuellen Schleifendurchlauf alles abgebrochen, nächster Durchlauf eingeleitet.
}
}
} // Haupt While-Schleife Hauptprogramm
cli();
return 0;