Тема
|
Multimedia Timers & VC++
|
|
Автор | Цeцo (Нерегистриран) |
Публикувано | 10.05.01 14:20 |
|
Ако някой е наясно с тия таймери може ли да ме открехне на някой нещица:
1. Те работят с CALLBACK функция. Тя трябва ли да е глобална за приложението или може да е член функция на някой заврян обект?
2. При тях има ли някакъв преоритет? В смисъл като при обектите на приложението. Ако работят два таймера едновременно кой е с по-висок преоритет?
3. До колко са точни? На мен ми трябва разделителна способност 1 ms. Приложението е много критично откъм времеинтервалите.
|
|
Тема
|
Че може, може
[re: Цeцo]
|
|
Автор | Cилyeт (Нерегистриран) |
Публикувано | 10.05.01 16:18 |
|
ама ти си луд такова критично приложение да го стартираш под Windows. Значи дори в NT или 2000 никой не може да ти гарантира сигурен time slot за нещо което ще го изпълнява проца при интервали под 17ms. По-добре да вкараш допълнителен хардуер, който да ти върти нещото с тоя рейт, а PC-то само да менаджира
|
|
Тема
|
Re: Multimedia Timers & VC++
[re: Цeцo]
|
|
Автор |
Balam (непознат
) |
Публикувано | 10.05.01 21:34 |
|
Po desain Windows ne e real-time OS, taka che kritichni programni taimeri ne mozesh da suzdadesh (osobeno za 1 ms). Nai-malkoto, shte ti triabva draiver, a i togava ne ti e garantirano mnogo. Windows baziran na VMM e non-preemptive v ring 0 (s malki izkluchenia), i tova shte ti dade malko poveche kontrol otkolkoto v NT.
|
|
Тема
|
Re: Multimedia Timers & VC++
[re: Balam]
|
|
Автор | Цeцo (Нерегистриран) |
Публикувано | 11.05.01 09:30 |
|
Добре де аз хардуера го имам (USB). Frame rate ми е 1 ms. Имам и Fifo. Имам и драйвери за него. Обаче трябва да го синхронизирам някак това Fifo с рисуването по екрана. С тия мултимедийните таймери не може ли да стане? Освен това е задължително да стане на Windows 9x.
|
|
Тема
|
Re: Multimedia Timers & VC++
[re: Цeцo]
|
|
Автор | _ (Нерегистриран) |
Публикувано | 13.05.01 15:23 |
|
хм.
ако не ме лъже паметта execution quantum-a на NT-то за foreground e okolo 50-60 ms (за NT Server - 120ms) - тоест през толкова време се swicht-ва между thread-овете, иначе quantuma май беше между 3 и 4 ms
на Linux-a прекъсването от таймера се сетваше да е на 10 ms (=100 пъти в секунда).
някак си не го виждам това 1мс...
по другия въпрос - CALLBACK е еквивалентно на _stdcall; дори и да си сложиш такива calling conventions на функция на класа - няма кой да ти предаде this указателя;
callback функцията за ММ таймерите се вика в отделна нишка (windows-a специално я създава за теб) - така че трябва да се внимава с достъпа до общите данни.
|
|
Тема
|
Re: Multimedia Timers & VC++
[re: Цeцo]
|
|
Автор | Цeцo (Нерегистриран) |
Публикувано | 14.05.01 10:46 |
|
М-дааа, явно Windows-а си е тромавичко животно. Добре де ами на high resolution timer -ите мога ли да разчитам. Те CALLBACK не могат да викат ама поне за точно отчитане (с разделителна способност 1ms) трябва да стават, а?
|
|
Тема
|
Re: Multimedia Timers & VC++
[re: Цeцo]
|
|
Автор | ... (Нерегистриран) |
Публикувано | 14.05.01 11:41 |
|
Ako iskash funkciqta da ti e vyv nqkoi klas, si q pravish public i static i i predavash kato parametyr this, a vyv neq si go cast-vash do obekta.
|
|
Тема
|
Re: Multimedia Timers & VC++
[re: Цeцo]
|
|
Автор | nobody (Нерегистриран) |
Публикувано | 14.05.01 12:39 |
|
...pyrwo kakto ti kazaha nito windows nito linux sa real-time OS, taka 4e nikoq ot dwete ne ti garantira to4ni interwali....
....posle ot towa koeto kazwa6 ne wivdam, da ima6 nuvda nito ot period 1 ms nito ot to4en period 1 ms :)...obmisli dobre kakwo iska6 da naprawi6, 6toto towa koeto si go izmislil e glupawo...sorry ne iskam da te zasegna...
|
|
Тема
|
Re: Multimedia Timers & VC++
[re: Цeцo]
|
|
Автор |
Balam (непознат
) |
Публикувано | 15.05.01 00:16 |
|
Struva mi se, che na teb ne ti triabva 1ms taimer za da postignesh tova koeto iskash. Purvo, horata koito sa napravili harduera i draiverite za nego sa znaeli vuzmoznostite na Windows i po tazi prichina imash FIFO bufer. Vtoro, dori i da mozeshe da risuvash po ekrana prez 1ms, dosega ne sum chuval za video karta i monitor s 1kHz refresh rate. Taka che niama nikakuv smisul da se opitvash da postignesh takova burzo risuvane. Bih te posuvetval da prerazmislish disaina na programata si predi da si se razocharoval napulno.
Otnosno otchitane na vreme v Windows do 1ms tochnost - tova moze da se napravi. No da go polzvash v programa e nemislimo. Imai v predvid, che Windows shte prekusne programata ti po vsiako vreme, dori i v momenti kogato si otchetul vremeto, no oshte ne si zapochnal da go obrabotvash.
Uspeh
|
|
Тема
|
Re: Multimedia Timers & VC++
[re: nobody]
|
|
Автор | цeцo (Нерегистриран) |
Публикувано | 15.05.01 09:38 |
|
Абе сигурно аз не съм се изказал точно. Значи имам USB устройство и некакъв драйвер за него. Сорсовете на драйвера ги немам. Той поддържа stream поток на всяка 1ms в зададен от мен буфер. Проблема е че буфера не е много голям и трябва да се разтоварва често (в рамките на 1 сек). Кофтито е че драйвера е написан кофти и не дава никаква обратна информация за състоянието на буфера. Мога да стартирам Stream да го стопирам и да прочета n байта от него. Аз трябва да разтоварвам буфера ,да филтрирам данните (20 байта на 1 милисек.) и да ги надраскам на екрана и на диска. Буфера обаче не трябва да се препълва щото губя данни без да знам. Затова ми трябва да се активира нишка на точно определено време. Или поне в рамките на определен интервал (1сек.), но да мога точно да измеря времето от последното активиране за да знам какво имам в буфера. Не трябва и да прескоча интервала щото губя данни. Дефакто real-time ще работи само драйвера, а той би трябвало да го може (ебем ти драйвера иначе). Проблема е как да измеря точно времето.
|
|