USB Host Mode на XOOM - проблемы со связью с устройством виртуального Com-порта CP2102 - PullRequest
1 голос
/ 20 июня 2011

Я пытаюсь написать приложение для 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 () (синхронный), возвращаемый буфер содержит недопустимые символы.

Вот что работает:

  1. намерение срабатывает при вставке и удалении USB-устройства
  2. приложение запускается, находит USB-устройство, соединения, интерфейсы, конечные точки и интерфейс заявок
  3. можно настроить CP2102, отправив USBDeviceConnection.controlTransfer () команды
  4. Символы успешно передаются на стороне UART CP2102 путем отправки данных в конечную точку выхода с помощью USBRequest.queue ().
  5. Отдельные символы (разделенные временными задержками), поступающие на стороне UART CP2102, успешно считываются из массовой передачи в конечной точке с использованием синхронных или асинхронных команд.

Проблемы возникают, когда я пытаюсь отправить персонажей подряд. Однако я отправляю данные только на скорости 9600 бод на стороне UART и не отправляю так много символов, чтобы заполнить буфер на CP2102.

Я использую Xoom в качестве источника питания для устройства. У меня такое же поведение на два разных XOOM. В качестве основного USB-кабеля я использую комплект для подключения камеры Motorola для MOTOROLA XOOM.

Может кто-нибудь дать мне указания, как заставить это работать? Или API хоста Honeycomb 3.1 USB на XOOM еще не очень стабилен?

1 Ответ

0 голосов
/ 26 февраля 2013

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

...