我一直在使用PS3控制器在Mac上最近使用IOKit的HID部分。我已经设法查看示例代码并连接到我的控制器,接收数据流并解析它(包括加速度计和陀螺仪在内的所有东西)。从Mac发送数据到PS3 DualShock3控制器(IOHIDDeviceSetReport)
但是,今天我决定要开始设置设备背面的LED并触发隆隆发动机,但我无法完成它!
虽然看到苹果公司为IOHID提供的示例代码,但在HID设备上只设置接收数据的东西并不多。从网上查看(小部分为半天),我有我认为是一种工作发送方法,它使用IOHIDDeviceSetReport()
。但是,我无法弄清楚我应该发送什么数据。
我发现几个网站列表数据的例子:
- http://www.circuitsathome.com/mcu/ps3-and-wiimote-game-controllers-on-the-arduino-host-shield-part-2
- https://github.com/ribbotson/USB-Host/blob/master/ps3/PS3USB/ps3_usb.h
- http://wiibrew.org/wiki/Sixaxis
(我知道不是所有的这些例子都适用于Mac的一个PS3之间控制器)
很多人s eem是在谈论这个问题,甚至是在做这件事(我拒绝相信没有人有这个工作),但我似乎无法找到任何有关如何做到这一点的工作!
我觉得我错过了一个简单的步骤,所以如果任何人有任何想法,帮助或解决方案,请让我知道。
谢谢。
例的如何我试图发送报告准则(被被成功返回):
CFIndex len = 64;
uint8_t report[64] = {0x0};
IOReturn tIOReturn = IOHIDDeviceSetReport(deviceRef,
kIOHIDReportTypeOutput,
reportID,
report,
len);
这只是发送大量的无(字面意思),但它只是一个例子什么我只是使用它不正确。
附加:我也刚刚注意到,苹果的IOHIDDeviceSetReport
defenition从这里给出的例子differes。
有它说report
应该是 “报告缓冲区的地址”。但是......
在那里,它说*report
(即指针)是“报告字节被发送到设备。”
你有没有得到这个工作,你可以改变LED和隆隆电机状态?我有IOKit代码读取值,但按照以下建议设置输出报告不会更改任何LED。 –
@TristanSeifert可悲的是, Karsten的回答很有用,但我发现之前有过链接,无法让他们工作。让我知道,如果你将来有隆隆声或LED有任何运气。 – Baza207
我把它缩小到了IOKit,给了我一个关于写入停滞管道的错误,但是没有关于该错误的文档,并且我对IOKit解决它不够熟悉,所以可以认为数据永远不会被获取直到设备。我会在将来更多地考虑它,让你张贴! (如果我记得,那是......) –