如何从Cocoa应用程序中的HID USB设备读取数据?

时间:2011-10-03 04:25:54

标签: macos cocoa xcode4 usb hid

我正在尝试在Mac OS X中实现HID USB应用程序。应用程序需要从HID USB设备读取数据。我找到了一些关于从HID USB设备读取的信息,其中提到了HID管理器kext的创建。我的问题是,如何创建HID管理器kext以及如何在Cocoa应用程序中实现此kext?

这是来自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  (Interrupt no synchronization data endpoint)
                Max Packet Size:   8
                Polling Interval:   10 ms

如果有人知道这一点,请帮助我。

1 个答案:

答案 0 :(得分:2)

您无需实施kext。您只需使用IOKit,特别是IOHid界面。