Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Конфигурация USB
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам
Troll
Добрый день.

В структуре "Device descriptor", которая описывает USB устройство, есть поля "iManufacturer" и "iProduct", которые указывают на строки описывающие производителя и устройство.

Для того, чтобы использовать описания, полям присваиваются значения отличные от нуля.

Вопрос в следующем, каким образом осуществляется связь строки со структурой "Device descriptor".

Спасибо.
aaarrr
Цитата(Troll @ Sep 26 2008, 10:57) *
Вопрос в следующем, каким образом осуществляется связь строки со структурой "Device descriptor".

В Device Descriptor указывается номер строки. На запрос хоста GET_DESCRIPTOR STRING с этим номером возвращаете нужную строку.
Troll
Цитата(aaarrr @ Sep 26 2008, 10:03) *
В Device Descriptor указывается номер строки. На запрос хоста GET_DESCRIPTOR STRING с этим номером возвращаете нужную строку.


Если правильно понял:
GET_DESCRIPTOR - bRequest = 0x06, bmRequestType = 0x80
А значение wValue - в младшем байте = iManufacturer, в старшем байте = 0x03 (тип дескриптора строки)
И в ответ на этот запрос передавать строку (в нужном формате)? Все правильно?
aaarrr
Да, запрос будет вида:
Код
0x80 0x06 <STR IDX> 0x03


Вернуть нужно строку в виде дескриптора.
Troll
Чего-то я не понимаю.

0x01, // iManufacturer
0x02, // iProduct
0x03, // SerialNumber

В параметре wValue от хоста должны последовательно приходить значения 0х01 0х03, 0х02 0х03, 0х03 0х03 () на чтение этих строк. А приходит 3 раза запрос 0х00, 0х03.

Что может быть не так?

PS: использую Atmel контроллер и за основу взят пример BasicUSB.
aaarrr
Цитата(Troll @ Sep 26 2008, 14:53) *
А приходит 3 раза запрос 0х00, 0х03.

Это хост просит LangID (индекс = 0).

Цитата
String index zero for all languages returns a string descriptor that contains an array of two-byte LANGID codes supported by the device.
Troll
Добавил обработку кода 0x00,0x03

Отправляю данные const char LangID[] = {0x04,0x09};

Все равно он только язык и запрашивает. От значений параметров языка, что-нибудь зависит?
aaarrr
Цитата(Troll @ Sep 26 2008, 15:38) *
Отправляю данные const char LangID[] = {0x04,0x09};

Для English (United States) должно быть 0x09, 0x04, т.е. полный пакет 0x04, 0x03, 0x09, 0x04.

Цитата(Troll @ Sep 26 2008, 15:38) *
От значений параметров языка, что-нибудь зависит?

Весьма вероятно.
addi
Вот здесь можно про ето почитать:
http://lord-n.narod.ru/download/books/wall...a.OCR.part1.rar
http://lord-n.narod.ru/download/books/wall...a.OCR.part2.rar
Troll
Цитата(aaarrr @ Sep 26 2008, 14:48) *
Для English (United States) должно быть 0x09, 0x04, т.е. полный пакет 0x04, 0x03, 0x09, 0x04.


Точно. a14.gif Под вечер запарился и забыл что нужен еще и заголовок.

aaarrr, спасибо большое за помощь.

To addi, спасибо читал. Сейчас моя "настольная книга".
Troll
Цитата(Troll @ Sep 26 2008, 14:38) *
От значений параметров языка, что-нибудь зависит?


Да, точно зависит. При значениях отличных от 0х09, 0х04 данные не запрашиваются.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.