2013-08-08 2 views
3

업데이트 2 찾는 방법 : 나는 그것의 IN과 OUT 핀을 단락에 의해 FTDI 칩을 테스트 한안드로이드 USB 호스트 API - USB (다작) 통신을위한 드라이버

합니다. controlTransfer()은 항상 0을 반환하고 bulkTransfer() - Write은 전송 된 데이터의 길이를 반환하고 bulkTransfer() - Read은 전송 된 데이터를 반환합니다.

누구나 알고 있습니까 어떻게 또는 어디서 Prolific 용 드라이버를 찾을 수 있습니까?



UPDATE 1 :

나는 슬릭 USB 2 좀 더 테스트를했고, 나는 내 문제를 발견했다 생각합니다. 나는 통신이 작동하지 않기 때문에 어떤 드라이버가 누락 된 것 같습니다.

내 보드를 Slick USB 2에 연결 한 다음 내 응용 프로그램을 사용하여 연결을 시도하면 "열린 장치 및 클레임 : 거짓, 파일 = 45, 테스트 = null"이 인쇄되었습니다. 나는 다시 시도했고 의사 소통이 시작되었습니다. 예상대로 데이터를 쓰고 읽을 수있었습니다. 또한 케이블을 다시 연결하면 통신이 중단되었습니다.

Slick USB 2는 통신에 필요한 드라이버를 설치하려고합니다.

어디에서 어떻게 드라이버를 찾을 수 있습니까?



내가 맞춤형 보드와 통신하기 위해 Android 기기 (갤럭시 탭 2.0 7 ", 버전 4.0.3)합니다.이를 위해, 나는 시리얼 컨버터 OTG 케이블 + USB를 사용하고 (다작) .

내가 기대 작품으로 슬릭 USB 2 응용 프로그램 및 모든과의 통신을 테스트했습니다.

을 지금, 나는 내가 의도 필터를 추가했습니다. USB 호스트 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

엔드 포인트가 올바르다 고 가정하면이 외에도 많은 것을 추가 할 필요가 없습니다. 필자는 벌크 전송의 정수 값을 읽거나 쓸 때가 없었습니다. 못. 나는 왜 그것을 믿지 않는지 전혀 모른다. 행운을 빕니다. 기기의 문서를 확인하고, Google에서 안드로이드에 대한 작동 코드가있는 사용자가 있는지 다시 살펴보십시오. 그렇지 않으면 맥주를 마시고 내일 다시 시작하십시오. – sarwar

답변

0

Prolific은 PL2303 용 Android SDK를 개발했습니다. 다음에서 다운로드하여 시도 할 수 있습니다 : https://play.google.com/store/apps/details?id=tw.com.prolific.app.pl2303terminal

또한 Prolific의 공식 웹 사이트에서 지원을받을 수도 있습니다.

+0

감사합니다. 이미 앱을 사용해 보았지만 케이블을 인식하지 못했습니다. – user427969

+0

USBHost API의 문제 일 수 있습니다. USBHost API는 일반적인 USB 호스트 함수 API입니다. 그러나 모든 장치에서 지원되지 않을 수 있습니다. –

관련 문제