PDA

Просмотр полной версии : Мой вариант TrackIR



Alezz
15.04.2003, 08:40
Собственно subj:
http://www.sh.zp.ua/obzor/mouseemu/
Работа еще идет, софт оптимизируется почти ежедневно. Да и в железяке, дрожание АЦП почти исчезло.

VGV
15.04.2003, 15:00
Дорого получается? а на частотых каких? для здоровья не вредит?
Где-то я это уже видел???

Alezz
15.04.2003, 17:54
Originally posted by VGV
Дорого получается?
А хз... Наверное на детали баксов 30 надобно, но это с потолка цифру взял. Но работы баксов на 50 :D

Originally posted by VGV
а на частотых каких? для здоровья не вредит?
25кГц, для здоровья по теории должно быть не вреднее наушников

[i]Где-то я это уже видел??? [/B]
Здесь. Я первую схему постил еще наверное в ноябре.

GO!
07.07.2003, 01:51
2 Alezz
Интересный девайс!
Я сейчас изобретаю нечто похожее, по железу даже проще.
Никак не могу заставить из моей проги слушаться мышь в ИЛе, а в других окошках - пожалуйста! Вероятно дело в том, что он использует DINPUT, а я в нем пока не очень шарю.
Не могли бы вы сбросить мне примерчик, как можно двигать мышью в ИЛе. Хорошо бы в Дельфи, ну или хотя бы на С++.

MikeR
07.07.2003, 18:41
2 Alezz
очень ИМХО.
Сему творению не хватает 2 вещей:
1. Всевозможных тестов с графиками, фотками, видео и т.д. (Люди должны решить стоит-ли мучаться и собирать ради девайса такого или им проще купить тракир)
2. Полного по возможности описания отладки и парт-листа. Не все знают что такое ОУ и с какой стороны к нему подходить. Я например схему вроде понял, а с другой стороны всю жизнь терпеть ненавидел все условности в электроннике (ака помехи, разделяющие кондёры и т.д.)

3. Желательно ясно начерченная схема.

Я думаю при таком подходе намного большим людям принесёшь пользу.

Kitti_kat
08.07.2003, 08:55
2 ALEZZ . А почему разрабатывался вариант на магнитной системе? На ИК диодах разве не проще?
Но в любом варианте поддерживаю!
МОЛОДЦА!!!

Alezz
08.07.2003, 22:07
Originally posted by GO!
Не могли бы вы сбросить мне примерчик, как можно двигать мышью в ИЛе. Хорошо бы в Дельфи, ну или хотя бы на С++.
Примерчик получил? Где спасибо? :D

Alezz
08.07.2003, 22:09
Originally posted by MikeR
Я думаю при таком подходе намного большим людям принесёшь пользу.
Да собственно сборка железки не моя, мое только идея и софт. Посему все тонкости процесса отладки я и сам не знаю, хотя по теории все просто :)

Alezz
08.07.2003, 22:13
Originally posted by Kitti_kat
2 ALEZZ . А почему разрабатывался вариант на магнитной системе? На ИК диодах разве не проще?
Но в любом варианте поддерживаю!
МОЛОДЦА!!!
да, рассматривал в свое время много различных вариантов в том числе и оптическиие. Однако магнитный показался самым простым в реализации в домашних условиях, хотя не факт...

Glass Eagle
09.07.2003, 00:32
Originally posted by GO!
2 Alezz
...Никак не могу заставить из моей проги слушаться мышь в ИЛе, а в других окошках - пожалуйста! Вероятно дело в том, что он использует DINPUT, а я в нем пока не очень шарю.
Не могли бы вы сбросить мне примерчик, как можно двигать мышью в ИЛе. Хорошо бы в Дельфи, ну или хотя бы на С++. Аналогичная ситуация! Уважаемый коллега! Не могли бы Вы (если не в лом) и в меня кинуть примерчиком? Хорошо бы на С++, но можно и в Дельфи :D:D:D. На мыло (кину Вам в приват) или в приват.
Заранее мерси!!!

GO!
11.07.2003, 03:03
To Alezz
Примерчик получил, БААААльшое спасибо!!!!
Правда еще не разбирался - отпуск, рыбалка, и.т.д....
Чувствую, споемся!
Еще раз спасибо! Будут новости, напишу.
ЗЫ Кстати, мой вариант как раз IR..... 1передатчик и 2 приемника - эмулирует 2 оси, если 3 приемника - 3 оси.

Swift_CCCP
14.07.2003, 10:56
Раз пошла такая пляска, могу шлем разобрать.
У меня только цифровика неи, как достану будут фотки кишков...

VGV
14.07.2003, 19:31
Swift_CCCP
а что за шлем?

Glass Eagle
14.07.2003, 23:24
Originally posted by GO!
To Alezz
Примерчик получил, БААААльшое спасибо!!!!
Аналогично!!!

Maza
14.07.2003, 23:27
Originally posted by VGV
Swift_CCCP
а что за шлем? А ты под ником посмотри надпись :):D

Pioneerrr
15.07.2003, 03:08
Originally posted by Swift_CCCP
Раз пошла такая пляска, могу шлем разобрать.
У меня только цифровика неи, как достану будут фотки кишков...
Давно уж пора! бы

KLiM
15.07.2003, 03:46
ага, "раз пошла такая пьянка, режь последний огурец" :):)

можете меня тоже поздравить со вступлением в клуб любителей "UR Gear" :)

посему
1.вопрос - в каких играх ещё заставили его работать кроме Ила ?
2. предложение - создать некий виртуальный клуб "UR Gear" =)

Swift_CCCP
15.07.2003, 12:10
Ребята, вчера разобрал приемник что ставится на монитор
и за неимением фотика переписал микрухи на днях создам тему и буду постить туда инфу про устройство шлема, но это имеет смысл только при том что кто то будет реализовывать
проект аппаратно, и есть еще идеи но потом в соответствующей ветке...
извините времени не хватает.
попутно в прибалтике были 15 шлемов 20уе кто может доставить до Москвы?

GO!
17.07.2003, 03:20
2 Alezz
Примерчик не работает :(
Что-то в нем не хватает, курсор двигается только в окошках, которые не захватывают мышь, также, как и с SetCursorPos().
Кстати в Mouse_Event() можно делать относительный сдвиг без цикла, а сразу на нужный шаг, а еще удобнее - в абсолютных координатах.
Что же все-таки не хватает в этом примере?
Он реально работает?
В какой версии Ила?
Может, нужно копаться в настройках Ила?

Alezz
17.07.2003, 08:47
Originally posted by GO!
2 Alezz
Примерчик не работает :(
Что-то в нем не хватает, курсор двигается только в окошках, которые не захватывают мышь, также, как и с SetCursorPos().
Кстати в Mouse_Event() можно делать относительный сдвиг без цикла, а сразу на нужный шаг, а еще удобнее - в абсолютных координатах.
Что же все-таки не хватает в этом примере?
Он реально работает?
В какой версии Ила?
Может, нужно копаться в настройках Ила?
1. Все работает, но только в В2К, ХР, но не работает в 9х. К сожалению это не лечится.
2. Сдвигать нужно именно по одной точке, как в примере. Почему- поймешь, когда у тебя возникнут траблы с центровкой, я угробил на это не одну неделю

GO!
20.07.2003, 02:52
Тогда понятно, у меня как раз win98se!
Но можно еще попробовать сделать полную эмуляцию COM мыши, протокол несложный 2-3 байта. Хотелось бы получить работу устройства именно в win98se - на XP пока переходить не спешу, привык. При этом есть преимущество - никакой управляющей проги писать не надо, все будет зашито в микропроцессоре.
Не пробовал еще SendInput() - быть может, поможет?

Alezz
20.07.2003, 11:20
Originally posted by GO!
Тогда понятно, у меня как раз win98se!
Но можно еще попробовать сделать полную эмуляцию COM мыши, протокол несложный 2-3 байта. Хотелось бы получить работу устройства именно в win98se - на XP пока переходить не спешу, привык. При этом есть преимущество - никакой управляющей проги писать не надо, все будет зашито в микропроцессоре.
Не пробовал еще SendInput() - быть может, поможет?
Первоначально я тоже планировал делать полную эмуляцию мыши, но к счастью отказался. Во первых столкнулся с проблемой деления чисел в микроконтроллере с достаточной точностью- на компе естественно такой проблемы нет. Во вторых на компе я сделал кривые отклика, которые можно менять оперативно в микроконтроллере это сделать практически нереально. Ну и в третих, прога стала еще и сервисной- управляет контроллером (параметры дискритезации, усреднение, мощн. передатчика и т.д.)
На счет 98- ставь ХР даже не думай! Я сам долго бился с 98 но все безуспешно. Выход из ситуации в 98 один: нужен свой драйвер мыши

GO!
21.07.2003, 01:54
2 ALEZZ
//На счет 98- ставь ХР даже не думай!
Почти уговорил!
Но все же хочется поучиться на своих ошибках!
Я пока не вижу особых сложностей в эмуляции мыши
В сервисной проге конечно есть преимущество, но настроек мыши достаточно и в стандартных мышиных дровах, не говоря уже о Логитек и Гениус.
Кроме того, у меня есть не все дрова для XP - нет для Radeon8500 и для YMF.

Glass Eagle
22.07.2003, 00:45
2 ALEZZ
А в "NewView" у вас эмуляция мыши работает в Win98SE только из-за поддержки "натурального" TrackIR-а в Ил-2:ЗС?

Maza
22.07.2003, 02:03
Glass Eagle конечно, иначе как бы можно было смотреть на 360 градусов.

Alezz
22.07.2003, 09:33
Originally posted by Glass Eagle
2 ALEZZ
А в "NewView" у вас эмуляция мыши работает в Win98SE только из-за поддержки "натурального" TrackIR-а в Ил-2:ЗС?
Угу. Собственно читать позицию мышиного курсора в 98 проблемы нет, а вот установить :( Кста у ДжойТоКеу таже трабла- под 98 не работает, new_view живет только благодаря эмуляции ТракИра под ЗС

First
07.08.2003, 05:26
если можеш выложи (иль в приват) инфы побольшее чем чертежик отруки, бо повторить по нему девайс ну никак:(
энто ж не оптику с мыши в ф23 заместо резюков хотя и там не на 5минут делов:) помучился с малым диапазоном пока x 4 5 не привезли
и в статье по люфту (я к нему привычный а вот с пружиной борюсь но привыкаю) обешалось продолжение:)
вобще я может и не буду собирать, а шлем закажу, еще подумаю
програмка рулез сенкс ! (который раз! кто их считал? :) )

Maximus_G
07.08.2003, 08:46
Поддерживаю - прошу побольше инфы! Оч. хочется смастерить что-то подобное, и не меньше хочется знать все подвохи заранее.

VGV
07.08.2003, 10:35
а я веб камеру куплю наверное... вчера пробовал очень понравилось :)

First
08.08.2003, 04:32
показал знакомому электронщику он сказал что прошивки микроконтроллера нету
а что с
а я веб камеру куплю наверное... вчера пробовал очень понравилось
тоже подробнее пожалуйста

VGV
08.08.2003, 08:14
Во:
http://sukhoi.ru/forum/showthread.php?threadid=8851

GO!
08.08.2003, 17:20
Maximus_G & First & Alezz & 2All
Уважаемые вирпилы!!
Подождите до конца августа, начала сентября. Мой девайс на мази, он проще, и не привязан к WinXP. По задумке, должен полностью эмулировать мышь (на уровне железа, сейчас распознается как Logitech mouse for COM-port), работает в любых ОС (Даже в ДОС). Будет еще инфа, напишу обязательно!
Кроме того, у девайса будет режим работы, не привязанный к железу. Это позволяет написать прогу, учитывающюю самые немыслимые фантазии юзеров, особенно под XP. ;)

GO!
08.08.2003, 17:46
Кста!, выложите, у кого есть, ссылку(и) на треки с полетами с TrackIR -ом, please!
И еще: Кто знает, что такое TrackEM? (если есть инфа, URL, please!!)

Alezz
10.08.2003, 14:24
Originally posted by First
если можеш выложи (иль в приват) инфы побольшее чем чертежик отруки, бо повторить по нему девайс ну никак:(
энто ж не оптику с мыши в ф23 заместо резюков хотя и там не на 5минут делов:) помучился с малым диапазоном пока x 4 5 не привезли
и в статье по люфту (я к нему привычный а вот с пружиной борюсь но привыкаю) обешалось продолжение:)
вобще я может и не буду собирать, а шлем закажу, еще подумаю
програмка рулез сенкс ! (который раз! кто их считал? :) )
Ну что тебе сказать? Времени свободного нет совсем, но на КОНКРЕТНЫЕ вопросы ответ дать постараюсь....

Swift_CCCP
13.08.2003, 15:00
то GO!
ну хоть поделись как работа продвигается...

Maximus_G
14.08.2003, 09:22
To GO!:
Треки были, но еще под первый "Ил-2". На форуме их можно найти по поиску *trackir*.*

GO!
15.08.2003, 17:22
2 Maximus_G
Поиском *trackir*.* нашел три ветки (вместе с этой). Треков не нашел.

2 Swift_CCCP
Работа идет нормально, уже спаял макет: всего четыре микрухи, четыре транзистора и два фотодиода! :)
Получились очень простые и необычные АЦП: выдают код, обратно пропорциональный напряжению, в результате выходной код АЦП прямо пропорционален квадрату расстояния от приемника до передатчика.

Сейчас немного запутался в математике - подзабыл геометрию.
Подскажите, кто знает, как решить треугольник: по трем известным сторонам определить углы? Теорема смнусов - не подходит :(

MikeR
15.08.2003, 19:12
Используй косилу юный джедай =).
c^2 = a^2 + b^2 – 2*a*b*cos(C)
косинусы рекомендую по таблице делать. 1 или 2 такта всего надо будет.

GO!
16.08.2003, 01:38
2 MikeR
Эту фичу я знаю - теорема косинусов. В приципе, годится, но хотелось бы конкретно - учебники геометрии за 5-6 класс (времен СССР) - в Сети.
Думаю, просмотрев все варианты решения треугольников, можно придумать более простой алгоритм.
Про табличный синус или косинус - это совершенно верное решение, но проблема в том, что объем ROM в CPU ограничен махимум до 20kB(AT89C55), а хотелось бы поменьше - 2...4kB(AT89C51...52), а 8-разрядной таблицы - недостаточно, нужно 9-10 разрядов (больше - еще лучше). Может, придется взять 8-разрядную таблицу, а для промежуточных значений использовать линейную интерполяцию...

Все же поможите с треками для TrackIR, please!

Maximus_G
16.08.2003, 04:47
Тогда, на мой взгляд, проще всего обратиться к обладателям ТракИра. Касатке, например (больше никого не помню :rolleyes: )

Alezz
16.08.2003, 13:54
Originally posted by GO!
что объем ROM в CPU ограничен махимум до 20kB(AT89C55), а хотелось бы поменьше - 2...4kB(AT89C51...52), а 8-разрядной таблицы - недостаточно, нужно 9-10 разрядов (больше - еще лучше). Может, придется взять 8-разрядную таблицу, а для промежуточных значений использовать линейную интерполяцию...

Именно поэтому настоятельно рекомендую все расчеты доверить CPU x86 ;) а микроконтроллером производить только измерения

Swift_CCCP
28.08.2003, 17:57
Сентябрь уж близится...
Хотелось бы какой нибуть новостной абдейт...

MikeR
28.08.2003, 19:50
2 Go! не придумаешь проще т косинусов. Можешь вместо косинусоа выполнить апроксимацию Паде или разложить в ряд Тейлора. Углы и точность скажи - могу сделать.

MikeR
14.09.2003, 19:53
Кстати насчёт объёма -дык бери и прошивай внешний модуль - а потом просто считывай откуда надо.

ReviZorro
16.09.2003, 00:08
Трек с использованием TrackIR. За пилотаж и меткость просьба не пинать.

Spasatel
12.10.2003, 00:12
Originally posted by GO!
Maximus_G & First & Alezz & 2All
Уважаемые вирпилы!!
Подождите до конца августа, начала сентября. Мой девайс на мази, он проще, и не привязан к WinXP. По задумке, должен полностью эмулировать мышь (на уровне железа, сейчас распознается как Logitech mouse for COM-port), работает в любых ОС (Даже в ДОС). Будет еще инфа, напишу обязательно!
Кроме того, у девайса будет режим работы, не привязанный к железу. Это позволяет написать прогу, учитывающюю самые немыслимые фантазии юзеров, особенно под XP. ;)
С нетерпением ждем, уже октябрь! Хотя бы расскажи на каком этапе у тебя девайс? Я думаю всем будет интерестно! Так что нетеряйся GO!

Spasatel
18.10.2003, 21:53
Ну вот, обнадежил народ и больше непоявляешся GO! :(
GO! - ты где пропаал :confused:

GO!
27.10.2003, 17:47
2 All
Вот, наконец, родил - смотрите:
Схема: :D

GO!
27.10.2003, 17:54
А вот и трек (летаю слабо, не пинайте!) для первого ИЛ2 (не ЗС). :confused:

Spasatel
27.10.2003, 19:16
А можешь трек выложить в ЗА-СРА, а то штурмовик ставить нехочу.
Ну и вкратце хоть расскажи стоит собирать схему, какие плюсы минусы, работает в режиме трекир или как эмулятор мыши только, какой прогой пользуешься для обзора или вообще ничем?
И внешний вид, если можешь кинь фотку, ктати а для чего так много светодиодов и как их нужно распределять, я так понял они должны на голове находиться?

GO!
28.10.2003, 00:33
=XML=
Трек для ЗС и описание работы железки выложу на днях на narod.ru (сейчас оформляю), а здесь большие файлы не дают прикреплять. Коротко - принцип работы:
На козырьке кепки крепится матрица 4х4 из ИК светодиодов. Столько много нужно чтобы расширить угол излучения, у одного СД слишком узкая диаграмма направленности, а 16 немного раздвинуты наружу и получается более широкий угол. Кроме того, это уменьшает влияние засветки других источников света - люстра, окно и т.д.
На верхней крышке монитора крепятся два фотоприемника на расстоянии 5...12 см друг от друга. С них напряжение пропорц. освещенности идут на два АЦП (токовое зеркало + компаратор), а далее на CPU. CPU (AT89C51) используется только для получения кода АЦП и передачи его в комп.
По освещенности фотодиодов определяется расстояние от каждого из них до кепки, а по этим расстояниям находятся координаты самой кепки.
Вычислением координат мыши занимается основная прога в компе и пока только на XP. Прога до конца еще не доведена, есть много недостатков.

Главное достоинство этого варианта - простота.
Хорошее управление мышью по оси X.

Недостатки - недостаточно уверенное управление по Y.
Пока еще не достигнута такая плавность в управлении обзором, как в варианте ALEZZ (с катушками).
Не до конца решен вопрос с проскальзыванием мыши в ИЛе (нужна клавиша на центровку в прогах вроде ИЛа, захватывающих мышь).

Железка сделана на 4 кусках макетницы (без блока питания).
Основная плата (2АЦП + проц.):

GO!
28.10.2003, 00:38
А вот два одинаковых фотоприемника (фотодиоды обернуты изолентой, чтобы уменьшить боковую засветку от посторонних источников света):

GO!
28.10.2003, 00:41
И, наконец передатчик из 16 ИК светодиодов (крепится на козырьке кепки):

Pioneerrr
28.10.2003, 01:24
GO!!!, а ты можешь с сделать так, чтоб твое усройство видилось компом как обычный джойстик? Чтоб оно в комп передавало абсолютные координаты кепки. Завязывай со Штурмовиком и переключайся на ЗС. Там есть такая фича, как поддержка трекира. И супермега прога есть. NewView ей имя.

GO!
28.10.2003, 01:49
Эмуляцию геймпортового джойстика сделать могу, USB - не умею (надеюсь, пока). Абсолютныe координаты передавать через джойстик в принципе могу, но прога у меня сыровата, надо алгоритм доработать, сейчас результат зависит от десятка с лишним регуляторов в проге на Дельфи, такой обьем я никак не запихну в микропроцессор. ;)
Да и кого сейчас интересует геймпорт! :D

Pioneerrr
28.10.2003, 02:48
Originally posted by GO!
Эмуляцию геймпортового джойстика сделать могу, USB - не умею (надеюсь, пока). Абсолютныe координаты передавать через джойстик в принципе могу, но прога у меня сыровата, надо алгоритм доработать, сейчас результат зависит от десятка с лишним регуляторов в проге на Дельфи, такой обьем я никак не запихну в микропроцессор. ;)
Да и кого сейчас интересует геймпорт! :D

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

GO!
28.10.2003, 03:05
Геймпортовый джойстик или COM мышь могу полностью аппаратно, а координаты кепки пока аппаратно не могу - алгоритм сырой (надеюсь, пока ;) ). Потом, в случае, эмуляции COM овской мыши, нужно выключать у нее ускорение. Это аппаратно никак не сделаешь, только через реестр или драйвера мыши. :(

Pioneerrr
28.10.2003, 03:22
Брррр. Чет я совсем запутался.
Ненадо никакой эмуляции мыши.

Короче, что я хочу.
Нужно, чтобы твое устройство передавало координаты кепки в компутер на манер джойстика. Чтоб его было видно в виндюках. Пусть через геймпорт или COM. И без какой либо софтверной обработки, используя только аппаратные возможности устройства.

Можешь? :)

GO!
28.10.2003, 03:38
Послушай, ты трек видел? Влево-вправо ходит хорошо, а вверх-вниз есть проблемы! Причем управляемость зависит и от расстояния между приемниками и даже от изменения освещения в комнате. Так что для каждого конкретного случая нужно подобрать положение коеффициентов и регуляторов в проге. А как их изменять в микропроцессоре? Поставить кучу переключателей или джамперов в девайс? Можно, но пропадет главное - простота! Пока не будет найдено стабильное решение (изменением алгоритма или схемы), полностью в железе это устройство делать не стоит.
Хотя в принципе полностью в железе можно. Но не стоит. Я так думаю!
Нужна управляющая корректирующая прога, которая позволит юзеру поправить поведение девайса так, как ему нравится.

Pioneerrr
28.10.2003, 04:20
трек я первым делом посмотрел.
Вся пробема в том, что ты не юзал ЗС + НьюВьюв. ;) Ты бы сразу понял куда я клоню.
И я не знаю алгоритма работы твоего устройства, просвети. Принципы.

Spasatel
28.10.2003, 09:43
Originally posted by GO!
Послушай, ты трек видел? Влево-вправо ходит хорошо, а вверх-вниз есть проблемы! Причем управляемость зависит и от расстояния между приемниками и даже от изменения освещения в комнате.
А что если добавить еще два приемника, чтобы они обрабатывали верх-низ?

GO!
29.10.2003, 18:14
А ты молодца!
Именно об этом я сейчас думаю (про 4 фотоприемника). Схема усложнится в 1.5...2 раза. Но!:
- Существенно упростится математика
- Будет хорошее управление по вертикали
- Можно будет отслеживать третью ось - вперед-назад (прильнуть-отодвинутся от прицела).
Все-же сначала выложу, что есть, может кого-нить заинтересует и найдутся помощники (партнеры), не могу столько времени отдавать этому, основная работа хромает!
Сейчас еще думаю, как справится с засветкой от посторонних источников света. Есть одно решение, но там добавляется 3 микрухи, 3 транзистора, 4 стабильных! кондера и десяток резисторов. Уже есть мысли, как сделать проще!

GO!
29.10.2003, 18:30
Внимательный ты наш!

Кратко принцип описан 11 постов назад, на этой же странице!
Подробно будет в конце недели на narod.ru, адрес дам, когда будет готово.

samorez
29.10.2003, 20:45
Борьба с засветкой.
1. Классический - светофильтр ИК. Светимость Диодов на ИК превышает засветку минимум на порядок.
2. Другой классический - модулированное излучение и последующее выделение огибающей (предпочтительней).

GO!
30.10.2003, 17:35
1. Классический - светофильтр ИК.

Где взять или как сделать такой светофильтр?

2. Другой классический - модулированное излучение и последующее выделение огибающей (предпочтительней).

Этот вариант я уже испытал, действительно хорошо работает, лампа 100Вт с 0,5 м не мешает работе. Сейчас хочу упростить схему.

samorez
30.10.2003, 19:56
Originally posted by GO!
1. Классический - светофильтр ИК.

Где взять или как сделать такой светофильтр?



Идеальный светофильтр - пластина кремния. Из него сделаны солнечные элементы. Даже в калькуляторах. Только надо отличать от фуфла: к тем не подходят проводки. Метализация снимается механически в пределах разумного.
С натяжкой подойдет красное стекло. Оно отсечет почти весь видимый спектр. Правда от лампы накаливания не вылечит. Она, зараза, в ИК отдает 95% подводимого. :mad:

:)

GO!
02.11.2003, 06:11
Вот, наконец, выложил описание и треки:
http://headmous.narod.ru/

Заходите, смотрите!

Spasatel
02.11.2003, 17:42
Originally posted by GO!
Вот, наконец, выложил описание и треки:
http://headmous.narod.ru/

Заходите, смотрите!
Сейчас гляну!
У меня тут появилась идейка, а что если как нибудь попробовать сделать на основе оптической радио-мышки, вчера увидел такую мышь у знакомого!

samorez
02.11.2003, 17:46
Originally posted by =XML=
Сейчас гляну!
У меня тут появилась идейка, а что если как нибудь попробовать сделать на основе оптической радио-мышки, вчера увидел такую мышь у знакомого!

Друг!
Поделись открытием. :)

Spasatel
02.11.2003, 21:41
Originally posted by samorez
Друг!
Поделись открытием. :)
Да вообщем-то нет никакого открытия, позвонил вчера мне мой знакомый, попросил чтоб я ему настроил компутер, зашел смотрю лежит у него мышь оптическая, маленькая совсем, и проводов к ней нет, светится вся как елочная гирлянда!Даже пиликает когда почта приходит! Говорит купил за 50$ с доставкой, в Москве должна дешевле быть. В комплекте к ней зарядное ус-во и приемник тоже очень маленький, к USB порту подключается,работает на 2-х ААА аккумуляторах, название вроде такое-с его слов Genius Wireless Webscrol+NBEye. Вот я и подумал, есть уже вполне готовый вариант, только нужно придумать как сделать, или как приспособить ее для обзора?
Сейчас посмотрю сколько такой мышь стоит ;)

Spasatel
02.11.2003, 22:00
Ну вот! смотрите что нашел! на мини ненашел цену вот здесь описание
http://www.nix.ru/autocatalog/mouse_genius/MOUSGenMiniWirel_16882.html
На Олди, Mouse Genius Wireless Optical Pro беспроводная оптическая USB, 27Mhz, 5 кнопок, ЗУ цена 42$ есть другие, по 38,36$ и даже 15$ только не оптическая 2-я ссылка! %)
http://www.oldi.ru/catalog/show.php?idx=1277&cod=30283
http://www.oldi.ru/catalog/show.php?idx=1276&cod=37529
http://www.oldi.ru/catalog/show.php?idx=1235&cod=30601

samorez
03.11.2003, 00:03
Originally posted by =XML=
Сейчас гляну!
У меня тут появилась идейка, а что если как нибудь попробовать сделать на основе оптической радио-мышки, вчера увидел такую мышь у знакомого!

Я про принцип использования. Ломать ее будешь?
Или что другое?
Или радиоканал тебя осенил чем?

Spasatel
03.11.2003, 01:01
Originally posted by samorez
Я про принцип использования. Ломать ее будешь?
Или что другое?
Или радиоканал тебя осенил чем?
Можно например использовать радиоканал от дешевой мышки для передачи координат разрабатываемого веткой выше TrackIRа на гироскопических датчиках (http://www.sukhoi.ru/forum/showthread.php?threadid=16405&goto=newpost), оптику еще незнаю как применить, стандартная непойдет, если только неиспользовать совсем Бредовую идею такую, как привязывание на голове мыши и стола под потолком :D а потом елозить по этому столу мышой %).
Видишь ли я уже давно с электроникой несвязывался, поэтому конкретно ничего немогу предложить кроме вот таких идей :) могу предположить только, что если поработать с оптикой, и сделать так чтобы она замечала любое перемещение с любого расстояния например закрепленная как шлем на голове, вообщем-то мы получим почти то-же, что и UR Gear только своими руками! ;) Хотя кто знает может и лучше будет!

Pioneerrr
03.11.2003, 02:06
Да причем тут радиомышь! Тем более за 50 даларов.
URGear и радио мышь, это совсем разные вещи, в принципе.
Иначе говоря, радиомышь, тут вообще не приделах. Принципиально, то она ничего не решает. Нет проблемы электрической отвязки головы от компа. Никого не обломает, лишний проводок от башки. Есть проблема в устройстве, которое эмулировало бы эту самую мышь, или джойст.

GO!
03.11.2003, 02:50
Вот здесь придумал самый дешевый вариант TrackIR (http://www.sukhoi.ru/forum/showthread.php?threadid=15210&highlight=trackir) примерно то же описано, но без переделки оптики мышки.

Swift_CCCP
03.11.2003, 13:15
Мне кажется люди правы в следующем
1) Надо что бы была аппаратная реализация на гейм порт.
Если в Виндовс ХР устройство будет определятся как джойстик 2 оси - то все будет работать с программой NewViev.

2) Если вертикаль плохо отрабатывается то правильная идея добавить еще 2 приемника, тем более что прилепить на монитор 4 приемника с каждой стороны монитора труда не составит.

3) ИК Фильтр. Самый простой способ взять от пульта телевизора. Наверняка в телерадио мастерских или магазинах есть.

4) Меня волнует 16 ик диодов. Что можно придумать в виде рассеивателя, что б не лепить их столько много для увеличения угла обзора?
может просто спилить линзу, и тогда рассеивание увеличится?

arkady
03.11.2003, 16:40
Ловите идею: :)
Я сделал ИК-фильтр из поляризационного светофильтра от ЖК-дисплея сломанного микрокалькулятора: разрезал его на 2 половинки и сложил крест-накрест - видимый свет не пропускает, а ИК лучи проходят.

Spasatel
03.11.2003, 17:06
Originally posted by GO!
Вот, наконец, выложил описание и треки:
http://headmous.narod.ru/

Заходите, смотрите!
Посмотрел треки, конечно нужно дорабатывать, очень большие рывки, лучше тогда пользоваться камерой+Cam2Pan с инф_светодиодом и поляризационным светофильтром как советует arkady. Кстати а можно сделать чтобы эта связка определялась как оси джойстика а не как мышь?

samorez
03.11.2003, 20:03
Originally posted by =XML=
Можно например использовать радиоканал от дешевой мышки для передачи координат разрабатываемого веткой выше TrackIRа на гироскопических датчиках (http://www.sukhoi.ru/forum/showthread.php?threadid=16405&goto=newpost),
Видишь ли что если поработать с оптикой, и сделать так чтобы она замечала любое перемещение с любого расстояния например закрепленная как шлем на голове, вообщем-то мы получим почти то-же, что и UR Gear только своими руками! ;) Хотя кто знает может и лучше будет!

На счет радиоканала, то верно тут товарищь Пиониррр подметил. Лишний проводок - не помеха. Это пусть напрягаются потомки.:) К тому же Мах верно решил разместить кишки в наушниках.
А вот оптика... Тоже долго рассматривал светящуюся мышу.
Если оптика позволит отодвинуть поверхность от нее, то прикольный девайс будет! Жалко не знаю ее принципа действия. А то и лазер имеется в каждом киоске...
Хотя это все не то...

Spasatel
03.11.2003, 22:09
Originally posted by Pioneerrr
Да причем тут радиомышь! Тем более за 50 даларов.Иначе говоря, радиомышь, тут вообще не приделах. Принципиально, то она ничего не решает. Нет проблемы электрической отвязки головы от компа. Никого не обломает, лишний проводок от башки.
Я говорил радиоканал от дешевой мышки за 15$ а не за 50, так было бы веселей, я думаю, если уж делать, то делать такую штуку насовесть, а с проводками от головы, мне бы лично не понравилось :(

Spasatel
04.11.2003, 01:12
2GO!
Попробуй фильтр я здесь (http://www.sukhoi.ru/forum/showthread.php?s=&threadid=15602&perpage=25&pagenumber=2) описал какой я использую для Web_камеры.Проблемы с засветкой сразу отпадут!

GO!
04.11.2003, 17:58
1. Я не встречал часов с такими фильтрами.
2. У дисплея калькулятора керамическая непрозрачная подложка, как же получается фильтр?

Вчера на Vbench проверил упрощенный вариант с приемником модулированного излучения. Получается в один канал добавка: 2 резистора, 2 конденсатора и 2 диода, но нужно уже двуполярное питание для ОУ: +12 и -12в. Модулятор передатчика - простой, на 555 таймере, и ему нужен ОТДЕЛЬНЫЙ стабилизированный источник на 12в. Засветка при этом устраняется полностью, но для четырех каналов это уже существенное усложнение схемы. Будем думать дальше... :confused:

Spasatel
04.11.2003, 18:30
Originally posted by GO!
1. Я не встречал часов с такими фильтрами.
2. У дисплея калькулятора керамическая непрозрачная подложка, как же получается фильтр?
1) Там бывают фильтры и поменьше они крутятся вместо секундной стрелки, на циферблате наклеян такой же, когда секунды крутятся, циферблат то затемняется то наоборот становится светлее.
2)В некоторых калькуляторах и электронных часах фильтр должен находиться в нижней части табло, он как пленочка, если его перевернуть, то циры на эл.табло станут белыми а фон черным, вот нужны две такие пленочки, или разрезать одну.
3)Еще такие фильтры применяются в фотографии, продаются в любом фотомагазине.

GO!
06.11.2003, 03:33
3)Еще такие фильтры применяются в фотографии, продаются в любом фотомагазине

Вот это интересно! Как они называются и сколько стоят (примерно)? В общем, что спрашивать в магазине?
Хмм.... А нафига они нужны в фотографии?

GO!
06.11.2003, 03:41
Еще одно замечание: На твоих фотках батарейка на 3в., наверно, литиевая, ИК светодиоду нужно 1,3..1,7в, если больше - сгорит нафиг, проверено! Наверно тебя спасло внутреннее сопротивление батарейки, на всякий случай проверь ток, у большинства ИК светодиодов максимальный ток около 100мА. Лучше примени обычную пальчиковую батарейку АА, так же совсем не помешает выключатель! :D

arkady
06.11.2003, 13:16
Originally posted by GO!
3)Еще такие фильтры применяются в фотографии, продаются в любом фотомагазине

Вот это интересно! Как они называются и сколько стоят (примерно)? В общем, что спрашивать в магазине?
Хмм.... А нафига они нужны в фотографии?
В фотографии они применяются для устранения бликов от неметаллических поверхностей (вода, стекло, пластик) а также для притемнения неба (небо получается более насыщенного и красивого цвета). Фирменные стоят довольно дорого. В общем, легче взять от часов или калькулятора.

samorez
06.11.2003, 18:51
Originally posted by GO!

Вот это интересно! Как они называются и сколько стоят (примерно)? В общем, что спрашивать в магазине?
Хмм.... А нафига они нужны в фотографии?

Добавлю к сказанному.
Просто при отражении свет частично поляризуется. Такой фильтр имеет возможность поворачиваться, и в объективе видно как блик меняет свою интенсивность в зависимости от ориентации фильтра.
Это уже оптический прибор, соответственно и цена.
Вот насчет "металла - неметалла" - неожиданно... хотя не по теме...:)

Spasatel
07.11.2003, 19:16
Originally posted by GO!
3)Еще такие фильтры применяются в фотографии, продаются в любом фотомагазине

Вот это интересно! Как они называются и сколько стоят (примерно)? В общем, что спрашивать в магазине?
Хмм.... А нафига они нужны в фотографии?
Ну тут уже все выше сказано, мне добавить нечего.
А спрашивать нужно именно поляризационный фильтр, он так и называется, они бывают разные по диаметру, их подбирают по диаметру объектива, есть даже с изменяемыми углами и т.д.

Originally posted by GO!
Еще одно замечание: На твоих фотках батарейка на 3в., наверно, литиевая, ИК светодиоду нужно 1,3..1,7в, если больше - сгорит нафиг, проверено! Наверно тебя спасло внутреннее сопротивление батарейки, на всякий случай проверь ток, у большинства ИК светодиодов максимальный ток около 100мА. Лучше примени обычную пальчиковую батарейку АА, так же совсем не помешает выключатель! :D
Специально применил такую, достоинства: маленькая, легкая, большая емкость, под нагрузкой диода напряжение падает, правда неизмерял насколько, но диод нормально работает уже неделю! и батарейка еще не села! Резинка сшита кольцом, в месте шва стоит ботарейка с светодиодом, одеваю на голову, веса неощущаю, пробовал кепку непонравилось, мешает на голове!

samorez
07.11.2003, 20:03
Господа!
Что-то тут у вас не красиво. Резинки, батарейки...
Может все же отражатель? Излучатель рядом с приемником. Их теперь четыре? Вот у каждого в блоке по излучателю.
А отражатель - от аварийного знака авто. Там уголковый отражатель: откуда взял - туда отправил. Независимо от ориентации самого.
А то и пленочки возвращательные для авто продаются.
Я про суть.
:)

GO!
08.11.2003, 04:08
Как я понял, нужно спрашивать поляризационный фильтр. Попробую, узнаю. Но мне проще спаять схемку из 10-20 деталей, чем бегать по магазинам, наверно, буду делать защиту от засветки изменением схемы, а не фильтрами, хотя оба варианта имеют право на жизнь, для меня проще паять!

...Четыре канала пока еще только в проекте и не испытаны. Однозначно математика будет проще + появится возможность отслеживать 3-ю ось (к прицелу - от прицела).

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

GO!
08.11.2003, 04:29
Ты же сам выше говорил, что лишний проводок на башке никого не напрягает (все равно жена заставит наушники надевать!). С пассивным отражателем получается совсем невыгодная ситуация - уровень принятого сигнала обратно пропорционален ЧЕТВЕРТОЙ! степени расстояния (вспомни радиолокацию!). В самодельном TrackIR обязательно должен быть активный излучатель! (или естественный - магнитное или гравитационное поле Земли и.т.п.)

samorez
08.11.2003, 12:15
Originally posted by GO!
Ты же сам выше говорил, что лишний проводок на башке никого не напрягает (все равно жена заставит наушники надевать!). С пассивным отражателем получается совсем невыгодная ситуация - уровень принятого сигнала обратно пропорционален ЧЕТВЕРТОЙ! степени расстояния (вспомни радиолокацию!). В самодельном TrackIR обязательно должен быть активный излучатель! (или естественный - магнитное или гравитационное поле Земли и.т.п.)

Я забыл... Это была реакция на батарейку.
"Виноват! Вспылил! Чем могу искупить..." :D
Но про ЧЕТВЕРТУЮ степень...
Всеже квадрат расстояния, кажется. Удваивается значение, а не степень... Ведь меняется скорость. А она, вроде, на уровень сигнала не влияет (доплеровщина не в счет!).
А на счет излучателя... Совершенно верно. Но ведь рожа вирпила тянет ватт на 10. Правда без подсветки нужен будет жидкий азот для приемника. А с подсветкой простая схема справится. В ТракИре видеокамера - вещь дохлая. А нормальный фотодиод - самое то! И засветка сзади не помешает т.к. квадрат расстояния.
Сумбурно немного... Праздник ведь был...;)
И еще... А авиасим поддерживает ось "к прицелу" или дискретную команду? Если ось, то удобно ли над джоем качаться?.. Образно. А если команду, то стоит ли городить?

VGV
08.11.2003, 12:35
ЛокОН вроде поддерживает, в Ил2 только дискретные шаги.

samorez
08.11.2003, 12:38
Originally posted by VGV
ЛокОН вроде поддерживает, в Ил2 только дискретные шаги.

Спасибо, коллега!;)

VGV
08.11.2003, 12:50
можно програмульку и на дискретные шаги написать...былоб устройство :)

samorez
08.11.2003, 14:27
Так вот вопрос: а надо рожей к прицелу? Или кнопки хватит.
Есть еще одна особенность взгляда. Дело в том, что мы пялимся не в бесконечность как летчики, а в моник. Переодическое изменение расстояния может утомлять глаза. Вместе с изменением картинки будет меняться ее четкость (строки-пикселы). Напряжет?
Я вот пялюсь на моник с метра. Так получилось... (Стол стоит у окна, а экран - на балконе за стеклом). Приходится переводить взгляд с клавы на экран. Напрягает...
А вот летать - в кайф. Четкость выше и глаза почти на месте...
Вот!:)

GO!
10.11.2003, 00:41
По-моему, поддерживает. Это - мышь вверх-вниз с зажатой кнопкой.

samorez
10.11.2003, 17:24
Originally posted by GO!
По-моему, поддерживает. Это - мышь вверх-вниз с зажатой кнопкой.

Пробовал. Нифига! Эт только с внешними видами.
В кабине кнопочка мыша не работает...
:(

GO!
11.11.2003, 02:46
Точно! только во внешних видах! Сегодня проверил.
Зато в настройках управления можно задать кнопки увеличить-уменьшить угол обзора. Можно задать мертвую зону по оси Z, и при выходе из нее ближе к монитору эмулировать нажатие кнопки "уменьшить угол", а при выходе в другую сторону - "уменьшить".

Spasatel
11.11.2003, 23:35
Originally posted by GO!
А авиасим поддерживает ось "к прицелу" или дискретную команду?
LockOn поддерживает, я в Х45 повесил зум на ротари 1! все работает приближение к прицелу и т.д.

samorez
13.11.2003, 21:38
А в этом Локоне прицел приближается или вся картинка укрупняется как в ИЛе? Вот в ИЛе к прицелу льнут не понастоящему.
Сам только ИЛ юзаю...:)

Spasatel
17.11.2003, 15:39
Так же, вся картинка приближается!
Может в релизе изменится что-то :)
Кстати здесь (http://forum.sukhoi.ru/showthread.php?s=&threadid=17006) даже тема есть по поводу приближения.

GO!
28.01.2004, 02:37
Позволю разок себе повториться, уже в своей (нашей) ветке:

"Все перевернул с ног на голову, теперь будет 4 передатчика и один приемник. Влияние засветки устранил (почти) полностью - лампа в 100Вт с расстояния 500мм практически не влияет на результат!
Схема получилась не сложнее , чем двухканальная (сейчас 4 канала, легко можно довести до 6 каналов, практически без усложнения схемы!). Появился небольшой дергунец во всех каналах, сейчас это главная проблема, все еще не понял, в чем дело, похоже в том, что излучающие ИК светодиоды включаются недостаточно быстро... или наводки... (на осциллографе мне показалось, что помехи похожи на кадровые импульсы TV...) будем думать дальше! Программа еще не готова, но уже обнадеживает, благодаря 4 каналам, уже осуществляется усреднение измерений, благодаря чему, дергунец уменьшается в 2 раза (усе равно, что добавляется один бит в ADC!) Частота измерений меняется от 10/сек до 60..100/сек, в зависимости от расстояния от излучателей до приемника. Здесь, похоже, лучше применить AVR контороллер с встроенным ADC, но для задачи управления обзором и частоты 10/сек вполне достаточно (имхо)."

Это я написал неделю назад, в соседней ветке. Теперь текущие сводки с фронта:

В процессе доводки железа полностью подтвердилась (ранее только подозреваемая) сильная анизотропия излучающего светодиода (применялся импортный СД синюшного цвета, диаметром 5мм, якобы, для пультов ДУ). ДН (диаграмма направленности) в плоскости ножек СД (светодиода) и в плоскости, нормальной к ножкам, и в плоскости под углом в PI/4, сильно отличаются друг от друга! Причем, последняя ДН, которая "в плоскости под углом в PI/4", не является промежуточной, а является еще более острой, чем первые две! Отсюда следует вывод, что в ДН СД есть не менее 4х лепестков! (И еще один вывод - неудачи в применении оптики в джоестроении могут быть связаны и с этим тоже!)
Исследование ранее применявшихся мною СД АЛ164 (с плоской матовой излучающей поверхностью) показало еще более неравномерную ДН (два огромных боковых лепестка и один плоский центральный), кроме того, у них более низкий КПД, все это исключает возможность применения отечественных СД (с плокой матовой излучающей поверхностью), а как бы хотелось поддержать отечественного производителя!
За последние несколько дней, я наконец, собрал установку для снятия ДН СД. Вчера и сегодня только этим и занимаюсь. Похоже, что при учете неравномерности ДН СД, все-таки возможно использование СД (но только не с плоской излучающей поверхностью!).

Хватит про оптику, пора про электронику! Как я писал неделю назад, "Появился небольшой дергунец во всех каналах". Так вот, я его наконец победил! Дергается код АЦП только в 3м-4м знаке! Посто я немного лоханулся и неправильно рассчитал фильтры. В последнем варианте их три: первый ФНЧ (Q~5, Fr~3kHz), второй ФВЧ(Q~1.5,Fr~3.6kHz) (основная фильтрация от бытовых источников света), а третий - довольно странный, у него везде коеффициент передачи не меньше единицы, но на 3kHz огромный горб около 20дБ (или даже больше, на память не скажу). И кроме того, я поменял в АЦП простейшее токовое зеркало на токовое зеркало Уильсона, но это мало на что повлияло (может быть, на температурную стабильность, ессно, в лучшую сторону).
В результате доработок "дергунец" практичеки исчез, но снизилась частота опроса до (6...7Hz-40...85Hz) "в зависимости от расстояния от излучателей до приемника":D.

"Будем думать дальше!";)

Pioneerrr
28.01.2004, 05:58
GO!
Как метод борьбы с анизотропией излучателей. Может приемник на голове делать, а не излучатель.
Как там с ДН приемников дело обстаит?

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

GO!
29.01.2004, 03:49
Нет, так не очень. Поначалу рассматривал вариант с четырьмя фотоприемниками, но оказалось выгоднее 4 передатчика и один приемник (передатчики излучают не одновременно, а по очереди). Дело в том, что после приемника стоят аналоговые фильтры, сейчас - целых 3 каскада. Они фильтруют постоянную засветку и мерцающую - солнечный свет и люминесцентные лампы и т.п. А передатчик - это всего лишь СД управляемый ключом, ну и еще источник тока - один на все 4 канала. Последний вариант получается гораздо проще, кроме того, легче достичь идентичности каналов, влияет только разброс характеристик СД, а не всей аналоговой части с фильтрами - она общая для всех каналов.
ДН светодиодов уже снял. Сейчас она у меня ввиде трех таблиц: по вертикали, по горизонтали и по диагонали (от плоскости выводов). Сейчас пишу вспомагательную прогу, с помощью которой я найду необходимую функцию для преобразования ДН в форму равнобедренного треугольника. Дальше - просто. Алгоритм примерно как у частотного детектора в ЧМ приемнике (сложение-вычитание).

Hruks
02.02.2004, 08:47
Хочется разубедить всех безоговорочно жадущих вывода данных сего девайса на оси джоя.
Если это нужно для управления чем-то как джоем, то очень омневаюсь что это будет юзабельно.
Если это для взаимодействия с NewView, то это операция на глаз через задний проход!
NewView опрашивает джой для получения абсолютных координат и передачи их после обработки Илу. Но ему совершенно не важно откуда брать эти самые координаты. Более того, опрос джоя это не самое точное и быстрое решение. Гораздо проще спрашивать эти данные у той, программы, что уже написана и пихать их Илу. Именно так работает TrackEM от Alezz'a. Это я к тому что открытый интерфейс для подобных программ и железяк уже реализован в NewView! Нет необходимости городить огород с осями джоя для обзора. Вот.

Pioneerrr
02.02.2004, 19:37
Originally posted by GO!
А передатчик - это всего лишь СД управляемый ключом, ну и еще источник тока - один на все 4 канала.
А что если также коммутировать принимающие диоды через какинть поливики? или помехи вносятся?

GO!
14.02.2004, 03:51
А что если также коммутировать принимающие диоды через какинть поливики? или помехи вносятся?

Ты подумай, сколько энто будет стоить! И что это дает! Есть хорошая микруха КР1109КТ22 (7 ключей в DIP16 корпусе!)(аналог ULN2003A), и куча других микрух - токовых ключей, которые стоят копейки и полностью удовлетворяют... разработчика. :)

2 Hruks

Если это для взаимодействия с NewView, то это операция на глаз через задний проход!

Не... Это всего-лишь один из вариантов устройства управления обзором. NewView - вещь! Но - хочу большего, потому и не бросил! TrackIR в целом, по России, купить почти нереально (даже в Самаре!) (и дороговато).

Похоже, намечается хорошая альтернатива TrackIR в виде известной проги CAM2PAN. Но и она не лишена недостатков. Хотелось бы там увидеть поддержку не только веб-камер, но и камер, подключенных к компу через платы видеозахвата, TVтюнеры и т.п.

Посему, поскольку, как заметил гн. Pioneerrr "...копать следует во всех направлениях...", я все еще продолжаю свою разработку.

Надо отметить, что в новом варианте с 4-мя передатчиками уже есть четкая привязка к центру, с небольшой мертвой зоной, которая регулируется поворотом одного подстроечного резистрора (порог приемника).

Аппаратная часть решена полностью, остались вопросы с излучателями и с программой.

GO!
14.02.2004, 04:26
Но про ЧЕТВЕРТУЮ степень...
Всеже квадрат расстояния, кажется. Удваивается значение, а не степень... Ведь меняется скорость. А она, вроде, на уровень сигнала не влияет (доплеровщина не в счет!).

Не-а! Именно так! С пассивным отражателем уровень сигнала меняется именно в 4-й степени! И невозможно его исправить или ухудшить применением отражателей хитрой формы.

С природой не поспоришь!

GO!
28.02.2004, 01:23
Показываю скриншот индикатора проги. Здесь я пытался начертить крест и обвести крайнюю рамку. Головой, не мышкой! :)
Зеленое перекрестие показывает текущии координаты курсора.
Пока еще не ввел мертвую зону и регулировку кривой отклика. Так же есть проблемы по управлению параметрами мышки. Об этом ниже.

GO!
28.02.2004, 01:29
Проблема в следующем.
Вопрос программистам: Как программно регулировать чувствительность (не ускорение) мышки?
Из MSDN выходит, что так:


var
Speed: Integer; // от 1 до 20, по умолчанию 10.
erc: longbool;
ercc: cardinal;
//.......

//.......
procedure TForm1.SpeedChange;
begin
erc:=SystemParametersInfo(SPI_GETMOUSESPEED, 0, @Speed, 0);
Speed:=1; // Установить sensitivity=1
erc:=SystemParametersInfo(SPI_SETMOUSESPEED, 0, @Speed, SPIF_SENDCHANGE or SPIF_UPDATEINIFILE);
ercc:=GetLastError;
end;

На самом деле, правильно выполняется только считывание текущей чувствительности, а запись (2й вызов SystemParametersInfo()) возвращает erc=false, в последней строке ищу код ошибки, а ercc=0. Проверял в Win98 и WinXP, результат - один.

Вызов той же функции для регулировки ускорения мышки работает в обе стороны и чтение (SPI_GETMOUSE) и запись (SPI_SETMOUSE). Я в непонятках, что здесь не правильно? Есть ли другие программные способы регулирования чувствительности мышки?

GO!
29.02.2004, 06:17
Выходит, что никто не знает!
Обращаюсь еще раз конкретно к UIV, Maxix, Hruks&Alezz (а также и к остальным, кто знаком с функциями API)
Как программно регулировать чувствительность (не ускорение) мышки? итд, итп...
Справлюсь, конечно, и без этого, но так мышка будет двигаться плавнее, и мне не придется отслеживать изменение разрешения дисплея.

GO!
29.02.2004, 06:45
Точно знаю, что это сделать можно, и вот почему:
Существует такая прога "XPmousespeed", когда ее запускаешь, в заголовке диалогового окна "XPмышегон". Работает и в Win98 и в WinXP. FreeWare. Она написана кем-то с сайта команды по каунтстрайк М19. Но и в сайте и в проге нет ни одного мыла для связи. Кроме того, эта прога выложена на сайте одного из лицеев Нижнего Новгорода. Может быть, кто-нибудь знаком с этой прогой или знает, как связаться с ее автором?

GO!
29.02.2004, 07:29
Лазая по 'XPMouseSpeed.exe' (118784байт 29.12.2002), я обнаружил, что прога написана на Visual C и тоже использует функцию API SystemParametersInfo().
Если так, то быть может, стоит поменять не разработчика, а версию Дельфи?! :D (сейчас у меня Delphi interprise version 5.0(build 5.62)).
Или попробовать на Visual C? Хотя я в нем не особеннно силен :( . Будем думать дальше! :D

Mishel
02.03.2004, 19:48
Originally posted by GO!
Проблема в следующем.
Вопрос программистам: Как программно регулировать чувствительность (не ускорение) мышки?
Из MSDN выходит, что так:


var
Speed: Integer; // от 1 до 20, по умолчанию 10.
erc: longbool;
ercc: cardinal;
//.......

//.......
procedure TForm1.SpeedChange;
begin
erc:=SystemParametersInfo(SPI_GETMOUSESPEED, 0, @Speed, 0);
Speed:=1; // Установить sensitivity=1
erc:=SystemParametersInfo(SPI_SETMOUSESPEED, 0, @Speed, SPIF_SENDCHANGE or SPIF_UPDATEINIFILE);
ercc:=GetLastError;
end;
[...]
При использовании SPI_SETMOUSESPEED нужно передавать третьим параметром не адрес переменной, а её значение (или константу), приведённое к типу указателя. То есть, в Вашем случае должно быть примерно следующее:


erc:=SystemParametersInfo(SPI_SETMOUSESPEED, 0, Pointer(Speed), SPIF_SENDCHANGE);

В четвёртом параметре SPIF_UPDATEINIFILE добавлять не надо, так как SPIF_SENDCHANGE делает всё, что нужно:



SPIF_SENDCHANGE Broadcasts the WM_SETTINGCHANGE message after updating the user profile.


Проверено - работает.

GO!
03.03.2004, 04:19
Originally posted by Mishel
При использовании SPI_SETMOUSESPEED нужно передавать третьим параметром не адрес переменной, а её значение (или константу), приведённое к типу указателя. То есть, в Вашем случае должно быть примерно следующее:


erc:=SystemParametersInfo(SPI_SETMOUSESPEED, 0, Pointer(Speed), SPIF_SENDCHANGE);

В четвёртом параметре SPIF_UPDATEINIFILE добавлять не надо, так как SPIF_SENDCHANGE делает всё, что нужно:



Проверено - работает.

GO!
03.03.2004, 04:24
Originally posted by Mishel
При использовании SPI_SETMOUSESPEED нужно передавать третьим параметром не адрес переменной, а её значение (или константу), приведённое к типу указателя. То есть, в Вашем случае должно быть примерно следующее:


erc:=SystemParametersInfo(SPI_SETMOUSESPEED, 0, Pointer(Speed), SPIF_SENDCHANGE);

В четвёртом параметре SPIF_UPDATEINIFILE добавлять не надо, так как SPIF_SENDCHANGE делает всё, что нужно:



Проверено - работает.

Спасибо, заработало! :)

Обьясняется имхо немного по другому:
@Speed - адрес Speed - константа
Pointer(Speed) - указатель, установленный на адрес Speed - переменная

Не совсем понятно почему работает SPI_SETMOUSE так как у меня и по указателю тоже:



type
paMouse= ^aMouse;
aMouse = array [1..3] of integer;
var
Speed : Integer;
aM : aMouse;
paM : paMouse;
erc : longbool;

//.............................

paM:=@am;
am[1]:=0; //Отключить ускорение
am[2]:=0;
am[3]:=0;
erc:=SystemParametersInfo(SPI_SETMOUSE, 0, @aM, SPIF_SENDCHANGE); //работает :)
erc:=SystemParametersInfo(SPI_SETMOUSE, 0, paM, SPIF_SENDCHANGE); //работает :)

Speed:=1; //Установить чувствительность=1
erc:=SystemParametersInfoW(SPI_SETMOUSESPEED, 0, Pointer(Speed),SPIF_SENDCHANGE); //работает :)
erc:=SystemParametersInfoW(SPI_SETMOUSESPEED, 0, @Speed, SPIF_SENDCHANGE); //не работает :(

Я думаю, что это как-то связано с тем что
sizeof(aM){=12} > sizeof(Speed){=4}
при передаче параметров с размером, большим 4 байт, передается не параметр, а указатель на него.
Но ведь sizeof(@Speed) = sizeof(Pointer(Speed)) = sizeof(@aM) = sizeof(paM) = 4

...А при приеме SPI_GETMOUSE и SPI_GETMOUSESPEED работают наоборот только @aM и @Speed ...

Как то туманно все это. Но главное - результат достигнут. Еще раз спасибо! :)

Mishel
03.03.2004, 21:39
2 GO!
Попробую прояснить ситуацию.

Originally posted by GO!
Обьясняется имхо немного по другому:
@Speed - адрес Speed - константа
Pointer(Speed) - указатель, установленный на адрес Speed - переменная

Не важно (в данном случае), константу Вы пытаетесь передать или переменную. Для компилятора важен тип передаваемого параметра, а для кода вызывыемой функции - значение. В обоих случаях тип передаваемого параметра - Pointer (т.е. - компилятор удовлетворён), а вот значение - в первом случае - это адрес переменной Speed, а во втором - значение переменной Speed. Так как вызываемая функция проверяет диапазон допустимых значений данного параметра (1..20), а адрес переменной Speed не входит в этот диапазон, функция возвращает false (в первом случае).


Не совсем понятно почему работает SPI_SETMOUSE так как у меня и по указателю тоже:



type
paMouse= ^aMouse;
aMouse = array [1..3] of integer;
var
Speed : Integer;
aM : aMouse;
paM : paMouse;
erc : longbool;

//.............................

paM:=@am;
am[1]:=0; //Отключить ускорение
am[2]:=0;
am[3]:=0;
erc:=SystemParametersInfo(SPI_SETMOUSE, 0, @aM, SPIF_SENDCHANGE); //работает :)
erc:=SystemParametersInfo(SPI_SETMOUSE, 0, paM, SPIF_SENDCHANGE); //работает :)

Speed:=1; //Установить чувствительность=1
erc:=SystemParametersInfoW(SPI_SETMOUSESPEED, 0, Pointer(Speed),SPIF_SENDCHANGE); //работает :)
erc:=SystemParametersInfoW(SPI_SETMOUSESPEED, 0, @Speed, SPIF_SENDCHANGE); //не работает :(

Здесь в первых двух вызовах передаётся указатель: @aM - нетипизированный (Pointer), paM - типизированный. И тот и другой совместимы по типу с Pointer и указывают на один и тот же массив.
В третьем вызове передаётся значение Speed (=1) (значение типа Integer приведено к типу Pointer, но по прежнему является значением, а не адресом переменной Speed), в четвёртом вызове передаётся адрес Speed (явно вне диапазона 1..20).


Я думаю, что это как-то связано с тем что
sizeof(aM){=12} > sizeof(Speed){=4}
при передаче параметров с размером, большим 4 байт, передается не параметр, а указатель на него.
Но ведь sizeof(@Speed) = sizeof(Pointer(Speed)) = sizeof(@aM) = sizeof(paM) = 4

...А при приеме SPI_GETMOUSE и SPI_GETMOUSESPEED работают наоборот только @aM и @Speed ...

Как то туманно все это. [...]
Всё гораздо проще.
Функцией ожидается в третьем параметре:

в случае SPI_GETMOUSE и SPI_SETMOUSE - указатель на массив из трёх Integer'ов;

в случае SPI_GETMOUSESPEED - указатель на переменную типа Integer;

в случае SPI_SETMOUSESPEED - значение типа Integer.

GO!
08.03.2004, 03:06
Всё гораздо проще.
Функцией ожидается в третьем параметре:

в случае SPI_GETMOUSE и SPI_SETMOUSE - указатель на массив из трёх Integer'ов;

в случае SPI_GETMOUSESPEED - указатель на переменную типа Integer;

в случае SPI_SETMOUSESPEED - значение типа Integer.

GO!
08.03.2004, 03:56
Всё гораздо проще.
Функцией ожидается в третьем параметре:

в случае SPI_GETMOUSE и SPI_SETMOUSE - указатель на массив из трёх Integer'ов;

в случае SPI_GETMOUSESPEED - указатель на переменную типа Integer;

в случае SPI_SETMOUSESPEED - значение типа Integer.


Mishel, Ты просто молодец! Ты меня спас! Будешь в Самаре - с меня пиво! (приглашаю в гости!).

А не знаешь ли как временно заблокировать (а потом разблокировать) перемещение реальной мышки(мышек), при

этом, желательно, оставить в действии их кнопки и кнопки клавы тоже?

Mishel
11.03.2004, 14:25
Originally posted by GO!
[...]
А не знаешь ли как временно заблокировать (а потом разблокировать) перемещение реальной мышки(мышек), при

этом, желательно, оставить в действии их кнопки и кнопки клавы тоже?
Никогда не озадачивался такой проблемой.

Чтобы заблокировать именно изменение координат мыши, не затронув её кнопки и клаву, из штатных системных средств можно попробовать два варианта. Но надежды на их эффективность немного, так как оба они работают с экранными координатами мышиного курсора, и в игре это может не сработать.

1. Воспользоваться функцией ClipCursor(lpRect: PRect): BOOL;, передав ей прямоугольник, в котором левый верхний угол соответствует текущим координатам курсора, а правый нижний - на один пиксель правее и ниже. При этом виндузный курсор мыши не сдвинется ни на один пиксель. Чтобы вернуть обычное состояние - нужно передать в эту функцию nil.

2. Написать hook-функцию для мыши (WH_MOUSE), которая будет фильтровать мышиные события до того, как они достигнут приложения. Подробнее о работе с хуками - в MSDN.

Оба эти варианта под вопросом.
Что может действительно помочь - это написание драйвера-фильтра для этой цели (может уже кто-то написал такой).

PS: Спасибо за приглашение на пиво :).

GO!
22.03.2004, 03:18
В ИД2Ш и в ИЛ2ЗС в файле CONF.INI есть такие строчки:

[rts]
;ProcessAffinityMask=1
mouseUse=2
Если заменить последнее значение на mouseUse=1, то в игре уже будет использоваться не собственный курсор мыши, а системный.
При этом начинают правильно работать функции GetCursorPos,SetCursorPos и Mouse_Event с параметром (MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE).
Это полностью устраняет "проскальзывание мыши" и упрощает связь управляющей проги с ИЛом. Вот соответствующий трек (для ИЛ2ЗС v1.0):

GO!
22.03.2004, 03:18
В ИД2Ш и в ИЛ2ЗС в файле CONF.INI есть такие строчки:

[rts]
;ProcessAffinityMask=1
mouseUse=2
Если заменить последнее значение на mouseUse=1, то в игре уже будет использоваться не собственный курсор мыши, а системный.
При этом начинают правильно работать функции GetCursorPos,SetCursorPos и Mouse_Event с параметром (MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE).
Это полностью устраняет "проскальзывание мыши" и упрощает связь управляющей проги с ИЛом. Вот соответствующий трек (для ИЛ2ЗС v1.0):

Pioneerrr
22.03.2004, 03:30
Originally posted by GO!
Вот соответствующий трек (для ИЛ2ЗС v1.0):
Тогда уж лучше в ntrk запиши. В 1.0 щас уже никто не летает.

GO!
22.03.2004, 04:21
Еще один плюс - прога работает теперь и в Win98.
Вот тот же трек, переписанный в NTRK (архив в двух томах):

GO!
22.03.2004, 04:26
Вторая часть трека (нужно этот файл переименовать в He111Zv.r00):