Zeitfunktionen in C für MS DOS



  • Hallo Leute,

    ich habe mir einen C-compiler runtergeladen für DOS. Heute habe ich rausgefunden wie man den Parrallelport anspricht, jetzt brauche ich jedoch noch eine Timerfunktion bei der ich den genauen Zeitwert kenne z.B. millisekunden.
    Ich brauche diese um eine Anfahrtsrampe für einen Schrittmotor zu Programmieren.

    Kann mir da jemand vieleicht helfen

    mfg

    spacehelix



  • Schau in der Konsolen-FAQ. Da müsste es einen Beitrag für DOS namens "Pause-Funktion" oder so ähnlich geben.

    MfG SideWinder



  • Danke SideWinder,

    die funktion delay() ist genau die die ich suche. Ich habe diese eben auf meinen pacific compiler ausprobiert hat aber nicht ohne fehler compiliert.
    Hast du vieleicht mehr info's über diese funktion (rückgabetyp)oder besser ein Beispielprogramm?

    Ich versuche selbst noch infos zu bekommen.

    Kann es auch an dem Compiler liegen?

    mfg

    spacehelix



  • Normalerweise wird delay() ganz einfach verwendet:

    delay(100); //wartet 100 Millisekunden
    

    Welche Fehler meldet dein Compiler? Ich vermute mal, dass du noch nicht die richtige Headerdatei eingebunden hast. Wenn dein Compiler bzw. der Includeordner deines Compilers allerdings die Headerdatei nicht hat, dann musst du nach was anderem suchen.

    Ne andere Möglichkeit wäre z. B. noch mit clock() zu arbeiten. Diese Funktion liefert dir sogenannte Ticks. Das ist ein spezielles Zeitintervall. Siehe http://www.cplusplus.com/ref/ctime/clock.html.
    Damit kannst du hald auch noch andere Arbeiten erledigen lassen, während du auf das weitere Ausführen einer bestimmten Funktion o. ä. wartest.

    Zum Beispiel (Beispielcode):

    weiter = clock() + ticks_per_second;
    starte_motor();
    
    while(clock() < weiter && !check_not_aus());
    
    stoppe_motor();
    

    Bei einem 16Bit Programm bzw. unter DOS liegen die Ticks pro Sekunden bei etwa 18,2. Genaueres zur Nutzung usw. findest du aber unter dem oben angegebenen Link.



  • Hallo AJ,

    ich habe folgendes Programm geschrieben und wenn ich dieses dann compiliere kommt folgende Fehlermeldung: "function declared implicit int (warning).

    Wenn ich die Warnungen wegschalte kommen 2 errors von der HLINK.exe: 1.) ::undefined symbol
    2.) ::_delay(DELAY.OBJ)

    #include <conio.h>
    #include <math.h>
    #include <stdio.h>
    #include <dos.h>
    #include <time.h>

    main()
    {
    delay(100);
    }

    vieleicht weist du ja was zu tun ist oder du kennst einen compiler der kostenlos ist und bei dem dies alles funktioniert und der auch unter MS DOS läuft?

    Übrigens clock(); funktioniert auch nicht das dürfte auch zu langsam sein.

    mfg

    spacehelix



  • Wie vermutet, hast du noch nicht die nötige Headerdatei eingebunden, wenn du überhaupt die richtige hast. Leider weiß ich die Headerdatei nicht auswendig. Wenn eine Dokumentation bei deinem Compiler dabei ist, dann solltest du diese mal durchstöbern. Evtl. musst du das D auch groß schreiben, also Delay().

    Unter DOS gibts eigentlich nichts schnelleres als clock().


Anmelden zum Antworten