How can I read data from an HID USB device in a Cocoa Application?
I am trying to implement an HID USB application in Mac OS X. The application needs to read data from the HID USB device. I found some information about reading from an HID USB device, which mentioned the creation of a HID manager kext. My question is, how can I create the HID manager kext and how do I implement this kext in my Cocoa application?
This is my device's information from USB Prober:
Low Speed device @ 2 (0x5D200000): ............................................. Composite device: "SportBrain USB\000\000\000\000\000\000\000\000\000\000\000\000"
Device Descriptor
Descriptor Version Number: 0x0110
Device Class: 0 (Composite)
Device Subclass: 0
Device Protocol: 0
Device MaxPacketSize: 8
Device VendorID/ProductID: 0x1125/0x2000 (unknown vendor)
Device Version Number: 0x0106
Number of Configurations: 1
Manufacturer String: 1 "SportBrain In"
Product String: 2 "SportBrain USB\000\000\000\000\000\000\000\000\000\000\000\000"
Serial Number String: 0 (none)
Configuration Descriptor: ....................................... "SportBrain USB\000\000\000\000\000\000\000\000\000\000\000\000"
Length (and contents): 34
Raw Descriptor (hex) 0000: 09 02 22 00 01 01 02 80 0D 09 04 00 00 01 03 00
Raw Descriptor (hex) 0010: 00 02 09 21 00 01 00 01 22 1C 00 07 05 81 03 08
Raw Descriptor (hex) 0020: 00 0A
Number of Interfaces: 1
Configuration Value: 1
Attributes: 0x80 (bus-powered)
MaxPower: 26 ma
Interface #0 - HID
Alternate Setting 0
Number of Endpoints 1
Interface Class: 3 (HID)
Interface Subclass; 0
Interface Protocol: 0
HID Descriptor
Descriptor Version Number: 0x0100
Country Code: 0
Descriptor Count: 1
Descriptor 1
Type: 0x22 (Report Descriptor)
Length (and contents): 28
Raw Descriptor (hex) 0000: 06 A0 FF 09 01 A1 01 09 01 15 00 25 FF 75 08 95
Raw Descriptor (hex) 0010: 08 81 02 09 03 75 08 95 08 B1 02 C0
Parsed Report Descriptor:
Usage Page (65440)
Usage 1 (0x1)
Collection (Application)
Usage 1 (0x1)
Logical Minimum......... (0)
Logical Maximum......... (-1)
Report Size............. (8)
Report Count............ (8)
Input................... (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield)
Usage 3 (0x3)
Report Size............. (8)
Report Count............ (8)
Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield)
End Collection
Endpoint 0x81 - Interrupt Input
Address: 0x81 (IN)
Attributes: 0x03 (Interr开发者_C百科upt no synchronization data endpoint)
Max Packet Size: 8
Polling Interval: 10 ms
If anybody know this please help me.
You do not need to implement a kext
. You would simply use IOKit
, specially the IOHid
interface.
精彩评论