Ответ 1
PyGame может читать джойстики, что и показывает контроллер X360, как на ПК.
Я пишу программу, которая должна принимать данные от контроллера XBox 360. Затем вход будет отправлен по беспроводной связи на вертолет RC, который я создаю.
До сих пор я узнал, что это можно сделать, используя либо библиотеку XInput из DirectX, либо структуру ввода в XNA.
Мне интересно, есть ли другие доступные опции. Объем моей программы довольно мал, и установка большой игровой библиотеки, такой как DirectX или XNA, кажется чрезмерной. Кроме того, я хотел бы, чтобы программа была кросс-платформенной, а не специфичной для Microsoft.
Есть ли простой легкий способ я могу захватить вход контроллера с чем-то вроде Python?
Отредактируйте, чтобы ответить на некоторые комментарии:
Котел будет иметь 6 полных пропеллеров, расположенных в 3 коаксиальных парах. В принципе, он будет очень похож на этот, только он будет стоить около $1000, а не $15,000. Он будет использовать Arduino для обработки на борту, а Zigbee для беспроводного управления.
Контроллер 360 был выбран, потому что он хорошо разработан. Он очень эргономичен и имеет все необходимые управляющие входы. Для тех, кто знаком с элементами управления вертолетом, левый джойстик будет управлять коллективным, правый джойстик с управлением шагом и рулоном, а аналоговые триггеры будут управлять рысканием. Аналоговые триггеры - большая функция для контроллера 360. PS и большинство других не имеют их.
У меня есть веб-страница для проекта, но она по-прежнему довольно редкая. Я планирую документировать весь дизайн, хотя, в конце концов, это будет интересно.
http://tricopter.googlecode.com
На стороне примечания, убьет ли он Google функцию блога для проектов googlecode?
Я хотел бы, чтобы программа ввода контроллера 360 запускалась как в Linux, так и в Windows, если это было возможно. В конце концов, хотя, я хотел бы подключить контроллер непосредственно к встроенной плате микроконтроллера (например, Arduino), так что мне не нужно проходить через компьютер, но это не высокий приоритет на данный момент.
PyGame может читать джойстики, что и показывает контроллер X360, как на ПК.
Это не так уж сложно. Как упоминалось ранее, вы можете использовать библиотеки SDL для чтения статуса контроллера xbox, а затем вы можете делать все, что вам нужно.
Существует учебник SDL: http://sdl.beuc.net/sdl.wiki/Handling_Joysticks, который довольно полезен.
Обратите внимание, что контроллер Xbox имеет следующее:
Предстоящий SDL v1.3 также будет поддерживать силовую обратную связь (aka. haptic).
Я предполагаю, что, поскольку этой теме несколько лет, вы уже что-то сделали, поэтому этот пост предназначен, прежде всего, для информирования будущих посетителей.
Ну, если вы действительно не хотите добавлять зависимость от DirectX, вы можете использовать старый API-интерфейс Joystick для Windows - Мультимедиа Windows → Справочник по Joystick в платформе SDK.
Стандартная бесплатная игровая библиотека с поперечной платформой - это простой DirectMedia Layer, первоначально написанный для переноса игр Windows в системы Unix (Linux). Это очень простой, легкий API, который имеет тенденцию поддерживать минимальный набор функций в каждой системе и имеет привязки для большинства основных языков. У него очень простой джойстик и поддержка геймпада (например, нет обратной связи), но этого может быть достаточно для ваших нужд.
Возможно, библиотека Mono.Xna добавила поддержку GamePad, которая обеспечила бы кросс-платформенную функциональность, которую вы искали:
http://code.google.com/p/monoxna/
Что касается опасений относительно того, что библиотека слишком тяжелая, конечно, для этого варианта это может быть правдой... однако, это может открыть возможности сделать некоторую приятную визуализацию в будущем.
Отказ от ответственности: я не знаком со статусом проекта mono xna, поэтому он, возможно, еще не добавил эту функцию. Но все же, это вариант: -)