2013-03-22 2 views
5

В настоящее время я работаю над проектом, который требует режима Usb Host в Android (с использованием 4.2.2). Мне нужно иметь возможность выполнять стандартные операции с файлами, такие как листинг файлов и чтение с USB-накопителя. Используя документацию в режиме хоста, я дошел до того, что смог обнаружить, что накопитель подключен, является запоминающим устройством USB и находит различные конечные точки.Android USB OTG Чтение диска Usb

Где я застрял, что делать после этого. Наверное, я не понимаю разницы между контрольными и массовыми передачами или в случае контрольных передач, что действительно происходит. К сожалению, мои знания о USB-интерфейсе несколько ограничены, и я слышал, что документация довольно сложная.

Может ли кто-нибудь помочь мне помочь или указать на рабочий пример, что мне нужно сделать, чтобы по существу «установить» USB-накопитель? Как я уже говорил ранее, мне просто нужны эти файловые операции с листинговыми файлами и их чтение, а не запись. Я должен также упомянуть, что целевой телефон - Galaxy Nexus от Samsung.

Благодаря

+0

Если бы я решил заняться этим, я бы, вероятно, начал с кода, предназначенного для доступа к запоминающему устройству USB, подключенному к небольшой встроенной системе с открытым металлическим элементом, поскольку это может быть более чисто переносимым, чем операционная система код файловой системы. Есть, конечно, опубликованные приложения, которые это делают, но я не знаю ни одного открытого источника. –

+0

Я знаю, что есть приложения, которые могут это сделать, но, как вы сказали, я не могу найти никаких открытых исходных текстов. Например, на моем Galaxy S3, который не является целевым телефоном для этого проекта, мне не нужно ничего делать, только подключайте его, и он работает. Есть ли у вас примеры того, что вы предлагаете? – echaney

ответ

0

управления конечной точки (обычно) используется для отправки команд на USB-устройства.
Основная конечная точка (обычно) используется для передачи данных на USB-устройство.

Наверх Структура данных не определена.
, но при управлении передается структура данных.
хост отправляет 8-байтовый пакет, содержащий информацию о команде (например, идентификатор запроса, параметры команды, длину передачи данных на этапе передачи данных и т. Д.). и затем, при необходимости, некоторые данные принимаются/отправляются, и, наконец, как хост/устройство соглашается на успех команды, перейдя на этап состояния. это оно!
но, черты в деталях, см. Спецификацию usb. :)


всех USB память (pendrives, карты памяти, жесткие диски) работает на классе запоминающих устройств USB.

Используя класс массовой памяти, вы можете выполнять чтение и запись памяти, но файловая система (например: EXT3, FAT ...), помимо нее, нуждается в другом драйвере.

так, по существу, для чтения/записи файла. вам необходимо подключить к устройству:

  1. подключения к устройству (как вы сделали это)
  2. идентифицировать и взять под свой контроль через интерфейс запоминающего устройства
  3. написать драйвер Класс хранения массы
  4. записи файловой системы драйвер, который будет читать/записывать файлы с использованием драйвера класса массовой памяти
  5. используйте драйвер файловой системы api в вашем проекте.

написать драйвер класса массовой памяти, вы должны прочитать спецификацию USB Mass CLAs хранения http://www.usb.org/developers/docs/devclass_docs/ и probebly вы ищете Bulk only

, а затем обратитесь к файловой системе (ы) вы ориентируетесь для там конструкция и спецификация.(Если таковые имеются)


AFAIK, Android имеет файловую систему монтажа объект подключен к USB, так что вы probebly изобретать колесо.


экстра-примечание:
некоторые файловая система открыто не документированы (хотя обратная информация Engg probely существует) (например: NTFS)
и некоторые файловая система является (частично) запатентовано. (например: FAT)

Смежные вопросы