python与joy-con联动:joycon-python的使用 p1

378 阅读2分钟

最近突然想研究python和joycon(switch的手柄)如何连接,上网没有找到中文的文章,所以参考了英文版的,希望能帮助大家(可以和pygame联动)。本人有着一定的英语功底,学习python也有一段时间了,如果有不足之处希望能体谅。掘金发布的文章为首创,转载需声明出处,我会同步到我的域名 谢谢大家的支持。 英文链接 描述:Nintendo Switch Joy-Con的python驱动器

安装

pip install joycon-python hidapi pyglm

使用

快速确认状态

cd joycon-python/
python -m pyjoycon.joycon

或者以模块形式引用

from pyjoycon import JoyCon, get_R_id

joycon_id = get_R_id()
joycon = JoyCon(*joycon_id)

joycon.get_status()

状态值

{
  'battery': {
    'charging': 0,
    'level': 2
  },
  'buttons': {
    'right': {
      'y': 0,
      'x': 0,
      'b': 0,
      'a': 0,
      'sr': 0,
      'sl': 0,
      'r': 0,
      'zr': 0
    },
    'shared': {
      'minus': 0,
      'plus': 0,
      'r-stick': 0,
      'l-stick': 0,
      'home': 0,
      'capture': 0,
      'charging-grip': 0
    },
    'left': {
      'down': 0,
      'up': 0,
      'right': 0,
      'left': 0,
      'sr': 0,
      'sl': 0,
      'l': 0,
      'zl': 0
    }
  },
  'analog-sticks': {
    'left': {
      'horizontal': 0,
      'vertical': 0
    },
    'right': {
      'horizontal': 2170,
      'vertical': 1644
    }
  },
  'accel': {
    'x': 879,
    'y': 1272,
    'z': 549
  },
  'gyro': {
    'x': -354,
    'y': -7,
    'z': 281
  }
}

你需要cython-hidapi以在python中使用蓝牙/HID连接 你也可以使用hid如果cpython-hidapi找不到你的JoyCon

陀螺仪

我们开发了一个专门用来为你追踪陀螺仪的类,并且以简化的形式展现追踪到的状态

from pyjoycon import GyroTrackingJoyCon, get_R_id
import time

joycon_id = get_R_id()
joycon = GyroTrackingJoyCon(*joycon_id)
for i in range(20):
    print("joycon pointer:  ", joycon.pointer)
    print("joycon rotation: ", joycon.rotation)
    print("joycon direction:", joycon.direction)
    print()
    time.sleep(0.05)

按钮事件

我们开发了一个专门用来为你追踪JoyCon按钮的类,并且将变化以事件的形式呈现。一下是一个如何在pygame中使用的例子

from pyjoycon import ButtonEventJoyCon, get_R_id
import pygame

joycon_id = get_R_id()
joycon = ButtonEventJoyCon(*joycon_id)

...

while 1:
    pygame.time.wait(int(1000/60))

    ...

    for event_type, status in joycon.events():
        print(event_type, status)

    ...

    pygame.display.flip()

将类结合在一起

import pyjoycon

class MyJoyCon(
        pyjoycon.GyroTrackingJoyCon,
        pyjoycon.ButtonEventJoyCon,
    ): pass

环境

  • macOS Mojave (10.14.6)
  • Python (3.7.4)
  • hidapi (0.7.99.post21) 官方文档中只有这些了,如果还有其他的文档,我会继续更新的,谢谢