Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: дескриптор репорта
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
sergey sva
Смотрю пример hid из Keil,не понятно почему многие поля повторяются,
например HID_ReportSize(1), или HID_LogicalMin(0) ?

Код
/* HID Report Descriptor */
const BYTE HID_ReportDescriptor[] = {
  HID_UsagePageVendor(0x00),
  HID_Usage(0x01),
  HID_Collection(HID_Application),
    HID_UsagePage(HID_USAGE_PAGE_BUTTON),
    HID_UsageMin(1),
    HID_UsageMax(4),
    HID_LogicalMin(0),
    HID_LogicalMax(1),
    HID_ReportCount(4),
    HID_ReportSize(1),
    HID_Input(HID_Data | HID_Variable | HID_Absolute),
    HID_ReportCount(1),
    HID_ReportSize(4),
    HID_Input(HID_Constant),
    HID_UsagePage(HID_USAGE_PAGE_LED),
    HID_Usage(HID_USAGE_LED_GENERIC_INDICATOR),
    HID_LogicalMin(0),
    HID_LogicalMax(1),
    HID_ReportCount(8),
    HID_ReportSize(1),
    HID_Output(HID_Data | HID_Variable | HID_Absolute),
  HID_EndCollection,
};
sergey sva
Подкорректировал дескриптор репорта, что бы передавал по 8бит и 8 полей.
При вызове readfile() прога зависает(в ПК),с старым дескриптором все работает.
Еще Не совсем пойму при вызове readfile в ПК где указывать Repord ID ? 0х75

Код
const BYTE HID_ReportDescriptor[] = {
0x06, 0x00, 0xFF,  //Usage_Page (Vendor Defined)
0x09, 0x01,        //Usage (I/O Device)
0xA1, 0x01,        //1, // Collection (Application)
0x85, 0x75,        // REPORT_ID
0x19, 0x01,        // Usage_Minimum
0x29, 0x01,        // Usage_Maximum
0x15, 0x00,        // Logical_Minimum (0)
0x25, 0xff,        // Logical_Maximum (255)
0x75, 0x08,        // Report_Size
0x95, 0x08,        // Report_Count
0x81, 0x02,        // Input (Data,Var,Abs)
0x19, 0x01,        // Usage_Minimum
0x29, 0x01,        // Usage_Maximum
0x91, 0x02,        // Output (Data,Var,Abs)
0xC0               // End_Collection
};
sergey sva
Если кто с примеров от keil hid for at91sam7, разбирался, подскажите для отправки нескольких байт
что нужно изменить, кроме HID Report Descriptor ?
sergey sva
Для передачи нескольких байт, нужно записать несколько раз байт в конечную точку?

Код
BOOL HID_GetReport (void) {

  /* ReportID = SetupPacket.wValue.WB.L; */
  switch (SetupPacket.wValue.WB.H) {
    case HID_REPORT_INPUT: {
  
for(i = 0; i < 2; i++){

      GetInReport();
      EP0Buf[0] = InReport;        ///??
    
                              }

                      
      
      break; }
    case HID_REPORT_OUTPUT:
      return (FALSE);          /* Not Supported */
    case HID_REPORT_FEATURE:
      /* EP0Buf[] = ...; */
      /* break; */
      return (FALSE);          /* Not Supported */
  }
  return (TRUE);
}


Скажите что нибуть smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.