前言
在python做机器人控制时,需要加入xbox操控功能,为了直观显示手柄摇杆与变量之间的对应关系,实时调试手柄输入,开发了python手柄测试程序(本文基于xbox)。
Xbox 手柄测试程序说明
测试程序使用 pygame
库创建了一个简单的用户界面,用于实时显示 Xbox 手柄各个轴的值。程序的主要功能包括:
-
手柄检测:在启动时,程序会检查是否连接了 Xbox 手柄。如果未检测到手柄,程序将提示用户并退出。
-
实时显示:程序创建了一个窗口,窗口大小为 600x400 像素。在窗口中,程序会不断更新并显示手柄每个轴的当前值,确保可以清晰地看到摇杆的变化。
-
轴值更新:每个轴的值会实时更新,并显示在屏幕上,值的格式为小数点后两位。
-
退出功能:可以通过点击窗口的关闭按钮(
X
)来退出程序。
使用说明
- 运行程序后,确保 Xbox 手柄已连接。
- 在程序窗口中,移动手柄的摇杆,观察各轴值的变化。
- 若需退出程序,点击窗口右上角的关闭按钮。
完整代码
import pygame
import sys
# 初始化 pygame
pygame.init()
# 设置手柄
if pygame.joystick.get_count() > 0:
joystick = pygame.joystick.Joystick(0)
joystick.init()
print(f"检测到手柄: {joystick.get_name()}")
else:
print("未检测到手柄")
pygame.quit()
sys.exit()
# 设置窗口
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Xbox 手柄测试")
# 字体设置
font = pygame.font.Font(None, 36)
# 主循环
running = True
while running:
screen.fill((30, 30, 30)) # 设置背景颜色
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 获取轴的数量
num_axes = joystick.get_numaxes()
# 打印手柄所有轴的值,并显示在屏幕上
for i in range(num_axes):
axis_value = joystick.get_axis(i)
axis_text = font.render(f"轴 {i}: {axis_value:.2f}", True, (255, 255, 255))
screen.blit(axis_text, (50, 50 + i * 40)) # 显示在屏幕上的位置
# 刷新屏幕
pygame.display.flip()
# 设置延迟,防止刷新过快
pygame.time.wait(100)
pygame.quit()