-
        

Ergebnis 1 bis 8 von 8

Thema: Ringpuffer und if- Abfrage

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    19.06.2007
    Beiträge
    33

    Ringpuffer und if- Abfrage

    Anzeige

    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 !!!



    Code:
    	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;

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    19.06.2007
    Beiträge
    33
    kann keiner helfen ? oder hab ich die Fragen zu blöd gestellt ?

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Wofür den Ringpuffer, brauchst du nicht einfach einen Zeittakt den du abfragst
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    19.06.2007
    Beiträge
    33
    den Ringpuffer brauch ich ja, weil da ne Menge Codes empfangen werden und ich ja nur die bestimmten brauchen kann. Das PRG funzt ja wie gesagt, möchte es nur noch optimieren.

    Darf ich in ne If - Schleife nochmal eine If Abfrage einbauen ?
    Das quasi wenn der erste richtige Code empfangen wird noch auf den zweiten gewartet wird...
    Hab es schon probiert aber anscheinend irgendwie nicht richtig.

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Natürlich kannst du eine weitere if-Schleife einbauen, du musst nur sicherstellen das die erste if-Bedingung noch wahr ist wenn die zweite wahr wird.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    19.06.2007
    Beiträge
    33


    kannst du mir bitte ein Beispiel zeigen ? vll sogar in meinem angegebenen Code... oder hast einen Link wo das so ist.

    Danke !

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Wenn du nach der ersten if Abfrage noch warten musst, dann ist es besser, wenn du dir in der ersten if abfrage ein Merkbit setzt und dies in der zweiten if- Abfrage mit Auswertest. Warten ist immer schlecht.
    Hier siehst du eine geschachtelte if-Schleife: http://www.mikrocontroller.net/artic....29Entprellung
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    19.06.2007
    Beiträge
    33
    ok danke, mal schaun ob ich das in meinem Code so einbinden kann.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •