Я пытаюсь написать приложение для Android, используя хост-режим USB на Motorola Xoom с Android версии 3.1 (сборка HMJ37), используя новые API-интерфейсы USB хоста Android для связи через USB с устройством, которое использует виртуальный COM-интерфейс Silicon Labs CP2102. Интерфейс порта (USB для последовательного моста). В качестве руководства я использовал пример приложения AdbTest с сайта разработчика Android.
У меня возникли проблемы с чтением символов, отправленных на стороне UART CP2102. Однобайтовые массовые передачи работают нормально, но нет, если я запрашиваю более 1 байта данных. Я знаю, что данные есть, потому что я могу отправить команду GET_COMM_STATUS с помощью USBDeviceConnection.controlTransfer () и посмотреть, что в буфере InQueue на CP2102 есть символы. Однако, когда я запрашиваю более одного байта из конечной точки In либо с помощью функций USBRequest.queue () (асинхронный) или SBDeviceConnection.bulkTransfer () (синхронный), возвращаемый буфер содержит недопустимые символы.
Вот что работает:
- намерение срабатывает при вставке и удалении USB-устройства
- приложение запускается, находит USB-устройство, соединения, интерфейсы, конечные точки и интерфейс заявок
- можно настроить CP2102, отправив USBDeviceConnection.controlTransfer ()
команды
- Символы успешно передаются на стороне UART CP2102 путем отправки данных в конечную точку выхода с помощью USBRequest.queue ().
- Отдельные символы (разделенные временными задержками), поступающие на стороне UART CP2102, успешно считываются из массовой передачи в конечной точке с использованием синхронных или асинхронных команд.
Проблемы возникают, когда я пытаюсь отправить персонажей подряд. Однако я отправляю данные только на скорости 9600 бод на стороне UART и не отправляю так много символов, чтобы заполнить буфер на CP2102.
Я использую Xoom в качестве источника питания для устройства. У меня такое же поведение на
два разных XOOM. В качестве основного USB-кабеля я использую комплект для подключения камеры Motorola для MOTOROLA XOOM.
Может кто-нибудь дать мне указания, как заставить это работать? Или API хоста Honeycomb 3.1 USB на XOOM еще не очень стабилен?