Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];

Вниз

Необходимо!!! Обработка клика мышки с высокой точностью!   Найти похожие ветки 

 
Delphi-master   (2007-09-12 03:22) [0]

Есть задача просчитать время между двумя кликами мышки с точностью до одной МИЛИСЕКУНДЫ !
-------------------------------------
Без флуда плизз!!


 
Сергей М. ©   (2007-09-12 08:25) [1]


> Delphi-master


> Без флуда плизз


Ну без флуда так без флуда)

- получаешь привелегии нулевого кольца защиты
- запрещаешь все прерывания, кроме мышиного
- при обработке двух смежных мышиных прерываний читаешь RTDSC, разницу переводишь в милисекунды

)


 
Ega23 ©   (2007-09-12 09:36) [2]

Windows не является RTOS
Так что такую ТОЧНОСТЬ тебе НИКТО не даст.


 
korneley ©   (2007-09-12 09:47) [3]

Очень напоминает обсуждение
http://delphimaster.net/view/1-1189288423/


 
Anatoly Podgoretsky ©   (2007-09-12 09:59) [4]


> Windows не является RTOS
> Так что такую ТОЧНОСТЬ тебе НИКТО не даст.

Windows является RTOS
В нулевом конце можно, а вне него точность будет зависить от ОС, если считать приемлемой точность попадания, более менее можно на это расчитывать, примерно в пять системных тактов, то для платформы NT это будет порядка 50 мс, исходя их требования 1 мс, нужна ОС с тактом 200 мкс, что вроде бы реально для некоторых ОС


 
Jeer ©   (2007-09-12 10:01) [5]


> Ega23 ©   (12.09.07 09:36) [2]
>
> Windows не является RTOS


И при чем тут RTOS ?

Разница во времени двух событий (исключая накладные расходы на реакцию на них) c точностью (дискретностью) до 1 ms легко определяется:
- QueryPerformanceCounter: 0.38 мкс (реально 1-2 мкс);
- RDTSC: 1 такт процессора ( реально 10-30 тактов) и для частоты 1 ГГц в идеале 1 нс


 
clickmaker ©   (2007-09-12 10:41) [6]


> Windows является RTOS

Анатолий, от Вас странно слышать такое.
Windows НЕ является RTOS
И никогда даже не пыталась быть таковой.
А были отдельные попытки заставить ее так себя вести, которые на практике ни к чему хорошему не приводили


 
Jeer ©   (2007-09-12 10:44) [7]


> clickmaker ©   (12.09.07 10:41) [6]


Если только не уточнять, что RTOS бывают "жесткие", "мягкие", etc..


 
homm ©   (2007-09-12 11:14) [8]

> c точностью (дискретностью) до 1 ms легко определяется:

И как ты это сделаешь, если в ближайшие 10 ms управление будет не у твоего процесса?


 
Jeer ©   (2007-09-12 11:27) [9]


> homm ©   (12.09.07 11:14) [8]


Почему-то постоянно путаете привязку событий к slice-системы и текущее время, которое от оного slice не зависит.

Следующий виртуальный пример.
Поставим TTimer на некоторый интервал T (эмуляция некоторого прерывания)
Тикать он будет не чаще чем минимальный slice системы, к примеру 10 ms на w2k, а вобщем случае - кратно slice c округлением в большую сторону.
Т.е., если поставим T = 62 ms, то тикать таймер будет на 70 ms.
Это все так.
Но вот точность измерения этих тиков (все они разные будут, есс-но) может быть весьма высокой о чем и сказано в [1] или [5].


 
Anatoly Podgoretsky ©   (2007-09-12 11:29) [10]


> Анатолий, от Вас странно слышать такое.
> Windows НЕ является RTOS
> И никогда даже не пыталась быть таковой.

В таком случае только ДОС является RTOS, остальные нет.


 
clickmaker ©   (2007-09-12 11:38) [11]


> [10] Anatoly Podgoretsky ©   (12.09.07 11:29)

ну в принципе да
любая RTOS должна использовать принцип вытесняющей многозадачности
а винда, хоть там и заявлено такое, практически не является таковой.
Там всегда остается случайный фактор, и время отклика не есть строго заданная константа


 
homm ©   (2007-09-12 11:53) [12]

> [9] Jeer ©   (12.09.07 11:27)

Не знаю, что я путаю, но точно не могу понять :)

Вот пользователь кликнул мышью. В это время управление было на другом приложении, и будет у него еше 10мс, дак как же наше приложение определит время старта клика?


 
Eraser ©   (2007-09-12 12:02) [13]


> homm ©   (12.09.07 11:53) [12]


> Вот пользователь кликнул мышью. В это время управление было
> на другом приложении, и будет у него еше 10мс, дак как же
> наше приложение определит время старта клика?

В user-mode - никак, приложение сгенерирует событие клика, когда прийдет соответствующее сообщение от системы. А вот система, в большенстве случаев, узнает о том, что польователь кликнул мышью намного раньше, чем через 10 мс. На уровне ядра, даже не запрещая прерывания, которые приоритетьнее мышиного, можно добиться очень высокой точности.
Но, опять же, как оповестить user-mode приложение в приемлемый срок - вопрос.


 
Anatoly Podgoretsky ©   (2007-09-12 12:17) [14]


> любая RTOS должна использовать принцип вытесняющей многозадачности
> а винда, хоть там и заявлено такое, практически не является
> таковой.
> Там всегда остается случайный фактор, и время отклика не
> есть строго заданная константа

1. является
2. определяется очередью ожидающих задач, в соотвестии с приоритетами и это одинаково для всех многозадачных ОС.
3. Время отклика (время между переключениями) можно считать величина констатная, но можно изменить при запуске, далее будет константая, я думаю многие RTOS позволяют задавать эту величину. Я работал (программировал) в RTOS на Intel 8080 - там время было 50 или 100 мс и никто не ставил под сомнение саму ОС


 
DiamondShark ©   (2007-09-14 18:54) [15]

Фигня это всё.
Контакты мыши не срабатывают с такой скоростью.
Последовательный интерфейс мыши не передаёт даные с такой скоростью.

Измерить можно. Но измеренное значение не будет иметь отношения к объективной реальности.
Вопрос: нафига мерить?


 
homm ©   (2007-09-14 21:41) [16]

> Контакты мыши не срабатывают с такой скоростью.

Физику учил? С электронами знаком?


> Последовательный интерфейс мыши не передаёт даные с такой
> скоростью.

Ну и новость, оеказывается он не способен передать 4кб в секунду?


 
Sha ©   (2007-09-15 11:38) [17]

> DiamondShark ©   (14.09.07 18:54) [15]
> Вопрос: нафига мерить?

Например, чтобы получить случайное значение.


 
TIF ©   (2007-09-28 14:12) [18]

во эдеоты...

бедная мышь.... о ней никто и не подумал...


 
Malik ©   (2007-09-28 14:51) [19]

Решение как всегда просто. При этом ты сможеш как можно точно определить время между нажатиями кнопок мыши. Я не буду вподаться в подробности, так как не даром есть на Руси пословидца: "Без труда не вытащиш и рыбку из пруда". Если вспомнить Тесла —знаменитого физика, поразившего весь мир своими открытия и изоьретениями —, то хочется сказать, что умение и труд всё перетрут. Так вот, подходя к сути (как видишь вступление было очень долгим), хочется сказать... ]:-> ЗАТАРСЯ ЕДОЙ НА МЕСЯЦ, И ASSEMBLER"ом, так как ты дооооолго будеш писать отдельную програмную оболочку и дрова для мыши в assembler"e))) ИМХО это самые точные милисекунды тебе даст)))



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.045 c
2-1190567395
Bast
2007-09-23 21:09
2007.10.21
Проблема


2-1190921326
Алик
2007-09-27 23:28
2007.10.21
Как правильно очищать буффер?


6-1172154994
vlad_55
2007-02-22 17:36
2007.10.21
HTML-формы


15-1190385700
Windows_XP
2007-09-21 18:41
2007.10.21
Легально ли использовать Windows XP Home Edition в комерческих целях?


15-1190551723
Володя
2007-09-23 16:48
2007.10.21
Протоколы.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский