Цифры в колонке RAW, чем они больше, тем точнее обрабатывается ось. Можешь убедится что по точности обработки главных осей MSSWFF2 не уступает Cougar'у.
Цифры в колонке RAW, чем они больше, тем точнее обрабатывается ось. Можешь убедится что по точности обработки главных осей MSSWFF2 не уступает Cougar'у.
Виртуальное Конструкторское Бюро
http://vkb.sukhoi.ru/
TMAB2
только нужно учитывать, что RAW - это то, что сообщает контреллер драйверу, а не разрядность АЦП, которая может отличаться как в меньшую сторону (внутренняя цифровая обработка с более высокой точностью) так и в большую, когда ставится АЦП большой точности, но 1-2 последних разряда игнорируются контроллером для подавления шумов.
так что напрямую говорить что RAW 4096 хуже, чем RAW 65535, и лучше чем RAW 127 нельзя. нужно иметь данные о разрядности АЦП.
низкий RAW говорит лишь о максимальной логической разрядности, т.е. сколько различных значений оси может получить драйвер.
А никого не удивляет разница в первой колонке (joyGetPosEX)? Все джои, что я подключал, показывают в ней 64К позиций. У некоторых (тестеров, а не джоев) в ней 32К. Может, это из-за того, что я юзаю USB2.0, а они USB1 ? Или вообще геймпорт или COM...
кстати, вот отклик от АВ2ффб, его ещё не было
Cadavera vera innumera...
А действительно, почему так?
и кстати, объясни человеческим языком, шо все таки эти цифирки означают, а то не все понятно
Виртуальное Конструкторское Бюро
http://vkb.sukhoi.ru/
A game controller driver usually*1* reports axis position information
as integer values between 0 and 655 to DirectInput. DirectInput
linearly scales these values up to 0 to 65535. If calibration values
are present for an axis (checkbox is checked), DirectInput assumes
that the range of the values received from the driver are 'Min' to
'Max'. Additionally it expects the center of a given axis to be at
driver value 'Cen'. The driver doesn't know anything about that. It
is just reporting 0 to 655 all the time. Any value reported that is
lower than 'Min' is treated as 'Min'. Any value reported higher than
'Max' is treated as 'Max'...
То есть джойстик (любой!) выдаёт максимальное значение 655, а DirectInput уже его прямо пропорционально увеличивает до 64К. Разумеется, разные джои выдают значение (то, что от 0 до 655) с разной точностью.
Короче, по-любому максимальное значение при отсутствии дополнительных калибровок должно быть 64К. У кого не так - ищите почему
Cadavera vera innumera...
Я думаю, что это неверно. Как тогда объяснить значения функции joyGetPosEx() ? Справочника по WinAPI у меня под рукой нет, но насколько я понимаю, имено она "читает" истинные данные с джойстика, которые он выдает на порт.То есть джойстик (любой!) выдаёт максимальное значение 655, а DirectInput уже его прямо пропорционально увеличивает до 64К.
Общая схема такая: аналоговая часть джойстика - внутренний контроллер (для usb это АЦП и интерфейс, в случае геймпорта контроллера фактически нет) - порт компьютера - драйвер (он же совместно с портом - АЦП и контроллер для геймпорта) - DirectInput - прикладная программа. Тогда данные с порта (фактически выход внутренего контроллера джойстика) обрабатываются драйвером устройства (что и написано в английском тексте), он приводит их в диапазон 0..655и именно этот диапазон и обрабатывается DirectInput и масштабируется им в 0..65535 (зачем - не знаю. Если на входе диапазон значений ВСЕГДА 0..655, нафига его искусственно расширять на два порядка? Задел на будущее?).The driver doesn't know anything about that. It is just reporting 0 to 655 all the time.
Короче - джойстик на порт выдает то, что может (зависит от разрядности его АЦП и схемотехники обработки сигнала), а диапазон 0..655 появляется не на выходе джойстика, а после его драйвера. Разница же в дискретности оцифровки аналоговых значений - одно дело 127 отсчетов растянуть в диапазон 0..655 и совсем другое - 4096 (12 битовая точность).
Видимо, наиболее правильным будет выложить полный текст описания DXTweak. Я вот, признаться, так и не понял какое практическое применение имеет эта утилита В том смысле, что не понятно, зачем нужна возможность "зарезать" оси...
Cadavera vera innumera...
Тестяю свой микрософтовский прецижн 2. Не надо большая точность АЦП. DXтвик показывает совсем голимые цифры в RAW - 127.
Я прогу написал, считывает показания осей с джоя. Минимальное значение 0, максимальное 65535. Значения осей идут с шагом 255. В excel расчеты сделал. При перемещении с центра в любую сторону получается 128 шагов, при угле отклонения в 30 градусов от центра в сторону(у настольных джоев угол обычно еще меньше). Получается на 1 шаг отклонение в 0.23 градуса.
При длине РУСа в 50мм чтоб перейти к следующему шагу необходимо передвинуть ручку на 0.2 мм. При длине в 10 см - 0.4 мм, при длине 30см (это длина моего напольного РУСа) - 1.2 мм!!! Т.е. чтоб джой среагировал на следующее перемещение, необходимо 30см палку отклонить на 1.2 мм. Это надо хирургом быть каким-то, тоб так точно палкой двигать.
Так что точность достаточная! А то что Кугару офигенно точные АЦП сделали, так это тока маркетинговый ход, реально такая точность не используется, ни датчики, ни механика РУСа такую точность не дадут.
Поправте, если не прав
Формулы прилагаются.
Один мой знакомый задал ещё более интересный вопрос: точность джоя, это, конечно хорошо. А вот умеет ли ИГРА обрабатывать ВСЕ значения? :confused: В смысле, сколько положений у стабилизаторов и элеронов самолёта в "Ил-2". То, что этих положений конечное число - сомнений не вызывает, но вот каково оно, это число? Если их 655, то нафига козе баян, в смысле 64К значений джоя?
Думаем...
Cadavera vera innumera...
Всё правильно! Я тоже считаю что главное чтобы механика была точная, плавная ....... и датчик точно считывал шаги - если это выполнено то такой точности должно хватить ВСЕМ, IMO!
HCRM / HOTAS Cougar Russian Modification
HCUIV / HOTAS Cougar "UIV" edition
HCFFB2 / HOTAS Cougar + MS FFB2
а еще чтоб логика по хитрому работала и могла качественно исключать всяческие шумы в датчиках
Да уж.
К вопросу о точности.
Кто на вскидку в ДиректХ писать могет, даю идею.
Программа, выбираешь произвольный контроллер и произвольную ось.
Поллишь ее с достаточно большой интенсивнось. 100 мс достаточно.
Массив на 65536 целый чисел.
Элемент массива инкрементируется при нахождении джойстика на оси, индекс численно равен значению.
Выводим в файл.
Запускаем.
Джойстик плавно водим туда сюда по нужной оси.
через 1-2 мин - прекращаем работу программы.
Анализируем состояния массива.
Будет ясно видна точность, потому что если она масштабируется, максимумы будет находиться только в фиксированных местах. Отсюда точность легко и наглядно вычисляется.
Если кто-то в Грузии думал что русские простят 20.09.07 - он был категорически неправ !!!
Читая мануаль для DXTweak:
4.
Move your game controller to see the values it generates and how
DirectInput/joyGetPos() modifies them.
А движения по разным осям моего кугара никак не проявляются в этом твикере.
Зато для кугара я нашел вот это (по умолчанию стоит 1024)
Соотвественно в FJWA
James "Nutty" Hallows пишет в описании Foxy:
JoystickResolution = 2999
The values from an axis are reported to Windows in the range 0 to 65535. This doesn't mean of course that an axis can produce this range in steps of one - that would be one hell of a resolution and usually they produce 256 discrete values (ie. 0 to 255), so that's 8 bit resolution. This is true of all the Cougar axes except for the joystick axes X and Y, which are capable of a much higher resolution. Initially the Cougar is being released so that it shows about 3000 discrete X and Y values (0 to 3000) but that is below what they're theoretically capable of reporting, and with firmware upgrades, you can expect your already precise Cougar to become even more precise! Now Foxy's joystick analyser displays the 0 to 65535 values for the main 6 axes on the Status bar. However, there's an option in the Display options
menu to view the values at their resolution. Deselecting this menu item then will show the Joystick X and Y axes from 0 to 2999, and the other axes 0 to 255. If you change the JoystickResolution = value in your Foxy.ini (you'll need to add it or use Unsupported.exe to change it) then you can change the range to match any information we provide later for the actual resolution being measured. Values permitted are either 1023 to 32767, and are 1 less than the resolution.
Я эту тему создал, когда мне было 14 лет. Сейчас заканчиваю 5 курс института по специальности "Электронные приборы и устройства". Смешно читать собственные слова про "оптические резисторы" в джойстике.
Эх... Создал ты тему с несоответствующим содержанию названием и поднял ее так же Но ведь блин через сколько же лет
Трехмерка по одному проекту: www.youtube.com/watch?v=Xub-3TA7MIE&feature=plcp
Приятно))