ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
13 мая
56285 Топик полностью
LazyCamel (06.04.2006 15:59, просмотров: 1) ответил Котик на Тут уж не до выражений... неделю занимался любовью с юсб хид протоколом и тут выплывает, что ендпоинтам при енумирации задаются атрибуты bulk, при том что мои данные енумерации (параметры ендпойнтов) шли в разрез с тем что написано в означенной функции
Ответ: Прав был Лозинский - лишние знания дуракам только помеха... Детали внутри. Какого извините черта две недели лазить в коде в котором не бум-бум вместо того чтобы спокойно сесть и прочитать окументацию про УСБ. И не нужно станет тогда делать выводы космической широты и космической же глупости. Цитирую из hid_enumerate.c /* Endpoint 1 descriptor */ 0x07, // bLength 0x05, // bDescriptorType 0x80 + EP_NUMBER, // bEndpointAddress 0x03, // bmAttributes INT 0x04, // wMaxPacketSize: 3 bytes (button, x, y) 0x00, 0x0A // bInterval Ткните меня носом где здесь написано что ендпоинт имеет тип "Балк",а ? Я третий день пытаюсь добиться от вас чем (каким методом) со стороны РС вы пытаетесь передать данные в ХИД-устройства. Нет ответа. Было предложено таки посмотреть на пример работы джойстика из состава FreeRTOS, потому что энумерация мыши идет в два прохода вместо одного, как для всех ХИД устройств кроме мышей и клавиатур - нет ответа. Есть только громкие и глупые крики от человека который даже не подумал хоть чуть чуть сесть и разобраться что же он делает, а не мастурбировать в коде. Причем так-как это конференция старейшая по АРМам, то эти недалекие выкрики с мест люди сами не начавшие осваивать ЮСБ вообще и ХИД в частности понесут по просторам Интернета. Вы хендл ХИД устройства на РС получили ? Тогда найдите в конце концов в описании WINAPI функции HidD_SetFeature/ HidD_GetFeature и используйте их. В прошивке в функцию AT91F_HID_Enumerate надо добавить обработку class-specific request"ов HID_GET_Report, HID_SET_Report, а также в место стандартного мышиного HID дескриптора сделайте что-то типа этого: const short mouseDescriptor[] = { 0x06, 0x00, 0xff, // USAGE_PAGE (Generic Desktop) 0x09, 0x01, // USAGE (Vendor Usage 1) 0xa1, 0x01, // COLLECTION (Application) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x03, // REPORT_COUNT (3) 0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf) 0xc0 // END_COLLECTION } и гоняйте свои три байта в любых направлениях. Заодно конечную точку 1 можете вообще выкинуть из обработки. ТОЛЬКО ОБЯЗАТЕЛЬНО прочитайте сначала хотя бы "USB in a Nutshell", чтобы не смотреть на код как баран на новые ворота.