[ nikoladsp @ 10.06.2004. 16:17 ] @
| Cao,
interesuje me kako da napravim tjmer koji ce svakih 20 msec pozivati neku odredjenu funkciju.Tajmer mora biti vrlo precizan.Ne koristi se MFC i to mora da radi pod konzolom.Ima li neko ideju?
thanks.
Nikola |
[ Dragi Tata @ 10.06.2004. 16:23 ] @
Zavisi šta podrazumevaš pod "vrlo precizan". Nekad je dovoljan običan Win32 timer, primer ti je na:
http://simplesamples.info/Windows/ConsoleTimer.php
Ako ti stvarno treba veća preciznost, moraćeš da koristiš npr multimedijalne tajmere, samo u tom slučaju moraš da poznaješ višenitno programiranje, inače si u nevolji do guše.
[ nikoladsp @ 10.06.2004. 16:48 ] @
Cao,
pod vrlo precizan podrazumevam da kasnjenje mora biti reda mikrosekundi(negde do recimo 100 mikrosec).Taj clanak sam vec vidio i probao ali se bojim da to "porukanje" unosi veliko kasnjenje.Sto se tice niti, to se ne usudjujem koristiti jer ni tu nisam bas siguran koliko treba svim tim procesima da se izvrse pa bi i tu kasnjenje bilo nedopustivo veliko.Sem toga cini mi se da ni sa nitima ne bih postigao neki preterani uspeh.Zasad mi je multimedijalni tajmer najpreciznije resenje.Ta mi stvarcica inace treba da bih kada saljem RTP pakete uzimao sistemsko vrene u NTP formatu i upisivao ih u poruke koje se salju i onda merim dziter.Pristizanje poruka nije poblem,tu koristim QueryPerformance... za merenje intervala izmadju pristiglih poruka.Ono sto me obeshrabruje i potice da zamolim za pomoc je to sto Win moze menjati recimo prioritet threadova i pitanje je koliko stvarno protekne vremena u budjenju/uspavljivanju niti.Sleep f-ja je recimo jako neprecizna.Da ne smaram vise, problem uopste nije jednostavan.Probacu nesto sa asemblerom i interaptima.
Hvala na pomoci.
nikola
[ Dragi Tata @ 10.06.2004. 17:11 ] @
[ nikoladsp @ 15.06.2004. 08:08 ] @
Znaci,
nista od toga...
Da li bi to mogao izvesti sa asemblerom?
thanks & chers hooligans
[ Dragi Tata @ 16.06.2004. 15:13 ] @
Nije problem u programskom jeziku, već u operativnom sistemu. Pod Windowsima ne možeš da pišeš RT aplikacije, bar ne u aplikativnom modu. Izgleda da je moguće nešto tako uraditi u kernel modu, pa ako si spreman da učiš pisanje device drivera, možda i uradiš nešto.
Da li baš moraš da koristiš Windows? Možeš li da izabereš neki RTOS?
[ ned @ 24.06.2004. 13:02 ] @
Prvi odgovor, "multimedia timers" je resenje. Kernel mode timers nisu
precizniji.
[ plavsa2 @ 02.07.2004. 14:15 ] @
ako radis pod DOS-om nije problem, samo iskoristis hardwerski timer0 iz PS-a i preobratis ga iz 55ms u 100ms i to ti je fixirano kao quarz, jednostavno ti svakih 100ms poziva tvoju interrupt proceduru.
imam source ako ti treba
[ Dejan Lozanovic @ 02.07.2004. 15:50 ] @
A ako koristis npr neki unix onda pozivom funkcije
select() funkcije gde ne bi gledao ni jedan file deskriptor i tu mozes da dobijas podelu u mikrosekundama, ili pselect gde imas podelu u nanosekundama
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.