Я использую MEMS-датчик для своего проекта. Я работаю над 16-битным дескриптором отчета HID геймпада, который имеет 8 кнопок и 4 оси (данные поступают от датчика MEMS).
Во-первых, я использовал 8-битный дескриптор отчета HID Gamepad и отправлял данные через BLE. Это было проверено с помощью тестера геймпада для Windows и Android HTML5 (http://html5gamepad.com/)), и обе ОС выдают ожидаемые данные в тестере геймпада. Чем для лучшего разрешения я изменил дескриптор отчета и сделал 2-байтовый дескриптор HID, который прилагается ниже. Этот отчет дескриптор дает ожидаемые данные и разрешение в окнах, но не получает тот же вывод на стороне Android.
Выход:
16-битное разрешение данных в Windows:
0,147723, 0,148028, 0,149737, 0,150103, 0,152056, 0,154070, 0,154957, 0,156087, 0,156146
16-битное разрешение данных в Android:
0,144566, 0,153294, 0,165441, 0,170080, 0,183691, 0,191595, 0,199957
Здесь я прикрепил скриншот тестера геймпада html5 (в chrome). введите описание изображения здесь
Это показывает, что я посылаю кватернионные данные с датчика, и он получает значение по 4 осям (X, Y, Z, W), которое составляет (0, 0, 0, 1) в исходном состоянии. поэтому данные в тестере геймпада находятся в диапазоне от -1 до 1.
В 16 битах я использую логический минимум: от -32767 до логического максимума: 32767
поэтому у меня есть сомнения, есть ли какие-либо ограничения на стороне Android для дескриптора отчета HID?
введите описание изображения здесь
0x05, 0x01, //USAGE_PAGE (Generic Desktop)
0x09, 0x05, //USAGE (Game Pad)
0xa1, 0x01, //COLLECTION (APPLICATION)
0xa1, 0x00, // COLLECTION (Physical)
0x05, 0x09, //USAGE_PAGE (Button)
0x19, 0x01, //USAGE_MINIMUM (Button1)
0x29, 0x08, //USAGE_MAXIMUM (Button 8)
0x15, 0x00, //LOGICAL_MINIMUM (0)
0x25, 0x01, //LOGICAL_MAXIMUM(1)
0x95, 0x08, //REPORT_COUNT (8)
0x75, 0x01, //REPORT_SIZE (1)
0x81, 0x02, //INPUT(Data, Var, Abs)
0x05, 0x01, //USAGE_PAGE (Generic Desktop)
0x09, 0x30, //USAGE (X)
0x09, 0x31, //USAGE (Y)
0x09, 0x32, //USAGE (Z)
0x09, 0x35, //USAGE (Rz)
0x16, 0x01, 0x80 //LOGICAL_MINIMUM(-32767)
0x26, 0xff, 0x7f //LOGICAL_MAXIMUM(32767)
0x75, 0x10, //REPORT_SIZE(16)
0x95, 0x04, //REPORT_COUNT(4)
0x81, 0x02, //INPUT(Data,Var,Abs)
0xc0, //END_Collection
0xc0 //END_Collection
Надеюсь, кто-нибудь сможет помочь с этой проблемой.
Спасибо
Дивья.