Перейти к содержанию
    

USB HID-совместимое устройство

Здравствуйте.

Передо мной встала задача связаться с неким USB HID-совместимым устройством (АБП с интерфейсом USB). В качестве хоста я использую плату VNCLO-MB1A (Vinculum-II). Для получения команд я воспользовался программным сниффером, скриншоты которого прилагаются.

Исходя из полученной информации, я посылаю следующие запросы:

80 06 01 03 09 04 FE 01 - приходит ответ 12 03 55 00 53 00 42 00 20 00 43 00 61 00 72 00 64 00 (все соответствует случаю, когда в качестве хоста выступает ПК);

80 06 00 03 09 04 FE 01 - приходит ответ 04 03 09 04 (все соответствует случаю, когда в качестве хоста выступает ПК);

21 09 00 02 00 00 20 00 + 51 34 0D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00. В данном случае АБП должен передать некоторую информацию, но он не отвечает. В терминале (подключенном к плате VNCLO-MB1A) приходит сообщение, что команда "прошла", но тут же что USB-устройство отключено, затем сразу снова подключено.

C USB я до этого не работал, может что делаю неправильно. Буду благодарен за любые советы.

post-40363-1319520437_thumb.png

post-40363-1319520450_thumb.png

post-40363-1319520461_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как я понял запрос 51 34 0D... (см. изображения в предыдущем посте) идет на конечную точку №0, а ответ надо считать с конечной точки №81 (см. там же).

Собственно вопрос в том, какие управляющие ?репорты? нужно послать на устройство, чтобы считать готовые там данные.

Как писал выше, ранее я с USB не работал, отсюда вся неясность происходящего. Сейчас разбираюсь с документацией, но с парой подсказок начать было бы проще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Переформулирую вопрос более обще.

Каким образом произвести опрос конечной точки INTERRUPT IN USB-HID устройства? Обмен с нулевой конечной точкой у меня проходит.

 

Уважаемые пользователи форума. Кто пользуется аппаратным usb-сниффером (типа USB Explorer 200)?

Я столкнулся с необходимостью анализа обмена usb-hid устройства с ПК. Если есть возможность, арендую на денек, или (предпочтительно) подъеду со своим устройством.

Встречал тему, в которой пользователь vmp помог с таким вопросом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Каким образом произвести опрос конечной точки INTERRUPT IN USB-HID устройства?

Самым обычным реадфиле. Вот только хэндл для креатфиле получить не так просто. По регистру нужно лазить, конечно, но несколько способов есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Самым обычным реадфиле...

Дело в том, что мне необходимо опросить hid-устройство не с ПК, а ReadFile, я так понимаю, функция на ПК?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тема еще актуальна.

В чем я продвинулся:

1. Повторил схему USB-анализатора, приведенную в журнале Радио 09-2009 (стр. 27-29).

2. Проследил за процессами нумерации моего HID-устройства (АБП) с ПК и с платы Vincolo.

3. Нумерация с платы Vincolo и НАЧАЛО нумерации с ПК совпадают. НАЧАЛО, т.к. все данные процесса нумерации с ПК в ОЗУ USB-анализатора не помещаются.

4. На запрос с ПК поступает ответ.

5. На запрос с платы Vincolo ответ НЕ поступает.

Вопросы к членам форума:

В прикрепленных файлах приведен обмен хостов (ПК и платы Vincolo) с USB-HID устройством.

Обмен ПК с USB-HID устройством:

После подтверждения приема запроса (строки 14A0-14C0) хост начинает опрашивать устройство (строки 14D0...1670), пока не начнет получать данные от устройства.

Обмен платы Vincolo с USB-HID устройством:

После подтверждения приема запроса (строки 1790-17B0) хост НЕ начинает опрашивать устройство, а вместо этого сбрасывает линию и повторяет весь процесс нумерации.

 

ВОПРОС. Почему плата Vincolo не начинает слать запросы типа 69 81? Может быть в незарегистрированном продолжении нумерации с ПК есть соответствующие команды для начала этого опроса?

 

P.S. Из описания к USB-анализатору: "Каждая строка – это пакет, переданный по шине. В начале выводится адрес, по которому строка была записана в ОЗУ. Он позволяет убедиться, что анализатор работает нормально, без пропусков информации, а также облегчает восприятие, являясь порядковым номером строки. Затем после двоеточия идут байты информации. Направление передачи невозможно определить аппаратно, но оно может быть определено из предыстории и по идентификатору пакета – это всегда первый байт в пакете и, соответственно, в строке. Собственно идентификатор (PID) – это 4 младших бита первого байта, 4 старших бита – это инверсное значение младших бит, они служат для контроля."

Т.е. как я определил из спецификации USB:

2D - Setup-пакет

C3 и 4B - пакеты Data 0 и Data 1, соответственно

D2 - ACK

5A - NAK

69 - IN-пакет

E1 - OUT-пакет

_______PC_host.doc

_______Vinculum_host.doc

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...