wie beende ich eine endlosschleife....??



  • Hallo erstmal!

    Ich muss für die FH grad ein Programm schreiben wo es unter anderem darum geht diverse zeichen usw aus nem file auszulesen,es geht im prizip darum das dieses File in späterer Folge durch einen stream ersetzt wird (rs 232) welcher von einer gps maus kommt.. aber was ich jetzt eigentlich wissen möchte ist folgendes: ich bekomme von dieser gps maus ja ständig signale gesendet somit hab ich eine endlosschleife generiert die permanent daten ausliest, zeit datum, koordinaten usw... nur jetzt will ich natürlich auch mal ausssteigen indem ich zb. die Taste Q drücke auf der Tatsatur oder zb strg+Q.
    Hab das jetzt auch schon über paar möglichkeiten probiert,sorgar die funktion getch (conio.h) hab ich ausprobiert komme aber nicht zu dem gewünschten ergebniss. Vielleicht bin ich eh schon knapp vor der Lösung aber ich checks echt nicht mehr!

    danke
    stefan



  • Stichwort "break".



  • 1. Falsches Forum, hier gehts um C# und nicht C(++)

    2. Falls du in der Konsole arbeitest, wovon ich an Hand der Fragestellung ausgehe, dann gibt es die Möglichkeit, deine Abfrage in einen Thread zu schieben. Und diesen Thread abhängig von der eingegebenen Taste zu beenden.



  • hoppla.... sorry

    kann ich den beitrag irgendwie ins richtige forum verschieben oder kann das nur ein admin??

    danke
    stefan



  • Shiggysteve schrieb:

    hoppla.... sorry

    kann ich den beitrag irgendwie ins richtige forum verschieben oder kann das nur ein admin??

    danke
    stefan

    kann nur ein Admin. Aber zu deiner Frage:

    "Pseudocode ähnlich"

    Liest ständig Daten
    {
    
        Wenn Taste 'q' gedrückt
        {
              break;
              // Mit dem break hüpfst du aus der Endlosschleife
        }
    
    }
    


  • Hi,

    eine GPS-Klasse hab ich letztens für C# geschrieben. Meine Empfehlung:

    du baust dir zwei klassen:

    Eine für den Seriellen Datenempfang.. beim Konstroktur am besten alle wichtigen Informationen (Baud-Rate, Port, etc...) übergeben...
    Die Abfrage findet dann in einem Thread start der über z.b. serielleKlasse.start() gestartet wird... und mit .stop() gehalten wird.. Eine Abfragezeit, damit diese nicht zu 100% durchrennt ist sinnvoll.., z.b. durch ein einfügen durch ein sleep(100); in der Schleife, sollte eigentlich reichen, da die GPS-Daten mit einem SirF II-Chipsatz sogar nur alle 1000ms (also jede 1 sek.) übertragen werden...
    Wenn ein neuer Datensatz empfangen wurde, solltest du ein Event auslösen.. und dann

    in der GPS-Klasse denn String auswerten lassen, denn du als Eventhandler, aus der serialKlasse, übergibst.

    Und dann kannst du nochmal nen Event auslösen, wenn die GPS-Klasse die Daten richtig formatiert (bzw. praktisch im Zugriff vorliegen hat), also die Werte als Variable vorliegen haben.. NMEA ist ja leicht auszuwerten, da die Werte ja als plain-text übertragen werden... (einfache switch-anweisung.. -ende!!)

    Hoffe ^^ das hilft weiter, wenn nicht nachfragen.

    wenn du mit klassen/objekten&threads arbeitet, hast du dein endlosschleifen problem nicht mehr..

    wenn du dich dennoch weiterhin für die konsole-entscheidest:

    include<conio.h>
    
    //für einen speziellen wert per tastatur:
    //...
    char inp;
    char exit='b';
    do
    {
         ch = getch();
    
         /****
    
         CODE
    
         ****/
    
    }
    while(ch != exit)
    //...
    

    Hoffe geholfen zu haben

    Gruß der Philipp



  • Dieser Thread wurde von Moderator/in Marc++us aus dem Forum C# und .NET in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten