You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Windows系统中用Python控制Dualshock4的LED灯条

在Windows下用Python控制Dualshock4灯条

pygame的joystick模块仅支持读取控制器输入,无法直接控制DS4的灯条。要实现这个功能,你需要直接通过HID接口向DS4发送控制指令,以下是具体方案:

方案:使用pywinusb操作HID设备

DS4本质是HID设备,Windows下可以通过HID协议发送输出报告来修改灯条颜色。我们用pywinusb库来实现:

步骤1:安装依赖

pip install pywinusb

步骤2:编写控制脚本

import pywinusb.hid as hid

# DS4蓝牙设备的VID和PID(有线连接PID为0x05C4)
DS4_VID = 0x054C
DS4_BT_PID = 0x09CC

def get_ds4_device():
    # 查找并返回第一个匹配的DS4设备
    devices = hid.find_hid_devices(vendor_id=DS4_VID, product_id=DS4_BT_PID)
    return devices[0] if devices else None

def set_light_color(device, r, g, b):
    if not device:
        print("未找到可用的DS4设备")
        return
    # 构造DS4灯条控制的HID输出报告
    # 报告ID为0x05,命令字节为0x07,后续为RGB值,剩余字节填充0
    report = [0x05, 0x07, r, g, b] + [0x00] * 27
    try:
        device.send_output_report(report)
        print(f"灯条已设置为RGB({r}, {g}, {b})")
    except Exception as e:
        print(f"设置失败:{str(e)}")

if __name__ == "__main__":
    ds4 = get_ds4_device()
    if ds4:
        ds4.open()
        # 示例:设置红色
        set_light_color(ds4, 255, 0, 0)
        # 可自行替换为其他RGB值,比如绿色(0,255,0)、蓝色(0,0,255)
        input("按回车退出...")
        ds4.close()
    else:
        print("未找到DS4蓝牙设备,请检查连接")

注意事项

  • 管理员权限:Windows下访问HID设备需要管理员权限,右键以管理员身份运行脚本。
  • 设备PID:如果是有线连接DS4,将代码中的DS4_BT_PID改为0x05C4。
  • 报告结构:DS4的输出报告固定为32字节,必须填充足够的0来满足长度要求,否则指令无效。
  • 替代库:如果pywinusb无法正常工作,可以尝试hidapi库(pip install hidapi),用法逻辑一致,只需调整设备查找和发送报告的API。

内容的提问来源于stack exchange,提问作者Kealaw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:06:29