USB контроллер на Микрочипе
По просьбе многих, открываю новый тред отпочковавшийся от
http://www.sukhoi.ru/forum/showthrea...&page=32&pp=25
----------------------------------------------------------------
Я тут практически закончил разработку USB контроллера для самодельщиков. Штука эта будет такая:
Модель 1:
http://www.lbodnar.dsl.pipex.com/joystick/
8 аналоговых входов по 10бит разрешения каждый
12 кнопок либо независимых, либо матрицей 6x6
(вариант 10 аналоговых 10битных входов + 10 кнопок или 5x5 матрица, но Win не видит больше 8 осей на одном джойстике, поэтому он будет виден под Виндами как два джойстика)
Модель 2:
6 квадратурных декодеров, два из которых с оцифровкой до скорости 150кГц (для кодеров типа 2000линий на оборот) с разрешением 20бит
8 цифровых кнопок
Модель 3:
100 кнопок в конфигурации матрицей 10x10.
Общие для всех трех:
Чип с 28 ножками в обычном DIP корпусе (Microchip PIC18F2550)
Все что нужно для подключения: 4MHz кварц, два конденсатора и USB разъем (или сразу кабель)
Питание от USB порта
Full-speed USB (12Mbit), частота обновления всех каналов - 1000 раз в секунду (период 1мсек)
Драйверы не нужны (стандартное устройство в Win/Mac/Linux)
Я не хочу делать плату контроллера потому что цены подкрадываются со спины: плата, кварц, сборка, упаковка, тестирование, etc.
Цена чипа: $15.
Где-то в середине года у меня будет просто ОДНА модель - чип, которых можно переключать в любую конфигурацию из интерфейсной программки под Win/Mac/Linux.
Честно говоря, я cтолько времени потерял с мышиными декодерами... это просто убийство времени, а результат - 30 импульсов на оборот. Самое мерзкое, что они теряют импульсы из-за фиговых сенсоров. Для мыши это не имеет значения, а в кодере после прогона 1000 импулсов в одну сторону обратно возвращаются только, например, 996, поэтому центровка джойстика постоянно дрейфует в процессе.
И тут я открыл глаза! Есть готовые декодеры типа http://www.encoder.com/model755a-shaft.html с разрешением 2000 импульсов на оборот (до 10000 если очень нужно) это уже что-то т.к. 2000 импульсов дают разрешение в 8000 позиций на оборот (считаем-то фронты). Аналоговые потенциометры отдыхают! Купить их можно на eBay за $20-30. Проблема в том, что если человек крутанет этот декодер (или все-таки энкодер?) с приличной скоростью, импулсы посыпятся с такой частотой, что даже хороший контроллер, если он еще хоть чем-то занят просто их не успевает обработать и все работа - насмарку, центровка опять съезжает. В ATMega16 нет USB контроллера, поэтому MJoy использует аппаратную работу с USB - разбирает его по битам и собирает обратно. Это занимает безумное количество времени и делает применение крутых кодеров невозможным. Собственно поэтому я и ввязался в то, что у меня получилось в итоге.
Идея такая - продавать самодельную плату типа MJoy16 людям, которые потом все равно все выходные с паяльниками сидят глупо. Поэтому я убиваю время над мудрым софтом внутри (USB - это не RS232!), а все остальное любой самодельщик может сделать буквально за 15минут и потратить на это $2-3. Вот такая вот идея.
Уффф, пальцы отваливаются!
P.S. Кстати, если все-же хочется сделать квадратурных кодер самому, то лучше раскурочить старый струйных принтер. Там часто используется осевой кодер на ~500 линий/оборот и линейный - такая прозрачная полоска с тоненькими линиями (720dpi?). Сенсоры (обычно Agilent) как бы обхватывают их и выдают уже хороший квадратурных сигнал TTL уровня. У них 4 ножки и им только нужно +5v для питания и все.
Ответ: USB контроллер на Микрочипе
Microchip PIC18F2550 - его прошивать надо?
Ответ: USB контроллер на Микрочипе
Больше конроллеров шустрых и разных! :)
Я не очень понял принцип распространения проекта: полностью открытый? Аля MJoy8? Али прошивку/мс покупать надо?
А на счёт энкодеров не врубился: их можно приспособить? А из принтеров?
IMHO, на тримерах самое то, особенно относительные. Какое ещё применение?
Вложений: 1
Ответ: USB контроллер на Микрочипе
Проект (пока, во всяком случае) не открытый т.к. его будущее не совсем ясно.
Что касается кодеров (как же они все-же по-русски правильно зовуться?!) из принтеров то нет никаких проблем - вот они, эти два из HP 2000 вытащены. Линейный очень удобен тем, кто гражданский штурвал делает. Серые полосы по краю диска и на полоске на самом деле это очень плотно расположенные штрихи. А у блока считывания четыре контакта - земля, +5в и два квадратурных выхода уже TTL уровня. Мечта самодельщика.
Как я уже писал, мне нужны кодеры, т.к. я делаю систему нагрузки штурвала, но люди мне стали писать - "хотим точно так-же, только с аналоговыми входами!" поэтому пришлось в первую очередь заняться этим вариантом...
Ответ: USB контроллер на Микрочипе
И сколько цена сего девайса вырисовывается?
Ответ: USB контроллер на Микрочипе
Цитата:
Сообщение от Orion33
И сколько цена сего девайса вырисовывается?
Пока - не более $15.
Вложений: 2
Ответ: USB контроллер на Микрочипе
Вот для развлечения - два из моих кодеров. Первый - многооборотный абсолютный на 1024 позиций на оборот (кажется, несколько сотен оборотов.) Вывод позиции - последовательный синхронный интерфейс на скорости 125кбит. Каежется, его можно было перепрограммировать на 4096 поз/оборот т.к. физически там плотность штрихов именно такая внутри, просто он загрублен программно.
Второй - обычный квадратурный на 2000 импульсов. Да еще и в водонепронецаемом корпусе %)
Прошу заметить - абсолютный кодер выдает уже готовую вычисленную позицию, так что 1024 они и есть 1024 позиции, больше не выжать. У квадратурного на выходе две последовательности импулсьов, так что после декодирования точность отсчета увеличивается в четыре раза, так что 2000 импульсов превращаются в 8000 позиций.
Надеюсь, не утомил! :expl:
Ответ: USB контроллер на Микрочипе
Цитата:
Сообщение от sergeyk
Больше конроллеров шустрых и разных! :)
Я не очень понял принцип распространения проекта: полностью открытый? Аля MJoy8? Али прошивку/мс покупать надо?
А на счёт энкодеров не врубился: их можно приспособить? А из принтеров?
IMHO, на тримерах самое то, особенно относительные. Какое ещё применение?
Больше-то оно больше, тока было бы лучше. Пока ничем конкретным от МJOY Миндога не отличается. Кроме одного - за прошивку еще даже сам автор не знает сколько запросит (((((
P.S. Матрица из диодов для кнопок - не самое правильное и технологичное решение.
Ответ: USB контроллер на Микрочипе
Цитата:
Сообщение от lbodnar
Пока - не более $15.
Дайте две! %)
Рассуждения на тему "1024 отсчета - это много или мало?"
Может не совсем по теме, но в соседней этот вопрос поднимался.
На какой угол отклоняется среднестатистическая палка? Напольники не в счет! 30 градусов. В сумме туда-сюда получается 60 град. Т.о. на один отсчет приходится примерно 0,06 град. или 0,06*pi/180 = 0,001 радиан.
Если отклонить ручку на такой угол, то наружная точка оси джоя совершит перемещение r*sin(0,001). r - радиус оси джоя. Для малых углов справедливо равенство sin(x) = x, поэтому величина этого перемещения составляет примерно 5*0,001 = 5 мкм (диаметр оси берется порядка 1см - на Еве такие. Если он меньше, то все гораздо хуже %)).
Из чисто логических соображений ясно, что механический люфт должен быть меньше, чтобы почувствовалось это перемещение...
ВНИМАНИЕ, вопрос! В каком серийном джое люфты меньше 5 микрон??? Правильно, таких джоев нет! %) И даже с 50мкм тоже нет. Минимум - 0,1 мм. То есть 128 значений более чем достаточно...
Вывод таков: не верным путем идете, товарищи! Механику надо сначала хорошую иметь!
:thx:
Ответ: USB контроллер на Микрочипе
Цитата:
Сообщение от Orion33
Рассуждения на тему "1024 отсчета - это много или мало?"
Я вообще-то все это дело под штервал делал. На маленькой Цессне ход штурвала - 165мм вперед-назад и 90 градусов в обе стороны. При тихой погоде на посадке обычно крутишь его туда-сюда буквально градусов на пять. В следующий раз на машине будете рулить - посмотрите насколько на трассе руль отклоняется из двух полных оборотов. Так вот, 5 градусов от 180 составляет около 3%. Мне хочется чтобы это были плавные 3 процента а не как на лифте - вверх/вниз. "Плавные" означает состоять они должны из 25-30 шагов. Вот и получаем в итоге 1000 шагов на весь ход штурвала - это минимум для комфорта. Конечно, на штурмовиках можно и с 2 битным джойстиком летать делая ШИМ правой рукой. :D
На полный ход я штурвал вообще никогда не видел чтобы отклонялся, ну кроме, разве что до стопора на себя чтобы перед сваливанем в штопор скорость погасить да еще до стопора влево/вправо на рулежке при сильном боковом ветре.
А штурвал на кодере делается абсолютно элементарно без всякого люфта - сам кодер и является осью вращения и одной из опор штурвала. Там подшипники очень высого класса точности стоят без люфтов и нагрузку он держит киллограм 10-20. Еще один подшипник на ось крена ставится и все. С джойстиком - больше возни, это правда.
Ответ: USB контроллер на Микрочипе
Цитата:
Сообщение от Orion33
Дайте две! %)
Рассуждения на тему "1024 отсчета - это много или мало?"
Может не совсем по теме, но в соседней этот вопрос поднимался.
На какой угол отклоняется среднестатистическая палка? Напольники не в счет! 30 градусов. В сумме туда-сюда получается 60 град. Т.о. на один отсчет приходится примерно 0,06 град. или 0,06*pi/180 = 0,001 радиан.
Если отклонить ручку на такой угол, то наружная точка оси джоя совершит перемещение r*sin(0,001). r - радиус оси джоя. Для малых углов справедливо равенство sin(x) = x, поэтому величина этого перемещения составляет примерно 5*0,001 = 5 мкм (диаметр оси берется порядка 1см - на Еве такие. Если он меньше, то все гораздо хуже %)).
Из чисто логических соображений ясно, что механический люфт должен быть меньше, чтобы почувствовалось это перемещение...
ВНИМАНИЕ, вопрос! В каком серийном джое люфты меньше 5 микрон??? Правильно, таких джоев нет! %) И даже с 50мкм тоже нет. Минимум - 0,1 мм. То есть 128 значений более чем достаточно...
Вывод таков: не верным путем идете, товарищи! Механику надо сначала хорошую иметь!
:thx:
Я вот еще в догонку хочу спросить сколько бит та переменная которая отвечает за положение штурвала в Иле ???
Я могу с 200% уверенностью сказать что в FS эта переменная всего 8 бит и там хоть суй ему 16-ти битную переменную , все равно позициЙ ручки с симе будет 256 !!!... Как дела в ИЛ2 обстоят ? Ктонибудь считал количесво ступеней полного хода виртуальной ручки с кабине ? ПОвторю , что в FS - всего 256 ступенек на полный ход ЛЮБОЙ АНАЛОГОВОЙ ОСИ !.. ПОэтому что на входе сима из ви нды будет диапазон оси 1024 , что 65536 - все автоматом перемасштабируется в диапазон 256 ступенек..
Ответ: USB контроллер на Микрочипе
если честно то я тоже пока не вижу существенной разници от миндоговского , энкодеры . вещь дорогая и не всем доступная , линейность . я уже говорил , на угловых датчиках она почти линейная , какойто процент не в счет . все одно крмвые отклика ставят свои , шумы ?7.. ну незнаю , что еще.. а х.з. ! как я вижу следующий вариант..
вариант для эстетов :) 2 оси на энкодерах (тока на осях джоя) остальные аналоговые , и самое главное ! возможность изменять кривые отклика на ходу !ведь согласитесь что каждый крафт требует сомх крмвых , да и ситуации разные , на посадке надо очень плавно рулить , бой по другому , бомбадировщик - третье , штурмовик . четвертое , гражданский - пятое , пусть это будет незначительное усложнение , или добавить опционально , тоесть потом в основную схему добавляеш чтото и она уже работает . ну и можно еще че добавить . типа индикации режима или номер загруженого профайла откликов
Ответ: USB контроллер на Микрочипе
Цитата:
Сообщение от Ezdok
Я вот еще в догонку хочу спросить сколько бит та переменная которая отвечает за положение штурвала в Иле ???
Я могу с 200% уверенностью сказать что в FS эта переменная всего 8 бит и там хоть суй ему 16-ти битную переменную , все равно позициЙ ручки с симе будет 256 !!!... Как дела в ИЛ2 обстоят ? Ктонибудь считал количесво ступеней полного хода виртуальной ручки с кабине ? ПОвторю , что в FS - всего 256 ступенек на полный ход ЛЮБОЙ АНАЛОГОВОЙ ОСИ !.. ПОэтому что на входе сима из ви нды будет диапазон оси 1024 , что 65536 - все автоматом перемасштабируется в диапазон 256 ступенек..
Я уже говорил и еще раз повторю: ручка - это одна модель, плоскости - другая, а отработка поведения - совсем другая. И у каждой имеет место быть своя дискретность.
Ответ: USB контроллер на Микрочипе
Цитата:
Сообщение от Ezdok
Я вот еще в догонку хочу спросить сколько бит та переменная которая отвечает за положение штурвала в Иле ???
Я могу с 200% уверенностью сказать что в FS эта переменная всего 8 бит и там хоть суй ему 16-ти битную переменную , все равно позициЙ ручки с симе будет 256 !!!
Я - железо делаю и мне не очень интересно какие у софта сейчас ограничения - это не должно стать тормозом прогресса.
Я точно знаю что под Mac OS X у X-Plane, например, как минимум 16-битное разрешение для всех осей. Вообще-то там плавающая точка с двойной точностью используется, поэтому если и есть какое ограничение - так это только ограничение выхода данных с HID устройства (не более 32 бит на одну переменную.) Хотя тот же X-Plane под Виндами почему-то с лету устанавливает пределы переменных в DirectInput в +-100 и т.к. результат используется в целочисленном виде, получаем всего 200 шагов. Я этот кусок кода долго смотрел, но так и не понял, зачем Остин это сделал - наверное он его сто лет назад написал, не зная, что DirectInput все сводит к целым числам, а т.к. это было под Виндами, то ему не особо на глаза попадалось потом. Я этот вопрос у него выясню.
Хотя, кто X-Plane видел, знают, что там любую переменную физики процесса можно вытащить из программы или туда же загнать либо через плагин либо через UDP. Я посылал 16битную позицию штурвала на кодере по сети через UDP и все было просто супер, как маслянное! Поэтому заметил глюк только после того как джойстик напрямую подключил. Так что кто очень хочет может написать программульку на питоне, которая считывает позицию джойстика и напрямую впрыскивает это в X-Plane с любым разрешением (на том же компьютере) - для многих это не составляет труда, нужно только один раз сделать. То же, наверняка, можно и в FS.
Заморочки софта не должны сдерживать хард. И делать хард из расчета на то, что софт все равно кривоватый тоже не гоже (это я про китайский ширпотреб.) Вот так я себе думаю...
А то что я делаю я все равно не брошу, пусть оно никому и не нужно. :thx:
Ответ: USB контроллер на Микрочипе
- железо делаю и мне не очень интересно какие у софта сейчас ограничения - это не должно стать тормозом прогресса.
---
Это понятно , порддерживаю и сам придерживаюсь такой политики. Софт-софтом , а жележо - совсем другая песня...
К чему весь разговор :
Наухо шипну общественности сухого - сейчас разрабатывается целый комплекс управляющего железа для FS .. Точнее для его части ПТ..
Хотелось бы его юзать не только в FS2004
Некоторые из скромных возможностей комплекса:
128 модулей по 8 10-ти битных осей. Общее количество осей - 128*8...
128 модулей кнопок/тумлеров. 1 модуль = 184 тумблера. общее количество кнопок в комплексе 128*184....
128 модулей стрелочных индикаторов. 1 модуль стрелочников = 20 приборов.
Общее количество стрелочных приборов 128*20....
128 модулей 8-ми сегментных индикаторов. 1 модуль = 28 индикаторов по 8 цифр.
общее количество индикаторов 128*28...
128 модулей ламп накаливания, светодиодов , другой нагрузки.. 1 модуль = 30 ламп.. общее количество лам 128*30....
128 модулей энкодеров. 1 модуль = 16 настоящих честных реал-тайм энкодлеров. ( кручу , мгновенно вижу результат с какойбы скоростью бы я не крутил энкодер). Общее количество 128*16....
128 модулей прямого физического бинарного ввода в сим. 1 модуль = 1 32-х битная переменная. (нах нужен - незнаю , но пока в планах) общее количество модулй 128*1......
Помимо помимо всего в планах нормальная конфигурация модулей в системе прямо из сервисного софта , и как всегда минимум контроллеров и обвязки..
Вот чего и спрашиваю про переменные.. Хотелось бы этот комплекс не только под ПТ юзать , а скажем в X-PLANE или IL2 или LockOn.. с FS переменными вроде как понятно.. для этого есть FSUIPC и знающие головы , а вот с другими симами - пока темный лес. Еще интересует подключение внешнего железа к x-plane и протоколы обмена. Слишком обнадеживает x-plane как нормальный сим после выхода анонса FSX.. Покрайней мере в движке иксов гораздо больше фитч чем в FSX.
Вложений: 1
Ответ: USB контроллер на Микрочипе
Отличная идея - через какой интерфейс подключается и сколько будет стоить? Я куплю одну штучку!
Что касается X-Plane все просто - любой параметр из приведенных на экране можно вывести наружу или ввести обратно в программу динамически в любой момент. Конечно, те величины, которые собственно вычисляются внутри смысла вводить нет - для этого сим и создан.
А протокол очень простой - UDP по сети или черз плагин непосредственно на том же компе. Вот например, как я считывю данные из СОМ1 и посылаю данные штурвала через UDP (моя очень старая программка - еще через компор работающая, но уже с 16битным положением штурвала). Если сравнить рисунок и текст, то видно, что что в седьмой позиции (там где стоит галка) - данные джойстика. Их восемь, но я посылаю только два - крен и тангаж. Данные x-plane кушает с плавающей точкой. Точно также и выводит - любую комбинацию из 900 параметров. Например, если поставить галку в позиции 50, то через UDP на указанный адрес сети будет выводится напряжение до восьми бортовых батарей. Ну и далее в том же духе.
Удачи!
Цитата:
# X-Plane 8.15 UDP Client
import win32file
import socket
import struct
import time
import serial
HOST = '' # Symbolic name meaning the local host
PORT = 49000 # Arbitrary non-privileged port
xplaneHost = ('192.168.0.61', 49000)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((HOST, PORT))
ser = serial.Serial('COM1', 2400, timeout=1)
while 1:
byte1 = struct.unpack("1B", ser.read())
byte2 = struct.unpack("1B", ser.read())
byte3 = struct.unpack("1B", ser.read())
byte4 = struct.unpack("1B", ser.read())
pitch = byte1[0]*256+byte2[0]
roll = byte3[0]*256+byte4[0]
pitch = pitch / 32000.0 - 1.0
roll = roll / 32000.0 - 1.0
sendPacket = struct.pack('>5si8f', "DATA\n", 7, pitch, roll, 0, 0, 0, 0, 0, 0)
s.sendto( sendPacket, xplaneHost )
ser.close()
Ответ: USB контроллер на Микрочипе
Э-х-х, блин.
Я лично себе такую систему( в смысле комерческую) представлял полностью независимую от софта, повязаную скажем через CANaerospace или Arinc-429, к которой через враппер данные льет хоть МСФС, хоть ЛокОН. Как у больших все.
Чтобы потом наработки и для реальных бортов переносить/отлаживать можно было, а получается опять пять-десять писюков с почти бытовыми УСБ-глюкалами натыкано, под управлением дельфийно/киликсовских заплаток. :-(
Ответ: USB контроллер на Микрочипе
Цитата:
Сообщение от LazyCamel
Э-х-х, блин.
Я лично себе такую систему( в смысле комерческую) представлял полностью независимую от софта, повязаную скажем через CANaerospace или Arinc-429, к которой через враппер данные льет хоть МСФС, хоть ЛокОН. Как у больших все.
Чтобы потом наработки и для реальных бортов переносить/отлаживать можно было, а получается опять пять-десять писюков с почти бытовыми УСБ-глюкалами натыкано, под управлением дельфийно/киликсовских заплаток. :-(
Без проблем, присылай спецификацию - в CAN или любой другой бас тебе закатаю что хочешь! Только платить тоже как большие будешь! :p
Ответ: USB контроллер на Микрочипе
Цитата:
Сообщение от LazyCamel
Э-х-х, блин.
Я лично себе такую систему( в смысле комерческую) представлял полностью независимую от софта, повязаную скажем через CANaerospace или Arinc-429, к которой через враппер данные льет хоть МСФС, хоть ЛокОН. Как у больших все.
Чтобы потом наработки и для реальных бортов переносить/отлаживать можно было, а получается опять пять-десять писюков с почти бытовыми УСБ-глюкалами натыкано, под управлением дельфийно/киликсовских заплаток. :-(
Для реальных бортов, есть реальные люди. Которые и занимаются серьёзным делом.
В нашем случае, народные умельцы развлекаются как могут.
Ответ: USB контроллер на Микрочипе
Э-х-х, блин.
Я лично себе такую систему( в смысле комерческую) представлял полностью независимую от софта, повязаную скажем через CANaerospace или Arinc-429, к которой через враппер данные льет хоть МСФС, хоть ЛокОН. Как у больших все.
---
Поясни , ты про что ? как понять полностью независимую от софта ??
Поясни что есть враппер ? И как данные со штурвала и ли с какогонить батона попадают в переменную сима ? И кто её туда пихает , если в самом симе нет механизма запихивания переменных извне ? Неесть ли это как раз та заплатка ?
Чтобы потом наработки и для реальных бортов переносить/отлаживать можно было, а получается опять пять-десять писюков с почти бытовыми УСБ-глюкалами натыкано, под управлением дельфийно/киликсовских заплаток. :-(
---
Ну незнаю какие там глюкалки USB имееш в виду.. То что планируем и разрабатываем не совсем бытовая штука. И не совсем USB.. Это достаточно уникальная и наращиваемя почти до бесконечности система управления со своим достатоно уникальным протоколом.
Дело в том что все HUD устройства в том числе Mjoy это всеже привязка к дровам винды. Ну незахотел БГ сделать больше 8-ми осей и 32-х батонов.. Незахоетл - ненадо. Выбрасываем в зад вообще всю идею USB HUD устройств и делаем свою. Под управлением дельфийной заплатки данные с такой системы льются непосредственно в сим минуя всю хрень и все ограничения которыми упихана винда. Я про то и спрашиваю можно ли добратся до переменных LockOn и IL2 как добираемся до переменных FS , чтобы написать 'заплатку' нетолько для FS... Есть железка и юзай её в любом симе. Вот идея .. Да и дело то всего в обслуживающем софте..
Ответ: USB контроллер на Микрочипе
Цитата:
Сообщение от Ezdok
Дело в том что все HUD устройства в том числе Mjoy это всеже привязка к дровам винды. Ну незахотел БГ сделать больше 8-ми осей и 32-х батонов.. Незахоетл - ненадо. Выбрасываем в зад вообще всю идею USB HUD устройств и делаем свою. Под управлением дельфийной заплатки данные с такой системы льются непосредственно в сим минуя всю хрень и все ограничения которыми упихана винда. Я про то и спрашиваю можно ли добратся до переменных LockOn и IL2 как добираемся до переменных FS , чтобы написать 'заплатку' нетолько для FS... Есть железка и юзай её в любом симе. Вот идея .. Да и дело то всего в обслуживающем софте..
Ezdok, вы и вправду там USB делаете? И насколько уже продвинулись?
Могу сказать что у меня джойстик занял 5% времени, остальное - сделать так, чтобы стек польностью все тесты USB2.0 стандарта проходил. А HID работает на любой OC так что я бы не стал его так с разворота отбрасывать. Как только вы HID отключаете так тут то вот как раз и надо писать драйвера низкого урованя дла всех возможных ОС. HID это очень общий стандарт, в него даже медицинская аппаратура и UPS входят, а прелесть в том, что драйверная прослойка между аппаратурой и приложениями уже в любой системе есть. А ограничения DirectX никакого отношения к HID не имеют. Устройство HID, например может иметь 65000 кнопок и столько же 32 битных осей. А написать прослойку между ним и симулятором можно за один вечер, так как драйвера HID в ОС уже есть и DirectX тут не причем.
Вы там вправду всерьез что-то делаете или пока так?.. Я бы с удовольствием купил добротный USB интерфейс сам.
Ответ: USB контроллер на Микрочипе
в него даже медицинская аппаратура и UPS входят, а прелесть в том, что драйверная прослойка между аппаратурой и приложениями уже в любой системе есть.
----
Знаем , слышали , а входит ли драйвер для HomeConstructors - просто передать пакет определенной длины.. И все ! ?????? Ненужны нам дрова для медицинской аппаратуры и прочей не симмерской лабуды. Просто передать пакеты.. А куда их всовывать и как кодировать - сами разберемся..
---
Вобще мы планируем делать на USB2COM.. Разогнать COM до 250кбит и не парится с прослойками.. 250 кбит это мм.. 0.3 мс длительности пакета из 10-ти байт. 10 байт это обслужить ооочень много железок.. Но у нас протокол еще меньщей длины.. Поэтому нет никакого смысла напрягятся и юзать достаточно не покотоемкую систему на USB.... ПОТОК ТО какой ??? Нажал батон - раз в 5 минут , или дергнул рудами - раз в 1 час.. И то проблема реалтайма не в самом комплексе и скорости передачи пакетов , а в реакции самого сима , которая зависит ковсему прочему от рэнда видеокарты и других причин.. Так что передать поток непроблема . А вот с HID надо конечно в дальнейшем разобратся..... Но меня пугают цены на контроллеры с аппаратным USB.. Не с програмным а с аппартным. А поскольку цена одного контроллера с аппаратным USB порядка 15-17$ , отсутствует напроч прошивка контроллеров сторонними самопальными программаторами , затею с USB считаю пока делом каждого..... Мне лично пока ненравятся цены на USB комплектующие.. Дороговато. Тем более что в системе планирются использовать порядка 10-ти контроллеров. Самые скромные расчеты показывают , для полного реал-тайма сгодится скорость COM порта 115к... КУДА БОЛЬШЕ ? Примером тому уже обкатанная система EZ_BUS или FS_BUS .. как угодно.. скорость общения 19.2 через COM .. все работает как часы.. Кроме энкодеров , потому как сам сим очень медленно обрабатывает входящую инфу. У нас планируется повышенная частота опросов энкодеров и десятикратное увеличение скорости предачи пакетов в симулятор. Максимум обсчетов происходит в контроллерах.. Итак FPS нехватает..
---
А HID работает на любой OC так что я бы не стал его так с разворота отбрасывать.
--
Недоверие... в первую очередь к HID.. Задача просто передать данные из железки в комп и обратно.. Через какой путь проходит бедный пакет от железки я могу только догадыватся. Мы используем настоящий человеческий протокол с контрольными суммами , надежный , поверенный на многих железках и повторюсь , тратить время на то чтобы изучать весь USB с HUD вместе взятыми просто нет.. COM проверен до безобразия , весь расковырян вдоль и поперек. Слабые места изучены и изучены нюансы его работы... Контроллеры которые нам больше всего подходят для реализации затеи с аппартным USART стоят 3.5$ и поцене 1-го контроллера со встроенным USB можно будет собрать всю систему целиком.. USB не панацея.. Очень много очень дорогих и очень быстрых приборов до сих пор работают через COM или через его эмуляцию.. Комплекс на COM делаем исключительно для себя и если будем продавать то только полный пакет - тоесть софт+спаянные платы в корпусе.. с USB разъемом :-)).. Дешево не будет.. Однако прекрасно понимаем , что дорого COM железку продать уже не получится. Везде USB...
Ответ: USB контроллер на Микрочипе
По порядку:
Враппер - здесь это программа-транслятор, которая переводит внутренние переменные игры в попугаях, в данные согласно протоколу аппаратуры.
Про HID.
Очень часто недоверие - просто недостаток опыта работы с чем-то.
HID спокойно передает произвольные (сырые) данные, прочитайте стандарт насчет Feature Report и гляньте системные вызовы WinXP HidDGetFeature/HidDSetFeature. В этом режиме даже не надо вторую endpoint заводить. Все будет работать через control endpoint0.
Не совсем понятно какое отношение ограничения DirectX имеет к Hid-протоколу ? Ва м никто не запрещает читать данные с hid-устройств и помимо него.
Рекомендую курить вот эту книжку http://www.natahaus.ru/2005/09/16/in...p__agurov.html до просветления
Про аппаратуру.
Аппаратный контроллер с УСБ 2.0 12Мбит(фулл-спид) стоит от 6 баксов в розницу и самошьется по УСБ. Кодовое слово LPC41xx.
За 10-15 можно купить такой же с поддержкой CAN и Ethernet.
Про протоколы:
Речь же вроде шла про процедурный тренажер для больших, а не про наши поделки для флайт-симщиков? Все-таки найдите в сети стандарт на CANaerospace. Это протокол верхнего уровня. Используется в ЕвроВертушке и А380. Принят НАСА и МО США для новых БПЛА и перспективных самолетов.
Совершенно не обязательно использовать CAN в качестве физшины, можно хоть rs232 c опторазвязкой. Возможно и не придется собственные протоколы изобретать. Там как раз идет передача РЕАЛЬНЫХ полетных данных, как то курс, координаты, высота, вплоть до магнитного склонения, частот радиокомпаса и температуры газов перед и за турбиной.
ЗЫ:
По крайней мере я свой кокпит для Черной Акулы уже на его базе начинаю делать.