Javascript must be enabled in your browser to use this page.
Please enable Javascript under your Tools menu in your browser.
Once javascript is enabled Click here to go back to �нтеллектуальная Кобринщина

Connect a Gamepad or Other Device to Mathematica - Wolfram Mathematica

Подключение геймпада или другого устройства к Mathematica

Помимо использования клавиатуры или мыши, Вы можете управлять Mathematica при помощи джойстика, геймпада, 3D мыши или любого другого устройства, которое отвечает спецификациям промышленного стандарта человеко-машинного интерфейса.

Для подключения нового устройства к Mathematica, убедитесь, что оно подсоединено и включено. Если устройство поставляется со специальными драйверами, убедитесь, что они уст ановлены.

Любое устройство, которое отвечает спецификациям промышленного стандарта человеко-машинного интерфейса (HID) будет сразу же доступно для применения с Mathematica.

Все устройства, обнаруженные Mathematica указываются в списке, выводимом при выполнении функции ConnectAGamepadOrOtherDeviceToMathematicaRU_1.gif. В приведенном примере, в дополнение к геймпаду Logitech Dual Action подключенному через USB порт, указаны еще несколько встроенных устройств:

In[3]:=

ConnectAGamepadOrOtherDeviceToMathematicaRU_2.gif

Out[3]=

ConnectAGamepadOrOtherDeviceToMathematicaRU_3.gif

Как только Ваше устройство обнаружено, Mathematica готова его использовать.

    

По умолчанию, геймпады и другие контроллеры могут использоваться такими функциями Mathematica как Manipulate и Graphics3D. Например, Вы можете использовать подключенный геймпад для воздействия на элементы управления интерактивных моделей, создаваемых функцией Manipulate, или вращений 3D графики без дополнительных настроек. Для получения большей информации, смотри Руководство How to: Use Built-in Gamepad Support.

На более низком уровне, Mathematica позволяет использовать, при помощи функции ConnectAGamepadOrOtherDeviceToMathematicaRU_4.gif, любую информацию, выводимую на экран функцией  ConnectAGamepadOrOtherDeviceToMathematicaRU_5.gif.

В данном случае, состояние каждого органа управления геймпада выведено в виде списка правил:

In[6]:=

ConnectAGamepadOrOtherDeviceToMathematicaRU_6.gif

Out[6]=

ConnectAGamepadOrOtherDeviceToMathematicaRU_7.gif

Наименования органов управления в списке, такие как Hatswitch X Axis, берутся напрямую из информации низкого уровня, получаемой от устройства.

Устройства различных производителей зачастую используют разные имена для органов управления. Mathematica пытается стандартизировать эти имена, применяя названия X, Y, X2, Y2 и т. д. для одномерных аналоговых органов управления, и B1, B2 и т.д. для кнопок.

Чтобы увидеть, как Mathematica присваивает свои стандартные названия именам аппаратных узлов, воспользуемся параметром Mapping в дополнение к названию контроллера в функции ControllerState. Функция Short использована здесь для отображения лишь нескольких строк результата такого присвоения:

In[19]:=

ConnectAGamepadOrOtherDeviceToMathematicaRU_8.gif

Out[19]//Short=

ConnectAGamepadOrOtherDeviceToMathematicaRU_9.gif

В данном случае, стандартные названия X, Y и Z перечислены в списке для извлечения текущих значений состояния первых трех одномерных аналоговых осей:

In[7]:=

ConnectAGamepadOrOtherDeviceToMathematicaRU_10.gif

Out[7]=

ConnectAGamepadOrOtherDeviceToMathematicaRU_11.gif

Если Вы "обернете" этот командный код в функцию Dynamic, значения на выходе будут постоянно обновляться. Это позволит Вам видеть состояние каждой оси в реальном времени.

Для получения более подробной информации по использованию стандартных названий в функциях типа Manipulate, смотри Руководство How to: Use Built-in Gamepad Support.

    

Если функция ControllerState не получает немедленного отклика от Вашего контроллера, возможно Вам потребуется настроить опцию ControllerPath. Подобно тому, как Mathematica просматривает директории функцией $Path при поиске файлов, опция ControllerState ищет доступные контроллеры на базе настроек опции ControllerPath.

Настройкой по умолчанию для опции ControllerPath является использование геймпада, если таковой присутствует:

In[9]:=

ConnectAGamepadOrOtherDeviceToMathematicaRU_12.gif

Out[9]=

ConnectAGamepadOrOtherDeviceToMathematicaRU_13.gif

По этой причине, Вы можете опустить имя Logitech Dual Action в качестве первого аргумента функции ControllerState, получив тот же самый результат:

In[18]:=

ConnectAGamepadOrOtherDeviceToMathematicaRU_14.gif

Out[18]=

ConnectAGamepadOrOtherDeviceToMathematicaRU_15.gif

In[19]:=

ConnectAGamepadOrOtherDeviceToMathematicaRU_16.gif

Out[19]=

ConnectAGamepadOrOtherDeviceToMathematicaRU_17.gif

В отсутствие подсоединенного геймпада, функция ControllerState, по умолчанию, вернется к поиску других устройств: джойстика, 3D мыши и, далее, других устройств управления, включая инфракрасные устройства и аналогово-цифровые преобразователи.

Изменяя порядок устройств, объявленный в ControllerPath, Вы можете изменить порядок их просмотра функцией ControllerState.

В данном случае,  в опции ControllerPath задано предпочтение для датчика движения, который встроен в некоторые переносные компьютеры:

In[22]:=

ConnectAGamepadOrOtherDeviceToMathematicaRU_18.gif

Out[22]=

ConnectAGamepadOrOtherDeviceToMathematicaRU_19.gif