Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » eine Routine in genauen Interwallen durchführen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.12.2004, 23:52 Uhr
Stephan Abonyi



Hallo Alle,

ich muß eine Routine in genauen Intervallen (0.2Sec) unabhängig von allen anderen
Resourcen durchführen lassen. (praktisch wie Interrupt höchste Priorität)
Kann nam sowas in C++ erstellen? Ich arbeite mit embedded C++ in CE-Umgebung.
Für eventuelle lösungsvorschläge währe ich sehr dankbar. - Stephan
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.12.2004, 07:37 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Wenn Du's wirklich ganz exakt haben willst, nimm einen Thread, der nur aus einer SleepEx-Anweisung und dem Start eines Arbeitsthreads besteht, der dann die eigentliche Aufgabe durchführt und sich danach beendet. Alle 0,2 Sekunden wird dann ein solcher Thread gestartet (TODO: Dürfen zwei davon gleichzeitig laufen, wenns mal länger dauert als 0,2 Sekunden?).
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.12.2004, 08:29 Uhr
~Flapsi
Gast


Hallo !

Bei uns haben wir dies mit dem Multimediatimer von Windows realisiert (Auflösung 1 ms), der eine Callback Funktion aufruft.



C++:
void CALLBACK callBack(UINT nTimerID, UINT wMsg,
   DWORD dwUser, DWORD dw1, DWORD dw2){

// Mach was du willst, aber mach es schnell...


}

.
.
HANDLE hCallBack;
timeBeginPeriod(1);
timeSetEvent(Messtakt, 0,  (LPTIMECALLBACK) &callBack, 1,  
TIME_CALLBACK_FUNCTION | TIME_PERIODIC);
timeEndPeriod(1);
.
.



Wenn Du hartes Echtzeittiming brauchst, gibt es auch die Möglichkeit, dies mit einem Zusatzprogramm zu erreichen (www.kithara.de).

Beste Grüße

Flapsi

Dieser Post wurde am 23.12.2004 um 10:03 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.12.2004, 08:39 Uhr
Spacelord
Hoffnungsloser Fall


Die Timergesteuerte Threadvariante gibts auch fertig.

Schau dir mal CreateTimerQueue und CreateTimerQueueTimer an.
Hab allerdings keine Ahnung ob es die TimerQueue Geschichte in CE überhaupt gibt .

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.12.2004, 12:43 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von Spacelord:

Hab allerdings keine Ahnung ob es die TimerQueue Geschichte in CE überhaupt gibt .


Nee gibts da nicht
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createtimerqueue.asp
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
23.12.2004, 14:35 Uhr
Stephan Abonyi




Zitat von Bruder Leif:
Moin!

Wenn Du's wirklich ganz exakt haben willst, nimm einen Thread, der nur aus einer SleepEx-Anweisung und dem Start eines Arbeitsthreads besteht, der dann die eigentliche Aufgabe durchführt und sich danach beendet. Alle 0,2 Sekunden wird dann ein solcher Thread gestartet (TODO: Dürfen zwei davon gleichzeitig laufen, wenns mal länger dauert als 0,2 Sekunden?).


Hallo Leifus,

vielen Dank für deine schnelle Antwort. Ich wirds ausprobieren. Gruss Stephan
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
23.12.2004, 14:38 Uhr
Stephan Abonyi




Zitat von Guybrush Threepwood:
[quote Spacelord]
Hab allerdings keine Ahnung ob es die TimerQueue Geschichte in CE überhaupt gibt .


Nee gibts da nicht
[url]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createtimerqueue.asp[/quote][/url]

Trotz dem Danke: Stephan
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
23.12.2004, 14:43 Uhr
Stephan Abonyi




Zitat von ~Flapsi:
Hallo !

Bei uns haben wir dies mit dem Multimediatimer von Windows realisiert (Auflösung 1 ms), der eine Callback Funktion aufruft.



C++:
void CALLBACK callBack(UINT nTimerID, UINT wMsg,
   DWORD dwUser, DWORD dw1, DWORD dw2){

// Mach was du willst, aber mach es schnell...


}

.
.
HANDLE hCallBack;
timeBeginPeriod(1);
timeSetEvent(Messtakt, 0,  (LPTIMECALLBACK) &callBack, 1,  
TIME_CALLBACK_FUNCTION | TIME_PERIODIC);
timeEndPeriod(1);
.
.



Wenn Du hartes Echtzeittiming brauchst, gibt es auch die Möglichkeit, dies mit einem Zusatzprogramm zu erreichen (www.kithara.de).

Beste Grüße

Leider gibts bei Kitara keine Lösungen für Win-CE. Das mit dem Callback Funktion probiere ich aus. Danke und froes Fest! Stephan

Flapsi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: