2013-08-08 2 views
3

UPDATE 2:Android USB Host API - как найти драйвер для USB (Prolific) связи

я испытал с чипом FTDI путем замыкания его в и из контактов. controlTransfer() всегда возвращает 0, bulkTransfer() - Write возвращает длину отправленных данных и bulkTransfer() - Read возвращает любые данные.

Кто-нибудь знает Как найти драйвер для Prolific?



UPDATE 1:

Я сделал еще несколько тестов с Slick USB 2, и я думаю, что я нашел мою проблему. Похоже, что мне не хватает какого-то драйвера, из-за которого связь не работает.

Я подключаю свою плату к Slick USB 2, а затем попытался подключиться с помощью своего приложения, и оно напечатало «открытое устройство и требует: false, file = 45, test = null». Я снова попытался, и связь начала работать. Я мог писать и читать данные, как ожидалось. Кроме того, когда я снова подключил кабель, связь перестала работать.

Я думаю, Slick USB 2 устанавливает драйвер, необходимый для связи.

Кто-нибудь знает, где и как я могу найти этот драйвер?



Я хочу, чтобы мой Android устройство (Galaxy Tab 2.0 7" , версия 4.0.3) для связи с пользовательской платы. Для этого я использую OTG кабель + USB-последовательный преобразователь (Prolific) .

Я проверил связь с Slick USB 2 приложения и все работает, как ожидалось.

Теперь я пытаюсь создать свою собственную программу, используя USB Host API. Я добавил пристальный фильтр и при подключении мой совет, он также распознается. Я использую приведенный ниже код:

UsbDevice usbDevice; // contains device from intent-filter 
Context context;  // activity object 

UsbManager manager = (UsbManager) context.getSystemService(Context.USB_SERVICE); 
Toast.makeText(context, "usb device perm: " + manager.hasPermission(usbDevice), Toast.LENGTH_LONG).show(); 

UsbInterface interfaceUsb = usbDevice.getInterface(0); 

UsbDeviceConnection connection = manager.openDevice(usbDevice); 
boolean resClaim = connection.claimInterface(interfaceUsb, true); 
Toast.makeText(context, "open device and claim: " + resClaim + ", file = " + connection.getFileDescriptor() + ", test = " + connection.getSerial(), Toast.LENGTH_LONG).show(); 
// Prints "open device and claim: true, file = 45, test = null" 

int result = connection.controlTransfer(0x40, 0x03, 0x0034, 0, null, 0, 0); // set baudrate 57600 

Toast.makeText(context, "result: " + result, Toast.LENGTH_LONG).show();  // returns -1 

int resultWrite = connection.bulkTransfer(endpointUsbWrite, new byte[]{'a'}, 1, 1000); 
byte[] bytesRead = new byte[64]; 
int resultRead = connection.bulkTransfer(endpointUsbRead, bytesRead, bytesRead.length, 1000); 
// resultWrite returns 1, resultRead returns -1 

controlTransfer() всегда возвращает -1. Я также пробовал bulkTransfer() - write и возвращает длину отправленных данных, но плата НЕ принимает никаких данных. bulkTransfer() - read возвращает -1

Я проверил, где я подключил свою доску к моему приложению и попытался подключиться к Slick USB 2, а Slick USB 2 смог подключиться к моей плате - это действительно не должно работать. Я думаю, что я не могу правильно открыть устройство.

Что мне здесь не хватает? Я проверил несколько потоков, но не смог решить проблему. Может кто-нибудь предложить что-нибудь?

+0

Можете ли вы разместить код, в котором вы пробовали bulktransfer? Трудно догадаться об этом без дополнительного контекста. – sarwar

+0

@sarwar Я обновил свой код – user427969

+0

Предполагая, что вы получили конечные точки, мне нечего добавить помимо этого; У меня никогда не было правильного целочисленного значения чтения или записи массового переноса. Никогда. Я понятия не имею, почему, и теперь я этому не верю. Удачи. Проверьте документы для своего устройства, посмотрите еще раз, есть ли у кого-нибудь рабочий код для Android в любом месте в Google; если нет, выпейте пиво и начните завтра. – sarwar

ответ

0

Prolific разработал Android SDK для PL2303. Вы можете скачать и попробуйте: https://play.google.com/store/apps/details?id=tw.com.prolific.app.pl2303terminal

Вы также можете получить поддержку официального сайта Prolific.

+0

Спасибо, я уже пробовал свое приложение, но оно не распознает мои кабели. – user427969

+0

Это может быть проблема USBHost API. USBHost API - это общий API-интерфейс USB Host. Но может не поддерживаться для всех устройств. –

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