Byte an digitaler Schnittstelle ausgeben



  • Unter Windows gibt es Sleep(ms); // Millisekunden warten
    Bei den *ix*en gibt es sleep(s); // Sekunden warten
    und aus der #include <unistd.h> auch usleep(us); // Mikrosekunden warten

    Wobei alle Funktionen einen Integer oder Long-Wert erwarten. (Nix mit sleep(0.2))

    Es gibt noch select aus den socket/winsock das man mißbrauchen kann.

    struct timeval    timeout;
    
         timeout.tv_sec  =  2;
         timeout.tv_usec =  0;
         select (0, NULL, NULL, NULL, &timeout);
    

    Oder wenn es gar nichts anderes gibt:

    void delay_ms(unsigned ms)
    { clock_t  zeit, timeout;
    
      zeit = clock();
      timeout = (ms) * (CLOCKS_PER_SEC / 1000);
    
       while (clock() - zeit < timeout); 
     }
    

    Das fährt aber die Prozessorlast hoch.



  • danke erstmals!

    aber wenn ich mit #include <unistd.h> die unistd.h einbinde und dann usleep() verwende, bekomme ich die Fehlermeldung, dass er in der unistd.h "getopt.h" nicht findet...was kann das sein?



  • huhu002 schrieb:

    aber wenn ich mit #include <unistd.h> die unistd.h einbinde und dann usleep() verwende, bekomme ich die Fehlermeldung, dass er in der unistd.h "getopt.h" nicht findet...was kann das sein?

    Das mit usleep ist die Fortsetztung von "Bei den *ix*en ...".

    Du hast Windows.



  • aber auch wenn ich windows.h inkludiere und Sleep() verwende, bekomme ich Fehlermeldungen aus der WinDef.h...



  • Das kann nicht sein. Sleep gehört zur WinAPI, du machst etwas falsch.


Anmelden zum Antworten