2016-08-30 64 views
0

我想制作一个使用任天堂Wii遥控器进行控制的程序。它通过蓝牙连接到我的电脑。我怎样才能让python识别这个控制器并在程序中使用它? 听到只有python的解决方案和pygame的解决方案会很有趣。用python3连接wii remote

+1

你有什么尝试?如果你还没有尝试任何东西,那么我会建议从[pybluez]开始(https://github.com/karulis/pybluez)。 –

+0

没有任何外部模块吗? –

+0

是的,有一种方法,但我相信它远远超出了单个计算器问题的范围。 [pybluetooth](https://github.com/pebble/pybluetooth)声称拥有蓝牙的纯Python实现,所以如果这真的是你有兴趣编写的东西,你可以查看源代码。否则坚持一个外部库。 pybluez可能是这里最好的选择。 –

回答

0

假设你正在使用windows,我首先使用Julian Loehr's wiimote gamepad驱动程序将它识别为游戏手柄。然后我使用pygame的游戏杆库来检测它,并使用轴和按钮检查。

此代码应帮助您开始:

import pygame 
from time import sleep 

pygame.init() 

try: 
    j=pygame.joystick.Joystick(0) 
except pygame.error: # This bit doesn't seem to work properly. 
    print("Joystick not connected.") 

j.init() 

while 1: 
    pygame.event.pump() 

    if round(j.get_axis(0))== -1: #Up key when holding it vertically 
     #do something 
    elif round(j.get_axis(0))== 1: #Down key 
     #something else 
    elif round(j.get_axis(1))== -1: #Right 
     #something 
    elif round(j.get_axis(1))== 1: #Left 
     #something 

    if j.get_button(0): # Button 1 
     #something 
    elif j.get_button(1): #2 
     #something 
    elif j.get_button(2): #A 
     #something 
    elif j.get_button(3): #B 
     #something 
    elif j.get_button(4): #Plus 
     #something 
    elif j.get_button(5): #Minus 
     #something 
    elif j.get_button(6): #Home 
     #something 
    else: 
     pass 

如果你使用Linux,你可以,如果你正在使用python2看看cwiid。如果您使用python 3,则可以使用终端上的bluetoothctl进行连接,然后使用evdev读取密钥和加速计事件。