#esp32
Вопрос:
ESP-IDF предоставил пример hid_device в качестве контроллера потребителя (увеличение/уменьшение громкости, воспроизведение…..). Я попытался изменить описание USB на мышь или джойстик. К сожалению, ESP32 может подключаться к ПК BT, но не выполняет функции мыши/джойстика. Предоставьте ссылку на мой исходный код. https://drive.google.com/file/d/1SJmk0Ul37iJ1fC5FgiZ1vXz8VgC_hEoJ/view?usp=sharing
Что-то не так с моим описанием USB?
const unsigned char hidapiReportMap[] = { //8 bytes input, 8 bytes feature
0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00)
0x0A, 0x00, 0x01, // Usage (0x0100)
0xA1, 0x01, // Collection (Application)
0x85, 0x02, // Report ID (2)
0x15, 0x00, // Logical Minimum (0)
0x26, 0xFF, 0x00, // Logical Maximum (255)
0x75, 0x08, // Report Size (8)
0x95, 0x08, // Report Count (8)
0x09, 0x01, // Usage (0x01)
0x82, 0x02, 0x01, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Buffered Bytes)
0x95, 0x08, // Report Count (8)
0x09, 0x02, // Usage (0x02)
0xB2, 0x02, 0x01, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile,Buffered Bytes)
0x95, 0x08, // Report Count (8)
0x09, 0x03, // Usage (0x03)
0x91, 0x02, // Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0, // End Collection
// 38 bytes
};
const unsigned char mediaReportMap[] = {
0x05, 0x01, // Usage Page(Generic Desktop)
0x09, 0x02, // Usage(Mouse) <--------------------- mouse
0xA1, 0x01, // Collection(Physical)
0x09, 0x01, // Usage(Pointer)
0x85, 0x01, // Report ID
0x05, 0x09, // Usage Page(Buttons)
0x75, 0x08, // Report Size(8)
0x95, 0x01, // Report Count(1)
0x81, 0x02, // Input(Variable)
0x09, 0x30, // Usage Page(X)
0x09, 0x31, // Usage Page(Y)
0x09, 0x38, // Usage(Wheel)
0x75, 0x08, // Report Size(8)
0x95, 0x03, // Report Count(3)
0x15, 0x81, // Logical Minimum(-127)
0x25, 0x7F, // Logical Maximum(127)
0x81, 0x06, // Input(Variable, Relative)
0xC0 // End Collection
/*
0x05, 0x01, // Usage Page(Generic Desktop)
0x09, 0x04, // Usage(Joystick) <---------------------------
0xA1, 0x01, // Collection(Application)
0x05, 0x01, // Usage Page(Generic Desktop)
// 8
0x85, 0x01, // Report ID
0x05, 0x01, // Usage Page(Generic Desktop)
0x09, 0x30, // Usage Page(X)
0x75, 0x10, // Report Size(16)
0x95, 0x01, // Report Count(1)
0x15, 0x00, // Logical Minimum(0)
0x26, 0xFF, // Logical Maximum(4095)
0x0F,
0x46, 0xFF, // Physical Maximum(4095)
0x0F,
0x81, 0x02, // Input(Variable)
// 28
0x05, 0x01, // Usage Page(Generic Desktop)
0x09, 0x31, // Usage Page(Y)
0x75, 0x10, // Report Size(16)
0x95, 0x01, // Report Count(1)
0x15, 0x00, // Logical Minimum(0)
0x26, 0xFF, // Logical Maximum(4095)
0x0F,
0x46, 0xFF, // Physical Maximum(4095)
0x0F,
0x81, 0x02, // Input(Variable)
0xC0 // End Collection*/
};
Вот функция идентификатора отчета.
void esp_hidd_send_axis(int xVal, int yVal)
{
uint8_t Mouse_Buffer[8] = {0};
Mouse_Buffer[0] = 0;
Mouse_Buffer[1] = xVal amp; 0xFF;
Mouse_Buffer[2] = yVal amp; 0xFF;
Mouse_Buffer[3] = 0;
esp_hidd_dev_input_set(hid_dev, 1, 1, Mouse_Buffer, 4);
}
Спасибо за помощь.
Ответ №1:
ESP-IDF приводит пример кода : esp-idfпримерыbluetoothesp_hid_device, почему-то не может поддерживать мышь BLE.
Используя espesp-idfпримерыbluetoothbluedroidbleble_hid_device_demo, он поддерживает клавиатуру BLE, мышь BLE и потребительское устройство BLE. Поделитесь моим справочным кодом: введите описание ссылки здесь