Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.03.2010, 21:13
gena1 gena1 вне форума
Прохожий
 
Регистрация: 22.03.2010
Сообщения: 8
Репутация: 10
По умолчанию Доступ к третьему! джойстику

У меня в компьютере 2 гейм порта, один стандартный, второй на звуковой карте. В каждый из них я могу воткнуть по два джойстика (а точнее по два сопротивления (использую входы АХ и АУ как АЦП для аналоговых датчиков)).
Таким образом у меня получается четыре джойстика в системе (по два аналоговых входа в каждом.)
К двум из них(на стандартном игровом порту i/o 0201) я могу обратиться стандартными средствами:

joystikid1
wypos;
wxpos;
joystikid2
wypos;
wxpos;

А как быть с джойстиками, которые воткнуты во второй игровой порт (на звуковой карте(i/o 9C00-9C07) ???
Ответить с цитированием
  #2  
Старый 23.03.2010, 15:35
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Сейчас с аналога на цифру переходят. Почему и используются, в частности, USB. Может, пойти этим путём? Какая задача-то стоит? Играть в 4 руки или что-то измерять?
Ответить с цитированием
  #3  
Старый 23.03.2010, 20:42
gena1 gena1 вне форума
Прохожий
 
Регистрация: 22.03.2010
Сообщения: 8
Репутация: 10
По умолчанию

С аналога на цифру в датчиках pH и Ec раствора перейти невозможно Потому что не аналогивых датчиков нет (в настоящее время). А делать АЦП отдельно, потом гнать в комп через USB или serial - полный идиотизм, когда есть куча готовых АЦП с достаточной для этих целей точности. (порт джойстика)

По существу есть ответ ?
Ответить с цитированием
  #4  
Старый 23.03.2010, 20:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Работать по портам напрямую.
Ответить с цитированием
  #5  
Старый 23.03.2010, 23:46
gena1 gena1 вне форума
Прохожий
 
Регистрация: 22.03.2010
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Работать по портам напрямую.
Логично, но если бы я знал как это делается, то не задавал бы на форуме. (и даст ли это сделать винда ?)
Можете ли вы накидать хоть пару строчек для обращения с конкретным портом (инициализация и считывание) ?
Ответить с цитированием
  #6  
Старый 24.03.2010, 00:09
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Блин, а гугл что, не работвет?

http://www.efg2.com/Lab/Library/Delphi/IO/PortIO.htm
Ответить с цитированием
  #7  
Старый 24.03.2010, 17:06
gena1 gena1 вне форума
Прохожий
 
Регистрация: 22.03.2010
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Блин, а гугл что, не работвет?

http://www.efg2.com/Lab/Library/Delphi/IO/PortIO.htm

Блин, а реально проверить работу второго порта одновременно с первым ?
Я реально работающих решений не нашел. (только теория, которая на практике не работает)

P.S.: Я бы не задавал здесь вопрос, если бы явный ответ был в поисковиках.
Ответить с цитированием
  #8  
Старый 24.03.2010, 17:16
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если тебе винда говорит, что устройство работает нормально, то будет работать. Дальше вопрос в кривизне рук - как ты это реализуешь.
Ответить с цитированием
  #9  
Старый 25.03.2010, 13:18
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

А через Direct Input не работает?
Ответить с цитированием
  #10  
Старый 25.03.2010, 14:12
gena1 gena1 вне форума
Прохожий
 
Регистрация: 22.03.2010
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от Rat
А через Direct Input не работает?
Вот, спасибо, вы один, кто зрит в корень.
1.Все описания что я нашел по DirectInput основаны на том что джойстик находится на стандартном порту. Где менять его адрес я не нашел.
2. Что самое худшее Во всех примерах описания функции поиска установленных устройств джойстика в системе есть такие строчки:
Если таких устройств больше двух, то их :=2 (Весело )

Я могу ошибаться, поэтому и спрашиваю у более опытных людей.
Ответить с цитированием
  #11  
Старый 26.03.2010, 11:55
gena1 gena1 вне форума
Прохожий
 
Регистрация: 22.03.2010
Сообщения: 8
Репутация: 10
По умолчанию

Все-таки скачал новый Sources DirectXInput и там уже нет такого, что джойстиков максимум только два. Теперь судя по коду их количество вообще не ограничено, но вот и обработки ошибок (отсутствия джоя по определенному id) тоже вообще нет.
Всем спасибо, проблема частична решена, но этого мне достаточно.
Но самая главная вещь осталась - если джойстики (датчики) подключать в любом порядке, то невозможно узнать какой из них какой
Т.е. защиту "от дурака" реально сделать только на USB/Serial/LPT и т.д., т.к. по джойстику никак не передать уникальный ID джойстика-датчика.
Ответить с цитированием
  #12  
Старый 29.03.2010, 08:10
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

А как видны ваши устройства в Windows? Он их вообще определяет? Или Вы просто хотите читать данные с портов? Судя по ответу, как то Windows их всётаки видит...

Есть 2 флага, с помощью которых можно получить список джойстиков:
Константа DIEDFL_ATTACHEDONLY - получить только подключенные устройства ввода.
Константа DIEDFL_ALLDEVICES позволит найти все устройства, для которых установлены соответствующие драйверы, даже если получить данные от них будет невозможно.

Со времен старых компьютеров, действительно была возможность использовать только 2 джойстика. Поэтому и в DirectInput так написано.

Последний раз редактировалось Rat, 29.03.2010 в 08:22.
Ответить с цитированием
  #13  
Старый 29.03.2010, 12:12
gena1 gena1 вне форума
Прохожий
 
Регистрация: 22.03.2010
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от Rat
А как видны ваши устройства в Windows? Он их вообще определяет? Или Вы просто хотите читать данные с портов? Судя по ответу, как то Windows их всётаки видит...

Есть 2 флага, с помощью которых можно получить список джойстиков:
Константа DIEDFL_ATTACHEDONLY - получить только подключенные устройства ввода.
Константа DIEDFL_ALLDEVICES позволит найти все устройства, для которых установлены соответствующие драйверы, даже если получить данные от них будет невозможно.

Со времен старых компьютеров, действительно была возможность использовать только 2 джойстика. Поэтому и в DirectInput так написано.

Винда видит не мои датчики, а как по два джойстика (по две оси+кнопки в каждом) на каждом порту.
И ещё очень нехорошая вещь: при подключении одного и того же датчика к другому порту - есть довольно существенная разница (АЦП в каждом порту своё ). Приходится либо калибровать для каждого порта заново, либо делать строгую привязку датчика к уже откалиброванному порту.
Зато простой АЦП и никаких заморочей с железом
Ответить с цитированием
  #14  
Старый 29.03.2010, 14:51
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

Такова жизнь. Прикручивайте датчики к USB. http://www.joysticks.ru/joysticks/handmade/mjoy.shtml
Ответить с цитированием
  #15  
Старый 30.03.2010, 18:36
gena1 gena1 вне форума
Прохожий
 
Регистрация: 22.03.2010
Сообщения: 8
Репутация: 10
По умолчанию

Пока мне проще у друзей брать древние звуковухи с портом джойстика. А тут такая заморочь Хоть и схемное решение простое
А так ссылка интересная, спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:28.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter