реклама на сайте
подробности

 
 
> HID-AVR с десятью кнопками
Oleg_IT
сообщение Jun 22 2009, 07:58
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Делаю девайс HID-AVR (Joystick, Game Pad). Нужны только кнопки. До восьми кнопок всё работает нормально, девять и больше кнопок работать не хотят, в диспетчере устройств надпись появляется, но с восклицательным знаком, в игровых устройствах надписей нет.
HID репорт дескриптора у меня такой

0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x05, // USAGE (Game Pad (Joystick))
0xa1, 0x01, // COLLECTION (Application)
0x09, 0x01, // USAGE (Pointer)
0xa1, 0x00, // COLLECTION (Physical)
0x85, 0x01, // REPORT_ID (1)
0x05, 0x09, // USAGE_PAGE (Button)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x08, // USAGE_MAXIMUM (Button X) 0x29, 0x0A
0x95, 0x08, // REPORT_COUNT (X) 0x95, 0x0A
0x75, 0x01, // REPORT_SIZE (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x81, 0x07, // INPUT (Constant)
0xc0, // END_COLLECTION
0xc0, // END_COLLECTION

Что не так делаю?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 1)
Mr. White
сообщение Aug 10 2009, 09:08
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 13-09-06
Из: Симферополь
Пользователь №: 20 352



Сам с USB только начал разбираться, по сему если что не так понимаю извините.

Вот дескриптор репорта джойстика Logitech Attack 3, коментировал для себя сам - могут быть ошибки.

Код
  0x05, 0x01,       // Usage Page (Generic Desktop)
  0x09, 0x04,       // Usage (Joystick ???)
  0xa1, 0x01,       // Collection (Application)
  0xa1, 0x02,       //    Collection (Logical)
  0x15, 0x00,       //      Logical Minimum (0)
  0x26, 0xff, 0x00, //      Logical Maximum (0x00FF)
  0x35, 0x00,       //      Phisical Minimum (0)
  0x46, 0xff, 0x00, //      Phisical Maximum (0x00FF)
  0x75, 0x08,       //      Report Size (8)
  0x95, 0x03,       //      Report Count (3)
  0x09, 0x30,       //      Usage (X)
  0x09, 0x31,       //      Usage (Y)
  0x09, 0x32,       //      Usage (Z)
  0x81, 0x02,       //      Input(Data,Var,Abs)
  0x25, 0x01,       //      Logical Maximum (1)
  0x45, 0x01,       //      Phisical Maximum (1)
  0x75, 0x01,       //      Report Size (1)
  0x95, 0x0b,       //      Report Count (11)
  0x05, 0x09,       //      Usage Page (Buttons)
  0x19, 0x01,       //      Usage Minimum (01)
  0x29, 0x0b,       //      Usage Maximum (11)
  0x81, 0x02,       //      Input(Data,Var,Abs)
  0x75, 0x01,       //      Report Size (1)
  0x95, 0x05,       //      Report Count (5)
  0x81, 0x01,       //      Input(????????)
  0xc0,             //    End collection
  0xa1, 0x02,       //    Collection (Logical)
  0x26, 0xff, 0x00, //      Logical Maximum (0x00FF)
  0x46, 0xff, 0x00, //      Phisical Maximum (0x00FF)
  0x75, 0x08,       //      Report Size (8)
  0x95, 0x04,       //      Report Count (3)
  0x06, 0x00, 0xff, //      Usage (Vendor defined)
  0x09, 0x01,       //      Usage (Monitor control)
  0xb1, 0x02,       //      Feature (Data, Var, Abs)
  0xc0,             //    End collection x2
  0xc0              //End collection x2


У это джойстика одиннадцать кнопок, собственно это видно в дескрипторе. Но за кнопками добиты еще 5 ненужных??? бит. Сдается мне что добили их до размера данных в 2 байта. Возможно Вам необходимо сделать тоже, то есть добавить 6 бит.

Типа так:
Код
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x05, // USAGE (Game Pad (Joystick))
0xa1, 0x01, // COLLECTION (Application)
0x09, 0x01, // USAGE (Pointer)
0xa1, 0x00, // COLLECTION (Physical)
0x85, 0x01, // REPORT_ID (1)
0x05, 0x09, // USAGE_PAGE (Button)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x0A, // USAGE_MAXIMUM (Button 10)
0x95, 0x0A, // REPORT_COUNT (10)
0x75, 0x01, // REPORT_SIZE (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x81, 0x07, // INPUT (Constant)

  0x75, 0x01,       //      Report Size (1)
  0x95, 0x05,       //      Report Count (6)
  0x81, 0x01,       //      Input(????????)

0xc0, // END_COLLECTION
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 06:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01352 секунд с 7
ELECTRONIX ©2004-2016