Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: помогите создать hid-report
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
mempfis_
Привет всем!!!
Помогите разобраться пожалуйста.
Есть у меня hid-устройство с таким вот hid-report

//Дескриптор репорта
flash struct st_usb_hidreport_descriptor usb_hidreport_descriptor=
{
0x06, 0x00, 0xff, //(Generic Desktop)0x06 0x00 0xff
0x09, 0x01, //(Vendor Usage 1)0x09 0x01
0xa1, 0x01, //(Aplication) 0xa1 0x01
0x19, 0x01, //(Vendor Usage 1) 0x19 0x01
0x29, 0x01, //(Vendor Usage 1) 0x29 0x01
0x15, 0x00, //(0) 0x15 0x00 logical minimum
0x26, 0xff, 0x00, //(255) 0x26 0xff 0x00 logical maximum
0x75, hidreport_size, //(8) 0x75 0x08 report size
0x95, hidreport_count, //(16) 0x95 0x10 report count
0x81, 0x02, //(Data, Var, Abs) 0x81 0x02 feature
0xc0 //0xc0
} ;

расчитано оно на одно конечную точку типа in размером в 64 байта

Подскажите мне пожалуйста как изменить этот дескриптор, чтобы ввести
вторую конечную точку типа out с такимиже параметрами как и in

smile.gif
я разобрался во всех дескрипторах но вот hid-report даётся с большим трудом
надеюсь на вашу помощь и огромное спасибо всем откликнувшимся
Kitsok
Цитата(mempfis_ @ Apr 16 2007, 16:41) *
Привет всем!!!
Помогите разобраться пожалуйста.
Есть у меня hid-устройство с таким вот hid-report

//Дескриптор репорта
flash struct st_usb_hidreport_descriptor usb_hidreport_descriptor=
{
0x06, 0x00, 0xff, //(Generic Desktop)0x06 0x00 0xff
0x09, 0x01, //(Vendor Usage 1)0x09 0x01
0xa1, 0x01, //(Aplication) 0xa1 0x01
0x19, 0x01, //(Vendor Usage 1) 0x19 0x01
0x29, 0x01, //(Vendor Usage 1) 0x29 0x01
0x15, 0x00, //(0) 0x15 0x00 logical minimum
0x26, 0xff, 0x00, //(255) 0x26 0xff 0x00 logical maximum
0x75, hidreport_size, //(8) 0x75 0x08 report size
0x95, hidreport_count, //(16) 0x95 0x10 report count
0x81, 0x02, //(Data, Var, Abs) 0x81 0x02 feature
0xc0 //0xc0
} ;

расчитано оно на одно конечную точку типа in размером в 64 байта

Подскажите мне пожалуйста как изменить этот дескриптор, чтобы ввести
вторую конечную точку типа out с такимиже параметрами как и in

smile.gif
я разобрался во всех дескрипторах но вот hid-report даётся с большим трудом
надеюсь на вашу помощь и огромное спасибо всем откликнувшимся


Страшно читать ваш репорт. Вот мой, и с INPUT, и с OUTPUT, и даже с FEATURE

Код
/* HID Report Descriptor */
const portCHAR pxReportDescriptor[] = {
    HID_GLOBAL_USAGE_PAGE+1,                 HID_USAGE_PAGE_GENERIC_DESKTOP,        // USAGE_PAGE (Generic Desktop)
    HID_LOCAL_USAGE+1,                 HID_USAGE_JOYSTICK,            // USAGE (Joystick)
     HID_MAIN_COLLECTION+1,             HID_COLLECTION_APPLICATION,        // COLLECTION (Application)
      HID_GLOBAL_USAGE_PAGE+1,                 HID_USAGE_PAGE_GENERIC_DESKTOP,        //   USAGE_PAGE (Generic Desktop)
      HID_LOCAL_USAGE+1,             HID_USAGE_POINTER,            //   USAGE (Pointer)
       HID_MAIN_COLLECTION+1,             HID_COLLECTION_PHYSICAL,        //   COLLECTION (Physical)
        HID_LOCAL_USAGE+1,             HID_USAGE_X,                //     USAGE (X)
        HID_LOCAL_USAGE+1,             HID_USAGE_Y,                //     USAGE (Y)
        HID_LOCAL_USAGE+1,             HID_USAGE_Z,                //     USAGE (Z)
        HID_LOCAL_USAGE+1,             HID_USAGE_RX,                //     USAGE (Rx)
        HID_LOCAL_USAGE+1,             HID_USAGE_RY,                //     USAGE (Ry)
        HID_LOCAL_USAGE+1,             HID_USAGE_RZ,                //     USAGE (Rz)
        HID_LOCAL_USAGE+1,             HID_USAGE_SLIDER,            //     USAGE (Slider)
        HID_LOCAL_USAGE+1,             HID_USAGE_DIAL,                //     USAGE (Dial)
        HID_GLOBAL_LOGICAL_MINIMUM+2,             0x00,0x02,                              //  0x0200 == -512 in 10-bit word
        HID_GLOBAL_LOGICAL_MAXIMUM+2,             0xff,0x01,                              //  0x01ff == +511 in 10-bit word
        HID_GLOBAL_REPORT_SIZE+1,         0x0A,                    //     REPORT_SIZE (8)
        HID_GLOBAL_REPORT_COUNT+1,         0x08,                    //     REPORT_COUNT (8)
        HID_MAIN_INPUT+1,             0x02,                    //     INPUT (Data,Var,Abs)
       HID_MAIN_ENDCOLLECTION,                                //   END_COLLECTION
      HID_GLOBAL_LOGICAL_MINIMUM+1,             0x00,                    //   LOGICAL_MINIMUM (0)
      HID_GLOBAL_USAGE_PAGE+1,                 HID_USAGE_PAGE_BUTTON,            //   USAGE_PAGE (Button)
      HID_LOCAL_USAGE_MINIMUM+2,         0x01,0x00,                //   USAGE_MINIMUM (Button 1)
      HID_LOCAL_USAGE_MAXIMUM+2,         0x80,0x00,                //   USAGE_MAXIMUM (Button 191)
      HID_GLOBAL_LOGICAL_MINIMUM+1,             0x00,                    //   LOGICAL_MINIMUM (0)
      HID_GLOBAL_LOGICAL_MAXIMUM+1,             0x01,                    //   LOGICAL_MAXIMUM (1)
      HID_GLOBAL_REPORT_SIZE+1,         0x01,                         //   REPORT_SIZE (1)
      HID_GLOBAL_REPORT_COUNT+1,         0x80,                        //   REPORT_COUNT (192)
      HID_GLOBAL_UNIT_EXPONENT+1,             0x00,                    //   UNIT_EXPONENT (0)
      HID_GLOBAL_UNIT+1,             0x00,                    //   UNIT (None)
      HID_MAIN_INPUT+1,             0x02,                    //   INPUT (Data,Var,Abs)
      
      HID_LOCAL_USAGE+1,            0xff,                    // USAGE (Vendor defined)
      HID_GLOBAL_LOGICAL_MINIMUM+1,             (unsigned char) -128,        
      HID_GLOBAL_LOGICAL_MAXIMUM+1,             (unsigned char) 127,
      HID_GLOBAL_REPORT_COUNT+1,        0x40,                    //   REPORT_COUNT (64)
      HID_GLOBAL_REPORT_SIZE+1,                0x08,                    //   REPORT_SIZE (8)
      HID_MAIN_OUTPUT+1,            0x02,                    //   OUTPUT (Data,Var,Abs)

      HID_GLOBAL_USAGE_PAGE+2,                  0xff,0xff,
      HID_LOCAL_USAGE+1,            0xff,                    // USAGE (Vendor defined)
      HID_GLOBAL_LOGICAL_MINIMUM+1,             (unsigned char) -128,
      HID_GLOBAL_LOGICAL_MAXIMUM+1,             (unsigned char) 127,
      HID_GLOBAL_REPORT_COUNT+1,        0x08,                    //   REPORT_COUNT (8)
      HID_GLOBAL_REPORT_SIZE+1,                0x08,                    //   REPORT_SIZE (8)
      HID_MAIN_FEATURE+1,            0x02,                    //   FEATURE (Data,Var,Abs)
    HID_MAIN_ENDCOLLECTION                                               // END_COLLECTION
};
AndreyKar
Можно ли создать HID репорт, что бы он мог работать с массивом данных переменной длины (в пределах спецификации HID)?
Это я к чему: допустим есть ХИД устройство с INPUT и OUTPUT репортами, но я не знаю, сколько байт, в конкретный момент времени, надо будет отправить или принять. Дробить пакет не хочется.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.