最近我一直在我的 Mac 上使用 PS3 控制器玩 IOKit 的 HID 部分。我已经设法查看示例代码并连接到我的控制器,接收数据流并解析它(一切,包括加速度计和陀螺仪)。
然而,今天我决定开始设置设备背面的 LED 并触发震动马达,但我就是无法让它工作!
纵观 Apple 为 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 控制器)
很多人似乎都在谈论这个,甚至在做(我拒绝相信没有人能做到这一点),但我似乎找不到任何关于如何做到这一点的东西!
我觉得我在这里错过了一个简单的步骤,所以如果有人有任何想法、帮助或解决方案,请告诉我。
谢谢。
我如何尝试发送报告的示例代码(正在返回成功):
CFIndex len = 64;
uint8_t report[64] = {0x0};
IOReturn tIOReturn = IOHIDDeviceSetReport(deviceRef,
kIOHIDReportTypeOutput,
reportID,
report,
len);
这只是发送很多什么都没有(字面意思),但这只是我正在使用的一个例子,以防万一它不正确。
额外:我也刚刚注意到苹果的IOHIDDeviceSetReport
防御与给出的例子不同。
它说report
应该是“报告缓冲区的地址”。但...
它说*report
(作为指针)是“要发送到设备的报告字节。”。