更新 2:
INピンとOUTピンを短絡して、FTDIチップでテストしました。はcontrolTransfer()
常に 0 をbulkTransfer() - Write
返し、送信されたデータの長さを bulkTransfer() - Read
返し、送信されたデータを返します。
Prolific のドライバーを見つける方法や場所を知っている人はいますか?
更新 1:
Slick USB 2 でさらにテストを行ったところ、問題が見つかったと思います。通信が機能していないためにドライバーが欠落しているようです。
ボードを Slick USB 2 に接続してから、アプリを使用して接続しようとすると、「open device and claim: 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 がボードに接続できたというテストを実行しましたが、これは実際には機能しないはずです。デバイスを正しく開くことができないと思います。
ここで何が欠けていますか?いくつかのスレッドを確認しましたが、問題を解決できませんでした。誰かが何か提案してもらえますか?