Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 20 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Добый всем день/вечер/утро

Забрёл на форум из-за одного вопроса: возможно ли сделать из мышки (с шариком) датчик оборотов????
(то есть устройство измеряющее обороты врашения какого-нибудь вала)

На мысль натолкнуло то, что в любой мышке с шариком есть пара колёсиков и чем быстрее мышка движется по столу, тем быстрее вращается колёсико, которое в контакте с шариком, и тем быстрее движется курсор на экране... Следовательно сигнал поступающий на комп пропорционален частоте вращения колёсика в мышке!!!!

Основная проблема которая меня интересует это механизм улавливания этого сигнала от мышки на компе и интепритация его в обороты колёсика в единице времени... А ещё было бы вообще круто хотябы в файл писать результаты или график строить... ну это уже так - вариации. Пока же сам принцип интересует. Возможно ли сделать такую программку и если да, то не подскажет ли кто в чём и как её сделать?
Сдаётся мне что для нормального програмиста это раз плюнуть, а мне вот :(
Уже готовлюсь для этого даже выучить основы какого-нибудь языка програмироваия, тока вот не знаю где это проще сделать и как :insane:

Очень надеюсь что кто-нить поможет! Идея то ведь интересная!!!!
p.s. извините если не по теме. просто не знаю куда писать :)



Партнер
 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Никакой проблемы в написании подобной проблемы нет.. Драйвер мыши выдаёт изменение координат мыши за такт системных часов. Естественно, что это изменение пропорционально скорости вращения ролика.. установить коэффициент пропорциональности можно исключительно опытным путём) Датчик, надо сказать, получится не слишком точный)

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Anoss писал(а):
Датчик, надо сказать, получится не слишком точный)

Это я понимаю, но на вопрос почему? ответить не могу... знаний видимо не хватает в этой области :(
Да и что значит не слишком точный? +-1 об/сек или +-100...

Казалось что там всё строго одна прорезь проскочила - один сигнал. За оборот фиксированое число сигналов...
Что тут не точного?
Другой вопрос что при больших оборотах сработает уже инерционность приёмников света... Но вопрос с с опрделением этой частоты уже дело десятое.

Интересует же сам механизм реализации. Вот с эти основная трудность!


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Билли, если ты собираешься работать минуя драйвер, на уровне сигналов от прорезей, то зачем вообще возиться с мышью?

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

вот так всегда... Все блещут умом... а конкретныхответов ни от кого не добиться... эхх. Целый интеренет умых!
не собираюсь я ничего миновать :(
опасения начинают оправдываться...


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Если писать, используя просто, скажем, DirectInput, то мы будет иметь уже дело с изменением координат мыши, которые посчитал драйвер. Чтобы считать напрямую сигналы с мыши, нужно писать свой драйвер — это слишком трудоёмко для такой бесполезной вещи..
Через DirectInput я могу тебе написать что-нибудь простенькое.. умножать изменение координаты на определенный опытным путём коэффициент будет нетрудно)

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

а изменение координаты в единицу времени???
Мне просто кажется что это элементраная задача! я просто не могу понять с какой стороны к ней подходить, вот и приходится по форумам торкаться, раз сам так дальше паскаля в програмировани и не смог уйти...

Anoss писал(а):
Через DirectInput я могу тебе написать что-нибудь простенькое.. умножать изменение координаты на определенный опытным путём коэффициент будет нетрудно)


Напиши если не составит труда... Буду очень признателен!
Мнебы вообще хоть см алгоритм или пример на эту тему и я бы с горем пополам докумекал как-нить.


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Вот, на скорую руку))

сцылка

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Нифига себе на скорую руку!!!! Здорово получилось!!! Красиво!
Пытаюсь вот разобраться.... :-/
А в чём это написано? Я вот начал осваивать Делфи для решения этой проблеммы. Конечно может и не лучший вариант, но другого просто ничего нет, да и не знаю/не видел я ничего другог:(

Кто как думает - получится?


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Billy Kid
Цитата:
Кто как думает - получится?
Получится, нужно только набросать нужный интерфейс DirectInput не делфи.
Anoss неплохо, но похоже, что нужно писать драйвер и вешатся на прерывание от системного таймера, или же писать фильтр-драйвер, для мишиного драйвера (кстати на овере, где-то была статья SweetLow про нечто подобное), иначе выходит довольно приблизительно.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Я же даже не пытался мерить время — там всё относительно.. можно сделать куда точнее, даже если озаботиться засеканием времени при помощи GetTickCount, не говоря уж о QueryPerformanceCounter.. а драйвер писать.. все равно всё упирается в скорость опроса порта.. надо девайс строить поспециализированнее мыши) или мышь цеплять к валу через редуктор))

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Спасибоза некоторые разъяснения... теперь буду их пеерваривать несколько дней, хотя наверное всёравно ничего не получится... :( (имею в виду именно у меня - руки кривые )
Но буду стараться...


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Весь код, связанный с DirectX, в дельфи будет выглядеть так же, как и везде.. не забудь включить в проект dinput.lib ;)

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

мда!сплошные загадки!
Я вот не пойму вы все специально прикалываетесь!? :)

Ты не могбы упростить алгаритм... например просто выводить значение скорости в текстовом виде и один график... а оттуда можно писать данные в текстовый файл?

Да можешь даже не отвечать, если не хочешь - я всёравно л о х :(


 

Member
Статус: Не в сети
Регистрация: 24.12.2004
Откуда: Москва
В первом приближении алгоритм проще некуда... взять начальную координату мыши взять начальное время... подождать слегка... взять конечную координату мыши взять конечное время. узнать пройденное растояние (разницу между координатами). узнать потраченное время (конечное минус начальное). поделить пройденное расстояние на потраченное время и помножить на поправочный коэффициент.

Такой вариант на дельфи пишется за 5 минут.

Проблемы в том как точно узнать время и поправочный коэффициент. (Опять таки можно узнавать координаты от драйвера мыши а можно и напрямую с ком порта читать некоторые данные и самому пытаться их интерпретировать).


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Цитата:
сплошные загадки!


Ты бы задавал поконкретнее вопросы, а мы постараемся ответить)

Разбираю прогу по функциям:

WinMain, WindowProc — функции, которые должны быть в любом приложении Win32, если их содержимое для покрыто туманом, прочитай первые главы какой-нибудь книжки по программированию под Windows) Начальная инициализация, запуск главного цикла; процедура обработки сообщений.

DrawGraph, DrawAnalogueMeter — рисуют график и прибор соответственно. Изучаем основы GDI.

DX_Init — инициализация интерфейсов DirectX, DirectInput, поготовительные действия для получения ниформации от мыши. Изучаем основы DirectX.
Prog_Shutdown — освобождение мыши и интерфесов DirectX перед завершением программы.

Tick — главная функция, выполняется при каждой итерации главного цикла (вспоминаем Win32). Что она делает:

Получает при помощи GetDeviceData все перемещения мыши, произошедшие со времен предыдущей проверки.
Считает суммарное перемещение по x, y и sqrt(x*x+y*y) приблизительно за последнюю секунду (за десять последних вызовов). Накапливает информацию для графиков. Рисует все приборы и графики.
Ждет 100 мс. Примерно через 100 мс всё повторится с начала.
Добавлено спустя 7 минут, 8 секунд
kivi У тебя есть COM-мышь? У меня нет) но я могу поискать)

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

kivi писал(а):
Такой вариант на дельфи пишется за 5 минут.


Вот сейчас сижу и разбираюсь с этим дельфи как там чо. Причём с нуля разбираюсь :(
так же параллельно пытаюсь вникнуть в директинпут :)

голова пухнет!
Anoss писал(а):
Ты бы задавал поконкретнее вопросы, а мы постараемся ответить)


Сейчас чуть-чуть подразберусь и будет море вопросов! :)))

Пока был вопрос с чем начинать разбираться что бы решить поставленую задачу - ответ вроде получен - Директ импут или (хуже) Делфи. Важно было решить стоит ли или можно ли это делать. Ответ вроде как положительный!

Дело в том что я даже основ этого всего не знаю (разве что паскаль, но это особо не поможет :)
вот в чё проблемма! тк что читаю книжки!
Добавлено спустя 3 минуты, 56 секунд
kivi писал(а):
В первом приближении алгоритм проще некуда... взять начальную координату мыши взять начальное время... подождать слегка... взять конечную координату мыши взять конечное время. узнать пройденное растояние (разницу между координатами). узнать потраченное время (конечное минус начальное). поделить пройденное расстояние на потраченное время и помножить на поправочный коэффициент.


С этим алгоритмом всё понятно... непонятно с алгоритмом реализации того алгоритма! :)

kivi писал(а):
Проблемы в том как точно узнать время

так там же таймер есть в делфи!?
kivi писал(а):
и поправочный коэффициент

а это только опытным путём. Но этоозже!
Добавлено спустя 5 минут, 1 секунду
kivi писал(а):
Такой вариант на дельфи пишется за 5 минут


А можешь прикинуть в делфи в общих чертах, разумеется, если не сложно конечно...

Мне вот тут Anoss в директинпуте прикинул - так я не спал ночь - всё думал, и теперь ещё месяц разбираться! :)

Плохо быть образованным не в том что тебе нужнго в данный момент :( :)


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Цитата:
Директ импут или (хуже) Делфи


Ты ничего не понял) Делфи — всего лишь среда разработки, такая же, как Borland C++ Builder, Microsoft Visual Studio или еще фиг знает что. Разрабатывать тебе придется windows-приложение. А для разработки мультимедиа-приложений под Windows был придуман DirectX. DirectInput — один из его компонентов. ээ.. процитирую А.Ламота:
«DirectX представляет собой программное обеспечение, которое позволяет абстрагировать видеоинформацию, звук, входящую информацию, работу в сети и многое другое таким образом, что аппаратная конфигурация компьютера перестаёт иметь значение и для любого аппаратного обеспечения используется один и тот же программный код. (...) эта технология предоставляет возможность управления всеми устройствами практически на аппаратном уровне. (...) вам не следует беспокоиться об особенностях того или иного устройства. Достаточно обратиться к DirectX, а уж она сама обработает и учтет эти особенности за вас.»

Расскажи, какой у тебя уровень знаний о программировании вообще? О программировании под Windows?

Цитата:
Плохо быть образованным не в том что тебе нужнго в данный момент

А в какой области ты образован?

И какие книжки ты там читаешь?)
Добавлено спустя 2 минуты, 32 секунды
Могу тебе накидать самый простой и самый неточный вариант из всех, буквально в три строчки, но не в делфи, а в C++Builder)

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Спасибо за неподдельный инерес!
Програмирование как я уже говорил самый низкий уровень только в паскале баловался :(
В виндоусе вообще ничего не делал никогда. Но думаю пора начинать - дело полезное!
Образован в той обл\асти кудамне это датчик нужно применить будет (газоваядинамика и всё такое ), а до програмирования руки не дошли, к сожалению...

Кароче буду теперь разбираься со всем по инету рыскать искать материал, а то ведь я даже не могу вопрос грамотно построить :)

Сейчас было важно главное выяснить принципиальную возможность реализации этого всего...

А вопросов будет море, как только войду в курс дела.


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
ох.. тяжко тебе придется) предупреждаю, если ты погрязнешь в дельфи и паскале, я тебе помочь смогу только в вопросе фундаментальных принципов — паскаль я не люблю и не помню.. начал бы ты с какой-нибудь книжки по C++Builder или вообще по C/C++.. бумажной, желательно) ну, если что, моя аська в профиле.. обсуждать тут основы программирования было бы вопиющим оффтопом)

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 20 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan