我想让PS4控制器在我的电脑上工作,然后通过UART将数据传输到微控制器。
问题是,我没有Linux的C ++编程经验。 uC部分对我更有利。 不过,我想编写一个程序,可以与PS4控制器建立连接,并读取所有按钮,操纵杆,动作和跟踪板。此外,能够控制隆隆声和LED颜色会很棒。
我正在使用Ubuntu 16.4并且已经读过PS4控制器本身支持自ver。 14.xx.但我能找到的关于连接的一般方法是如何设置控制器以进行蒸汽或游戏。 但不是如何获取状态信息并使用C ++与它们一起工作。
在互联网上,我发现了一些项目,但他们都至少有3-4岁,并使用旧版本的Ubuntu。但是由于控制器是本机支持的,所以使用它没有过时的插件/驱动程序是很好的,无论如何都是过时的。我也开始研究HID设备,但这似乎更像是一种解决方法,我希望找到例如一个包含和使用的图书馆......
如果有人能给我一个提示,我们将不胜感激。
答案 0 :(得分:4)
我在覆盆子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_brightness
和brightness
的文件要将颜色更改为0x00ff00,例如将0写入red
255到green
和0到blue
< / p>