|
|
  |
Составное USB, нехватка конечных точек |
|
|
|
Jul 19 2011, 16:36
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(pil @ Jul 19 2011, 15:50)  ... Virt COM 3: 1 in interrupt + 1 in bulk + 1 out bulk ... Попробуйте для Virt COM 3 использовать 1 in bulk + 1 out bulk. Переходник USB2.0 - RS232 (COM) VE024 имеет именно такую конфигурацию эндпоинтов. И работает.
|
|
|
|
|
Jul 19 2011, 16:41
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(pil @ Jul 19 2011, 16:50)  Вычитал, что можно как то подцепиться к 0й endpoint. Как? HID устройства могут не иметь EP кроме 0-й. Я так делал, всё отлично работает. Но я использовал только запросы GET/SET Report. Но интеррупт канал, по идее, должен работать через EP0. Для этого всё предусмотрено. Там просто будет запрос от интерфейса с соотв-м номером. Просто нужно на него ответить и всё. Проверить легко - не описывать HID-овские EP и посмотреть запросы сниффером.
|
|
|
|
|
Jul 19 2011, 16:44
|
Участник

Группа: Участник
Сообщений: 33
Регистрация: 15-11-08
Пользователь №: 41 658

|
Цитата(Konst_777 @ Jul 19 2011, 20:36)  Попробуйте для Virt COM 3 использовать 1 in bulk + 1 out bulk. Переходник USB2.0 - RS232 (COM) VE024 имеет именно такую конфигурацию эндпоинтов. И работает. а можно дескриптор? Цитата HID устройства могут не иметь EP кроме 0-й. Я так делал, всё отлично работает. Но я использовал только запросы GET/SET Feature. Но интеррупт канал, по идее, должен работать через EP0. Для этого всё предусмотрено. Там просто будет запрос от интерфейса с соотв-м номером. Просто нужно на него ответить и всё. Проверить легко - не описывать HID-овские EP и посмотреть запросы сниффером. Пока запасной вариант, попробую.
Сообщение отредактировал pil - Jul 19 2011, 16:46
|
|
|
|
|
Jul 19 2011, 17:34
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(pil @ Jul 19 2011, 19:44)  а можно дескриптор? Вот что выдает UVCView.x86.exeКод ---===>Device Information<===--- English product name: "usb serial conveter" ConnectionStatus: Current Config Value: 0x01 -> Device Bus Speed: Full Device Address: 0x01 Open Pipes: 2 ===>Endpoint Descriptor<=== bLength: 0x07 bDescriptorType: 0x05 bEndpointAddress: 0x81 -> Direction: IN - EndpointID: 1 bmAttributes: 0x02 -> Bulk Transfer Type wMaxPacketSize: 0x0040 = 0x40 bytes bInterval: 0x00 ===>Endpoint Descriptor<=== bLength: 0x07 bDescriptorType: 0x05 bEndpointAddress: 0x02 -> Direction: OUT - EndpointID: 2 bmAttributes: 0x02 -> Bulk Transfer Type wMaxPacketSize: 0x0040 = 0x40 bytes bInterval: 0x00 ===>Device Descriptor<=== bLength: 0x12 bDescriptorType: 0x01 bcdUSB: 0x0200 bDeviceClass: 0x00 -> This is an Interface Class Defined Device bDeviceSubClass: 0x00 bDeviceProtocol: 0x00 bMaxPacketSize0: 0x08 = (8) Bytes idVendor: 0x0403 = Future Technology Devices International Limited idProduct: 0x6001 bcdDevice: 0x0400 iManufacturer: 0x01 English (United States) "ftdi" iProduct: 0x02 English (United States) "usb serial conveter" iSerialNumber: 0x03 English (United States) "ftQPMA5P" bNumConfigurations: 0x01 ===>Configuration Descriptor<=== bLength: 0x09 bDescriptorType: 0x02 wTotalLength: 0x0020 -> Validated bNumInterfaces: 0x01 bConfigurationValue: 0x01 iConfiguration: 0x00 bmAttributes: 0xA0 -> Bus Powered MaxPower: 0x16 = 44 mA ===>Interface Descriptor<=== bLength: 0x09 bDescriptorType: 0x04 bInterfaceNumber: 0x00 bAlternateSetting: 0x00 bNumEndpoints: 0x02 bInterfaceClass: 0xFF -> Vendor Specific Device bInterfaceSubClass: 0xFF *!*CAUTION: This appears to be an invalid bInterfaceSubClass bInterfaceProtocol: 0xFF *!*WARNING: must be set to PC_PROTOCOL_UNDEFINED 0 for this class iInterface: 0x02 English (United States) "usb serial conveter" *!*ERROR: 0xFF is the prerelease USB Video Class ID ===>Endpoint Descriptor<=== bLength: 0x07 bDescriptorType: 0x05 bEndpointAddress: 0x81 -> Direction: IN - EndpointID: 1 bmAttributes: 0x02 -> Bulk Transfer Type wMaxPacketSize: 0x0040 = 0x40 bytes bInterval: 0x00 ===>Endpoint Descriptor<=== bLength: 0x07 bDescriptorType: 0x05 bEndpointAddress: 0x02 -> Direction: OUT - EndpointID: 2 bmAttributes: 0x02 -> Bulk Transfer Type wMaxPacketSize: 0x0040 = 0x40 bytes bInterval: 0x00
|
|
|
|
|
Jul 19 2011, 18:31
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(Konst_777 @ Jul 19 2011, 21:34)  idVendor: 0x0403 = Future Technology Devices International Limited idProduct: 0x6001 Так это значит драйвер по VID/PID установится. Там что угодно может быть. Кстати, а ведь насколько я помню, класс CDC должен быть в дескрипторе устройства прописан. Из дескриптора интерфейса драйвер не установится. Т.е. составного устройства, включающего в себя CDC, быть не может. Т.е. может, конечно, но только со своим драйвером, а значит покупка VID. Цитата(sergeeff @ Jul 19 2011, 22:24)  Можно хоть все интерфейсы на одни и те же конечные точки посадить. Но... Если захотите одновременно пользоваться этими интерфейсами (читай, разными драйверами), будут проблемы. Как и в устройстве. Вы не сможете различить кто вам информацию посылал. То, что идёт через EP0 можно отличить. Там в запросе N интерфейса присутствует.
|
|
|
|
|
Jul 19 2011, 19:00
|
Участник

Группа: Участник
Сообщений: 33
Регистрация: 15-11-08
Пользователь №: 41 658

|
Цитата(sergeeff @ Jul 19 2011, 22:52)  Все там ставится. Прописываете в *.inf к какому интерфесу относится драйвер и все путем. vid pid не нулевые, про это речь была. Проблема только при массовом выпуске.
|
|
|
|
|
Jul 19 2011, 19:10
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(sergeeff @ Jul 19 2011, 22:52)  Все там ставится. Прописываете в *.inf к какому интерфесу относится драйвер и все путем. Да, с записью в *.inf можно, я и забыл про такую возможность. Но тогда в режиме Plug and Play работать невозможно будет, а у нас это обязательным условием было. К тому же опять проблема с тем, что VID должен быть не равен 0. Кстати, а почему клавиатура и мышь разными устройствами? Насколько я помню, там их можно в один HID объединить. Только усаги у него соответствующие написать.
|
|
|
|
|
Jul 20 2011, 06:06
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(sergeeff @ Jul 20 2011, 00:10)  При массовом выпуске платишь около 400 евро и получаешь официальные vid и pid (не путать с правом посадить usb label. это на порядок дороже). Кто-нибудь у нас VID уже за такие деньги получил? Или это про перепродавцов, которые покупают VID и продают PIDы в розницу, речь? Так это чистый развод, т.к. ничего официального в этом нет.
|
|
|
|
|
Jul 22 2011, 01:09
|
Участник

Группа: Участник
Сообщений: 33
Регистрация: 15-11-08
Пользователь №: 41 658

|
Цитата(Konst_777 @ Jul 19 2011, 20:36)  Попробуйте для Virt COM 3 использовать 1 in bulk + 1 out bulk. Переходник USB2.0 - RS232 (COM) VE024 имеет именно такую конфигурацию эндпоинтов. И работает. Вообщем использовал самый простой вариант, т.е. Virt COM = 1 in bulk + 1 out bulk. Причем InterruptIn не убрал из описания, а просто посадил на несуществующую конечную точку. Все пашет ОК. Всем спасибо, хоть дискусия ушла к vid|pid=)
Сообщение отредактировал pil - Jul 22 2011, 06:28
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|