2016-07-20 5 views
7

the simple tutorial Я могу подключиться к устройству (оптическая мышь usb с чипом ADNS-5000 внутри) и сделать bulkTransfer.Как получить в Android Usb Host какие ответы устройства Usb после отправки хостом Host?

UsbInterface intf = device.getInterface(0); 
UsbEndpoint endpoint = intf.getEndpoint(0); 
UsbDeviceConnection connection = manager.openDevice(device); 
connection.claimInterface(intf, forceClaim); 
connection.bulkTransfer(endpoint, bytes, bytes.length, TIMEOUT); //do in another thread 

ADNS-5000 Спецификация (может быть гугле из) определяет некоторый набор "команд USB" среди которых есть, например:

Мнемоник: Get_Status_Device

Команда: 80 00 00 00 00 00 02 00

Примечания: Обычно возвращает 00 00, с автономным питанием 00 00, дистанционное будильником 02 00

Так что я понимаю, что это нравится: когда я пишу данные:

private byte[] bytes = {(byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00}; 

к устройству я должен получить либо 0x00, 0x00 или 0x00, 0x00(это, вероятно, ошибка в спецификации, как эта последовательность байт определяется как результат для двух разные статусы) или 0x20, 0x00 взамен, , но я ничего не вижу, как api возвращает что-нибудь, верно?

ответ

0

Я быстро рассмотрел спецификацию ADNS-5000. Одно можно сказать наверняка, у вас есть конечная точка IN и OUT.

Get_Status_Endpt0 82 00 00 00 хх 00 02 00 OUT: хх = 00, В: хх = 80 Обычно возвращается 00 00

Это означает, что команды (нет API) может возвращать результат.

Единственный способ, который я могу себе представить, это написать команду на конечную точку OUT и прочитать (путем опроса) состояние (после выполнения команды) с конечной точки IN.

Это то, что я использовал в нескольких проектах, и это прекрасно. Я не уверен в ADNS-5000, так как я не проверял данные протокола USB.

Надеюсь, это поможет.