gpt4 book ai didi

c++ - 使用 C++ 在 Linux 上连接 Playstation DualShock 4 (DS4) Controller

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:25 24 4
gpt4 key购买 nike

我想让 PS4 Controller 在我的 PC 上工作,然后通过 UART 将数据中继到微 Controller 。

问题是,我没有 Linux 的 C++ 编程经验。 uC 部分对我更有利。不过,我想编写一个程序,它可以与 PS4 Controller 建立连接并读取所有按钮、摇杆、 Action 和触控板。此外,如果能够控制隆隆声和 LED 颜色,那就太好了。

我使用的是 Ubuntu 16.4,并且已经读到 PS4 Controller 从 ver.1 开始得到原生支持。 14.xx。但我能找到的关于连接的所有信息都是如何为 Steam 或一般游戏设置 Controller 。但不是如何获取状态信息并使用 C++ 处理它们。

在互联网上,我找到了一些项目,但它们都至少有 3-4 年的历史,并且使用的是旧版本的 Ubuntu。但是由于 Controller 是本地支持的,所以在没有过时的插件/驱动程序的情况下使用它会很好,这些插件/驱动程序无论如何都已经过时了。我也开始研究 HID 设备,但这似乎更像是一种解决方法,我希望找到例如包含和使用的库...

如果有人能给我提示,将不胜感激。

最佳答案

我在树莓派上完成了大部分工作,但大部分仍然适用,因为底层驱动程序基本相同

正在连接:https://wiki.gentoo.org/wiki/Sony_DualShock查看有关 bluetoothctl 的部分,然后尝试遵循该部分或获取无线加密狗。 (应该会自动设置)

控件:你最好的选择是阅读 /dev/input/jsX其中 x 是您所连接的 Controller 的编号(通常为 0)。这适用于正常的文件读取,所以应该没有问题。该文件包含从按钮按下到触控板事件和所有其他传感器数据的所有内容。它是基于事件的,所以如果您按下一个按钮,您将获得一个 8 字节的突发数据。结构如下所示:
1. 时间戳最低字节
2. 时间戳倒数第二个字节
3.时间戳第二高字节
4.时间戳最高字节
5. 测量数据最高位
6. 测量数据LSB
7. 类型(1 代表按钮。2 代表轴(所以是摇杆或其他模拟值))
8. ID 字节(所以你按下的按钮的 ID。例如:1 代表 x,2 代表方形,5 代表左摇杆 x)

LED:这个有点复杂。到目前为止我发现的唯一方法是访问 /sys/class/leds
该文件夹应包含一个名为 0005:054C:05C4.0009:<blue/green/red/global> 的子文件夹。
这些是您的 R/G/B channel 。在这些文件夹中有名为 max_brightness 的文件和 brightness要将颜色更改为 0x00ff00,例如将 0 写入 red 255 至 green和 0 到 blue

关于c++ - 使用 C++ 在 Linux 上连接 Playstation DualShock 4 (DS4) Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47750204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com