ArkZel 0 1 апреля, 2009 Опубликовано 1 апреля, 2009 · Жалоба Всем привет! Пытаюсь реализовать USB - устройство которое в Windows будет представляться как 2-COM порта. Один COM - порт реализовал, драйвер использовал стандартный usbser.sys. Дескрипторы при этом следующие: DeviceDescriptor CDC1_HS_Device_Descriptor[] = { 18, 0x01, USB_VERSION_20, 0x02, 0x00, 0x00, 0x40, 0xABCD, 0xABCD, USB_RELEASE_NUMBER, 0, 0, 0, 0x01 }; ConfigurationDescriptor CDC1_Standard_Config_Descriptor[] = { 9, 0x02, 0x43, 0x02, 0x01, 0x00, 0x40, 250 }; InterfaceDescriptor CDC1_HS_Default_Interface_COM_Descriptor[] = //communication interface { 9, 0x04, 0x00, 0x00, 0x01, 0x02, 0x02, 0x01, 0x00 }; InterfaceDescriptor CDC1_HS_Default_Interface_DATA_Descriptor[] = //data interface { 9, 0x04, 0x01, 0x00, 0x02, 0x0A, 0x00, 0x00, 0x00 }; CDCFunctionalDescriptor CDC1_Heder_Functional_Descriptor[] = //heder functional descriptor { 0x05, 0x24, 0x00, 0x00, 0x02 }; CDCFunctionalDescriptor CDC1_Call_Management_Descriptor[] = //call management descriptor { 0x05, 0x24, 0x01, 0x03, 0x01 }; CDCFunctionalDescriptor CDC1_Abstract_Control_Management_Descriptor[] = //abstract control management descriptor { 0x04, 0х24, 0x02, 0x06, }; CDCFunctionalDescriptor CDC1_Union_Interface_Functional_Descriptor[] = //union interface functional descriptor { 0x05, 0х24, 0x06, 0x00, 0x01 }; EndpointDescriptor CDC1_HS_Interrupt_In2_Descriptor[] = { 7, USB_ENDPOINT_DESCRIPTOR_TYPE, 0x82, 0x03, 0x0020, 0x02 }; EndpointDescriptor CDC1_HS_Bulk_Out4_Descriptor[] = { 7, USB_ENDPOINT_DESCRIPTOR_TYPE, 0x04, 0x02, 0x0020, 0x00 }; EndpointDescriptor CDC1_HS_Bulk_In4_Descriptor[] = { 7, USB_ENDPOINT_DESCRIPTOR_TYPE, 0x84, 0x02, 0x0020, 0x00 }; Конфигурацию отправляю в следующем порядке: CDC1_Standard_Config_Descriptor[], //9-байт CDC1_HS_Default_Interface_COM_Descriptor[], //9-байт CDC1_Heder_Functional_Descriptor[] //5-байт CDC1_Call_Management_Descriptor[] //5-байт CDC1_Abstract_Control_Management_Descriptor[] //4-байт CDC1_Union_Interface_Functional_Descriptor[] //5-байт CDC1_HS_Interrupt_In2_Descriptor[] //7-байт CDC1_HS_Default_Interface_DATA_Descriptor[] //9-байт CDC1_HS_Bulk_Out4_Descriptor[] //7-байт CDC1_HS_Bulk_In4_Descriptor[] //7-байт Устанавливаю драйвер и все работает. Для 2-х COM-портов: Конфигурацию отправляю в следующем порядке: CDC1_Standard_Config_Descriptor[], //9-байт CDC1_HS_Default_Interface_COM_Descriptor[], //9-байт CDC1_Heder_Functional_Descriptor[] //5-байт CDC1_Call_Management_Descriptor[] //5-байт CDC1_Abstract_Control_Management_Descriptor[] //4-байт CDC1_Union_Interface_Functional_Descriptor[] //5-байт CDC1_HS_Interrupt_In2_Descriptor[] //7-байт CDC1_HS_Default_Interface_DATA_Descriptor[] //9-байт CDC1_HS_Bulk_Out4_Descriptor[] //7-байт CDC1_HS_Bulk_In4_Descriptor[] //7-байт CDC2_HS_Default_Interface_COM_Descriptor[], //9-байт CDC2_Heder_Functional_Descriptor[] //5-байт CDC2_Call_Management_Descriptor[] //5-байт CDC2_Abstract_Control_Management_Descriptor[] //4-байт CDC2_Union_Interface_Functional_Descriptor[] //5-байт CDC2_HS_Interrupt_In2_Descriptor[] //7-байт CDC2_HS_Default_Interface_DATA_Descriptor[] //9-байт CDC2_HS_Bulk_Out4_Descriptor[] //7-байт CDC2_HS_Bulk_In4_Descriptor[] //7-байт Теперь используется 4-е интерфейса. Появляется устройство только драйвер на него поставить не удается. В каком порядке нужно передавать дескрипторы для 2-х COM - портов? Сколько интерфейсов при этом используется? Нужно ли использовать IAD? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Седой 0 2 апреля, 2009 Опубликовано 2 апреля, 2009 · Жалоба Нужно ли использовать IAD? Обязательно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ArkZel 0 2 апреля, 2009 Опубликовано 2 апреля, 2009 · Жалоба Обязательно. Поискал немного в инете и нашел очень полезную ссылку: http://www.microchip.com/forums/tm.aspx?m=...p;\#223235 Сделал все как там говорится. И все заработало. Сделал даже 3 устройства в одном (Audio + 2 COM). Ставлю на них дрова и все работает. Только для CDC устройств использую не usbser.sys, а другой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться