Python с Wiimote с использованием модуля pywiiuse
После ознакомления с возможностями и способностями к wiimotes я действительно хочу использовать его в своем финале "Введение в программирование". Каждый должен сделать программу на Python и представить ее классу.
Я хочу сделать игру с Pygame, включающей wiimote. Я нашел pywiiuse, который является очень простой оболочкой для библиотеки wiiuse, использующей типы c.
Я не могу получить ничего, кроме светодиодов и вибрации, чтобы работать. Кнопки, ИК, датчик движения, ничего. Я пробовал разные версии wiiuse, pywiiuse, даже python. Я не могу даже привести примеры, которые пришли с ним. Вот код, который я сделал как простой тест. Я скопировал некоторые примеры кода C++.
from pywiiuse import *
from time import sleep
#Init
wiimotes = wiiuse_init()
#Find and start the wiimote
found = wiiuse_find(wiimotes,1,5)
#Make the variable wiimote to the first wiimote init() found
wiimote = wiimotes.contents
#Set Leds
wiiuse_set_leds(wiimote,WIIMOTE_LED_1)
#Rumble for 1 second
wiiuse_rumble(wiimote,1)
sleep(1)
wiiuse_rumble(wiimote,0)
#Turn motion sensing on(supposedly)
wiiuse_motion_sensing(wiimote,1)
while 1:
#Poll the wiimotes to get the status like pitch or roll
if(wiiuse_poll(wiimote,1)):
print 'EVENT'
И вот вывод, когда я запускаю его.
wiiuse version 0.9
wiiuse api version 8
[INFO] Found wiimote [assigned wiimote id 1].
EVENT
EVENT
Traceback (most recent call last):
File "C:\Documents and Settings\Nick\Desktop\wiimotetext.py", line 26, in <mod
ule>
if(wiiuse_poll(wiimote,1)):
WindowsError: exception: access violation reading 0x00000004
Кажется, что каждый раз, когда я запускаю его, он печатает СОБЫТИЕ 2-5 раз, пока не проследит след. Я понятия не имею, что делать на данный момент, я пытался в течение последних двух дней, чтобы заставить его работать.
Спасибо!
9 ответов
Я обновил оболочку pywiiuse. Похоже, это не было сделано для последней версии wiiuse (0.12 на момент этого ответа), так как большая часть этого просто не будет работать в текущей итерации.
У меня есть пакет и несколько примеров скриптов, размещенных здесь: http://code.google.com/p/pywiiuse/downloads/list
Вы также должны просто быть в состоянии сделать
easy_install wiiuse
Так как я также принимал это на pypi.
В течение почти двух дней я искал набор оберток Python для Wiimote, вот мое резюме состояния:
pywiimote (от Google): примерно наполовину закончен, не скомпилирован, когда я скачал последнюю версию (r52), есть некоторые интересные идеи, но для работы потребуются значительные инвестиции.
Pywiiuse (выше): хорошо в теории,
cwiid: не активно разрабатывается, только для Linux (не может компилироваться под Cygwin).
Подводя итог, можно сказать, что сейчас ничего нет с полки (24.03.2009). Будет продолжать съемки...
--Bryan
Я знаю, что ваш класс уже закончен, но для всех, кто ищет, cwiid действительно хорош. Установлен в Ubuntu примерно так:
apt-get install libcwiimote-dev python-cwiid
Или получите последнюю информацию от github.
Чтение датчиков wiimote (например, шаг с акселерометра) очень просто:
import cwiid
print 'place wiimote in discoverable mode (press 1 and 2)...'
wiimote = cwiid.Wiimote()
wiimote.rpt_mode = cwiid.RPT_ACC
#wiimote.state dict now has an acc key with a three-element tuple
print 'pitch: %d' % (wiimote.state['acc'][cwiid.Y])
Для тех, кто все еще ищет, я нашел и задокументировал простой простой способ сопряжения с Wii Remote с python, используя библиотеку lightblue. Я тестировал его на OS X, но он должен работать кроссплатформенно (т.е. на Linux)
Вот моя статья: http://smus.com/prototyping-wii-remote-python/
Я работал с wiimotelib для.NET, и он довольно стабильный. И содержит также удаленные расширения Wii, такие как Nunchcuk и другие.
Я рискну упустить момент, предложив вам взглянуть на Java-версию WiimoteWhiteboard Уве Шмидта
http://www.uweschmidt.org/wiimote-whiteboard
Он использует библиотеку WiiRemoteJ для Java.
В прошлом я безуспешно пытался использовать реализации Python, потому что они были неполными или не функциональными. Возможно, изучив рабочую версию Шмидта на Java, вы сможете определить, чего не хватает в Python.
Удачи в вашем классе.
pywiimote в Google Code может быть полезен, если найденная вами библиотека не работает на вас... попробуйте, если у вас есть время.
Это кажется довольно новым предложением, и может быть не лучше.
Удачи!
Я обновил pywiiuse для Python 3: https://github.com/arpruss/pywiiuse
В Windows вам нужно поместить libwiiuse.dll в каталог wiiuse pywiiuse. Для удобства здесь 64-битная сборка: https://github.com/arpruss/wiiuse/releases/ .
Измените свою версию Python на 2.5.2 Я верю, что она будет работать сейчас