Из Вашего описания так-таки и не понятно какие именно >все эти запросы почему-то проходят не с первого раза, а с 3-го, 4-го. Если имеется ввиду, что на один pidSetUp Вы посылаете 3..4 pidIN, то все нормально, т.к.: >token IN пакет со стороны хоста - Давай >NACK со стороны устройства - Не готов! >token IN пакет со стороны хоста - Давай >NACK со стороны устройства - Не готов! . .так несколько раз . >token IN пакет со стороны хоста - Давай >data пакет со стороны устройства (в этом пакете ....) - Получи и отстань!
Если же Вы всю транзакцию целиком (SetUp и за ним куча In-ов) вынуждены повторять по 4..3 раза, то почему умалчиваете о том, чем завершаются неуспешные?
Теперь по поводу String-ов. Не пойму зачем Вам понадобились "Наименование изготовителя" и "Наименование продукта", ведь для нормальной работы они не нужны. Кроме того "Наименование продукта" Вы все равно получите в ответ на Bulk-Only команду INQUIRY. Скорее всего это чисто спортивный интерес. Ну да в конце концов это Ваше дело. Посмотрим как это делает WinXP: SanDisk Cruzer Mini Запрос - 80 06 00 03 00 00 02 00 - Определить длину строки с LANGID Ответ - 04 03 Запрос - 80 06 00 03 00 00 04 00 - Запрос строки с LANGID Ответ - 04 03 09 04 - ID языка Запрос - 80 06 03 03 09 04 02 00 - Определить длину строки с серийным номером Ответ - 2A 03 Запрос - 80 06 03 03 09 04 2A 00 - Запрос строки с серийным номером Ответ - 2A 03 53 00 4E 00 ..... - 2Ah байт - 'SNDK4108742C43B00106'
Generic USB Flash Disk 2.00 Запрос - 80 06 00 03 00 00 02 00 - Определить длину строки с LANGID Ответ - 04 03 Запрос - 80 06 00 03 00 00 04 00 - Запрос строки с LANGID Ответ - 04 03 09 04 - ID языка Запрос - 80 06 03 03 09 04 02 00 - Определить длину строки с серийным номером Ответ - 22 03 Запрос - 80 06 03 03 09 04 22 00 - Запрос строки с серийным номером Ответ - 22 03 31 00 30 00 ..... - 22h байт - '106C113CE5E30CB5' Аналогично на других флэшках. Короче. Вы упомянули, что отправляли "запрос массива кодов LANGID", но не понятно используете ли ID языка в запросах строк с индексом отличным от нуля? Если нет, то как раз в этом и проблема.
Удачи! P.S. Поскольку задачи у нас судя по всему очень похожие, очень интересно, как у Вас заработает Bulk-Only, которого Вам все равно не миновать.
|