使用pywiiuse模块的Wiimote Python

时间:2009-01-27 00:33:05

标签: python wiimote wii

在看到wiimotes的能力和可行性后,我真的想在我的“编程简介”决赛中使用它。每个人都必须制作一个python程序并将其呈现给班级。

我想用pygame制作一个包含wiimote的游戏。我发现pywiiuse是使用c类型的wiiuse库的一个非常基本的包装器。

我无法获得超越LED和振动的任何东西。按钮,红外,动作感应,什么都没有。我尝试过不同版本的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次,直到追溯。我不知道此时该做什么,过去两天我一直在努力让它发挥作用。

谢谢!

8 个答案:

答案 0 :(得分:3)

我更新了pywiiuse包装器。它似乎没有用于最新版本的wiiuse(在这个答案时为0.12),因为它的大部分内容在当前迭代中都不起作用。

我已经在这里发布了包和一些示例脚本: http://code.google.com/p/pywiiuse/downloads/list

你也应该能够做到

easy_install wiiuse

因为我也在pypi上托管过它。

答案 1 :(得分:1)

现在正在为Wiimote搜索一套Python包装器近两天,这是我对最新技术的总结:

pywiimote(来自谷歌):大约一半完成,当我下载最新版本(r52)时没有编译,有一些不错的想法,但需要大量投资才能开始工作。

pywiiuse(上图):理论上很好,

cwiid:没有积极开发,仅适用于Linux(无法在Cygwin下编译)。

总之 - 现在没有任何东西(2009年3月24日)。将继续调查...

- 布赖恩

答案 2 :(得分:1)

我知道你的课程已经结束了,但对于其他任何人来说,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])

答案 3 :(得分:1)

对于那些仍在寻找的人,我发现并记录了一种使用浅蓝色库与Wii Remote配合使用的简单方法。我在OS X上测试了它,但它应该可以跨平台工作(即在Linux上)

这是我的写作:http://smus.com/prototyping-wii-remote-python/

答案 4 :(得分:1)

我一直在使用wiimotelib for .NET,它非常稳定。并且还包含像nunchcuk和其他的wii远程扩展。

答案 5 :(得分:0)

如果您找到的图书馆失败了,Google代码上的

pywiimote可能会有所帮助...如果您有时间,请尝试一下。

但这似乎是一个非常新的产品,可能不会更好。

祝你好运!

答案 6 :(得分:0)

我建议你看一下Uwe Schmidt的WiimoteWhiteboard Java版本,我会冒险忽略这一点

http://www.uweschmidt.org/wiimote-whiteboard

它使用WiiRemoteJ库进行Java。

我过去曾尝试使用Python实现失败,因为它们不完整或不起作用。也许通过检查Schmidt在Java中的工作版本,您可以确定Python中缺少的内容。

祝你上课好运。

答案 7 :(得分:0)

将您的python版本更改为2.5.2我相信它现在可以正常工作