нужна дополнительная информация о UsbDeviceConnection.bulkTransfer в режиме USB-хоста на Android - PullRequest
1 голос
/ 20 декабря 2011

Я пытаюсь заставить массовый перенос работать в режиме хоста USB, но справочные документы не очень хорошо объясняют это.

При вызове

bufferTmpLen = mDeviceConnection.bulkTransfer(mEPIN,
        bufferTmp, 4096, TIMEOUT_MS);
  1. почему реальныйданные всегда начинаются на 2 байта позже в индексе 2, что представлено в индексах 0 и 1?Это всегда так?
  2. что действительно делает параметр TIMEOUT_MS?Я попытался установить его на 5000, но метод не ждал 5 секунд, чтобы прочитать данные.Данные, появившиеся примерно через 1 секунду, не были прочитаны.Так как заставить его принимать все данные, полученные в течение определенного времени?
  3. Продолжает ли код выполняться в течение периода TIMEOUT?Так, например, TIMEOUT = 5000, выполняются ли последующие операторы через 5 секунд или сразу после строки bulkTransfer?

Я действительно смущен, что такая важная информация об этом методе нигде не описана.

Пожалуйста, дайте мне знать, если есть лучший источник, чем стандартная ссылка.

Большое спасибо!

1 Ответ

5 голосов
/ 11 января 2012

Тайм-аут - это максимальное время ожидания ответа перед тем, как сдаться. Если ответ приходит раньше, метод завершается раньше. Вы можете получить менее 4096 байт. В худшем случае, пять секунд, в течение которых ваш поток заблокирован, и, наконец, метод возвращает -1, чтобы указать на сбой.

Что касается первых двух байтов, в них нет ничего особенного. Это зависит только от особенностей того, что устройство выбирает для связи через эту конечную точку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...