使用C ++在Linux上使用接口Playstation DualShock 4(DS4)控制器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用C ++在Linux上使用接口Playstation DualShock 4(DS4)控制器相关的知识,希望对你有一定的参考价值。

我想让PS4控制器在我的PC上工作,然后通过UART将数据传输到微控制器。

问题是,我没有Linux的C ++编程经验。 uC部分对我更有利。不过,我想编写一个程序,可以与PS4控制器建立连接,并读取所有按钮,操纵杆,动作和跟踪板。此外,能够控制隆隆声和LED颜色会很好。

我正在使用Ubuntu 16.4并且已经读过PS4控制器本身支持自ver。 14.xx.但我能找到的关于连接的一般方法是如何设置控制器以进行蒸汽或游戏。但不是如何获取状态信息并使用C ++与它们一起工作。

在互联网上,我发现了一些项目,但他们都至少3-4岁,并使用旧版本的Ubuntu。但是由于控制器是本机支持的,所以使用它没有过时的插件/驱动程序是很好的,无论如何都是过时的。我也开始研究HID设备,但这似乎更像是一种解决方法,我希望找到例如包含和使用的图书馆......

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

答案

我在覆盆子pi上完成了大部分工作,但大多数仍然适用,因为底层驱动程序大多是相同的

连接:https://wiki.gentoo.org/wiki/Sony_DualShock查看关于bluetoothctl的部分,并尝试遵循或获得无线加密狗。 (那应该自动设置)

Controlls:你最好的选择是阅读/dev/input/jsX,其中x是你连接的控制器的编号(通常为0)。这适用于普通的文件读取,所以应该没问题。此文件包含从按钮按下到触控板事件和所有其他传感器数据的所有内容。这是基于事件的,所以如果按下按钮,您将获得8字节的数据突发。结构如下所示: 1.时间戳最低字节 2.时间戳第二低字节 3.时间戳第二高字节 4.时间戳最高字节 5.测量数据MSB 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频道。在这些文件夹中有一些名为max_brightnessbrightness的文件要将颜色更改为0x00ff00,例如将0写入red 255到green,将0更改为blue

以上是关于使用C ++在Linux上使用接口Playstation DualShock 4(DS4)控制器的主要内容,如果未能解决你的问题,请参考以下文章

MSVC下使用gnu regex(正则表达式C语言接口regex.h)

使用C代码在接口上设置ip

在 Win/Linux 上使用 C/C++ 为大页面分配内存的最简单方法是啥? [关闭]

在 Linux 上使用 C 检查目录是不是为空

在 Linux 上使用纯 C 项目中用 C++ 编写的库?

如何通过使用 C、C++ 在 Linux 上指定其名称以编程方式检查特定守护程序是不是正在运行?