我一直在使用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解決它不夠熟悉,所以可以認爲數據永遠不會被獲取直到設備。我會在將來更多地考慮它,讓你張貼! (如果我記得,那是......) –