Как я могу считывать данные с устройства HID USB в приложении Cocoa?

#macos #cocoa #xcode4 #usb #hid

#macos #cocoa #xcode4 #usb #hid

Вопрос:

Я пытаюсь реализовать приложение HID USB в Mac OS X. Приложению необходимо считывать данные с устройства HID USB. Я нашел некоторую информацию о чтении с устройства HID USB, в котором упоминается создание HID manager kext. Мой вопрос в том, как я могу создать HID manager kext и как мне реализовать этот kext в моем приложении Cocoa?

Это информация о моем устройстве из USB Prober:

 Low Speed device @ 2 (0x5D200000): .............................................   Composite device: "SportBrain USB000000000000000000000000"
    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 USB000000000000000000000000"
        Serial Number String:   0 (none)
    Configuration Descriptor: .......................................   "SportBrain USB000000000000000000000000"
        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:

Вам не нужно реализовывать kext . Вы бы просто использовали IOKit , особенно IOHid интерфейс.

Комментарии:

1. Знаете ли вы какие-либо хорошие примеры в Интернете, показывающие, как это сделать, кроме документов Apple @Yann Ramin?