mikrocontroller.net

Forum: PC-Programmierung MinGW (CodeBlocks 8.02) : sleep()


Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, dass die sleep() Funktion im MinGW nicht vorhanden ist. 
Weder in <windows.h> bzw. <dos.h> ist die Funktion enthalten.

Kennt jemand von euch das Problem bzw. eine einfache Alternative ???

Autor: Bobby (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier's doch mal mit

#include <unistd.h>

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"
Probier's doch mal mit

#include <unistd.h>
"

Geht leider auch nicht :-(

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benutze Sleep(millisekunden).
Das ist in windows.h enthalten. Du kannst dir ein

#define sleep(x) Sleep((x))

machen, wenn du die Source nicht grossflächig ändern willst,

Checke unbedingt die Argumente des sleep, ob es Sekunden (POSIX sleep) 
oder Millisekunden (Windows Sleep) sind. Ggf. brauchst du einen 
Korrekturfaktor:

#define sleep(x) Sleep((x)*1000)

Autor: Bobby (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wer meckert denn, der Compiler oder der Linker?
Poste mal Dein Makefile!

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier die Fehlermeldung :

------------- Build: Debug in WriteBarcode ---------------

Compiling: main.cpp
J:\Barcode_Produktion\Barcode_Write\WriteBarcode\main.cpp: In function 
`int main(int, char**)':
J:\Barcode_Produktion\Barcode_Write\WriteBarcode\main.cpp:159: error: 
`sleep' was not declared in this scope
J:\Barcode_Produktion\Barcode_Write\WriteBarcode\main.cpp:159: warning: 
unused variable 'sleep'
Process terminated with status 1 (0 minutes, 1 seconds)
1 errors, 1 warnings



Mit <windows.h> und sleep(1000) (für 100ms). Bzgl. eine nicht 
funktionierenden sleep-Fkt in MinGW habe ich bereits unter Google schon 
etliche Hinweise gelesen. Doch nirgends stand etwas eindeutiges darüber 
dass es generell nicht geht.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aufgrund der Fehlermeldungen würde ich mal sagen, dass da was 
Grundlegendes falsch ist "unused variable 'sleep'".
Achja und wie bereits gesagt wurde, die Funktion wird mit großem "S" 
geschrieben. Sofern die windows.h eingebunden ist sollte es klappen. Hab 
schon zig Anwendungen damit gemacht.
Ansonsten bitte deinen Quellcode posten.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ob mit s bzw. S wird beides nicht akzeptiert. Windows.h ist auch 
eingebunden. Ich werde nun einmal den Compiler-Wechseln (Borland 5.5). 
Wie schon zuvor gesagt, sind im Netz diverse Hinweise zu finden, dass 
die Sleep-Fkt u.U. mit dem MinGW nicht richtig bzw. gar nicht 
funktioniert.
Daher habe ich hier mal kurz angefragt ob schon jemand die Funktion mit 
MinGW benutzt hat und diesbzgl. seine Erfahrung gemacht hat.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die windows.h bindet die winbase.h ein. Darin steht:
WINBASEAPI void WINAPI Sleep(DWORD);
^^Das ist aus meinem MinGW-Compiler. Würde daher gerne mal deinen 
Quellcode sehen um zu gucken was bei mir kommt.

Autor: Bobby (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sleeptest.c
-----------
#include <windows.h>

int main (int argc, char**argv)
{ sleep (1000); printf("READY\n");
return 0;
}

Makefile:
---------
CFLAGS=-Wall

sltest: sltest.c
        gcc -o sltest sltest.c -lws2_32

Aktivierung:
------------
make
./sltest


Das tut es bei mir, nur mit dem Unterschied zu Unix,
dass die Zeitangabe als Millisekunden genommen wird.

Autor: Bobby (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe vergessen zu sagen, dass ich die Kombination MinGW / Msys
benutze.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Problem gelöst :-) Nachdem ich CodeClocks neu installert habe 
funktioniert auch die Sleep()-Fkt. aus <windows.h>

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst aber auch Sleep im "Kernel32" nutzen!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.