0

私の質問が奇妙ではないことを願っていますが、Android端末(現在はSamsung Galaxy S2ですが、変更される可能性があります)と組み込みLinuxベースのカード(armadeus apf51-devですが、おそらくラズベリー)間のダイアログに関するプロジェクトを開始しました将来的には pi)。実は、Android 端末に、Linux 内蔵カードからワイヤレス接続で送信された速度を表示するアプリケーションがあります。主な目的は、この wifi 接続を USB 接続で変更することです。私の主な問題は、パイプのアンドロイド側を実装することです。FabianCook ( Transferring data USB ) でこの回答を見つけました:

UsbDevice dev = sDevice;
        if (dev == null)
            return;
        UsbManager usbm = (UsbManager) getSystemService(USB_SERVICE);
        UsbDeviceConnection conn = usbm.openDevice(dev);
        l("Interface Count: " + dev.getInterfaceCount());
        l("Using "
                + String.format("%04X:%04X", sDevice.getVendorId(),
                        sDevice.getProductId()));

        if (!conn.claimInterface(dev.getInterface(0), true))
            return;

        conn.controlTransfer(0x40, 0, 0, 0, null, 0, 0);// reset
                                                        // mConnection.controlTransfer(0×40,
                                                        // 0, 1, 0, null, 0,
                                                        // 0);//clear Rx
        conn.controlTransfer(0x40, 0, 2, 0, null, 0, 0);// clear Tx
        conn.controlTransfer(0x40, 0x02, 0x0000, 0, null, 0, 0);// flow
                                                                // control
                                                                // none
        conn.controlTransfer(0x40, 0x03, 0x0034, 0, null, 0, 0);// baudrate
                                                                // 57600
        conn.controlTransfer(0x40, 0x04, 0x0008, 0, null, 0, 0);// data bit
                                                                // 8, parity
                                                                // none,
                                                                // stop bit
                                                                // 1, tx off

        UsbEndpoint epIN = null;
        UsbEndpoint epOUT = null;

        byte counter = 0;

        UsbInterface usbIf = dev.getInterface(0);
        for (int i = 0; i < usbIf.getEndpointCount(); i++) {
            l("EP: "
                    + String.format("0x%02X", usbIf.getEndpoint(i)
                            .getAddress()));
            if (usbIf.getEndpoint(i).getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) {
                l("Bulk Endpoint");
                if (usbIf.getEndpoint(i).getDirection() == UsbConstants.USB_DIR_IN)
                    epIN = usbIf.getEndpoint(i);
                else
                    epOUT = usbIf.getEndpoint(i);
            } else {
                l("Not Bulk");
            }
        }

これは非常に役に立ちますが、「sDevice」変数 (1 行目) が何であるかがわかりません。UsbDevice クラスのインスタンスだと思いますが、この変数がどのようにインスタンス化されるのかわかりません。多分誰かが私に良い方法を示すことができますか?

4

1 に答える 1

0

私には、ここで利用できるように別の場所に割り当てられているように見えsDeviceますが、元の割り当ては元のスレッドのサンプル コードにはありません。インスタンス化された場所はわかりませんが、単にいくつかを表す必要があります。接続されているデバイスをUsbDeviceオブジェクトとして表示します。

sDevice関数UsbManagerを使用して接続されたデバイスのリストを取得できる場所から発生したでしょうgetDeviceList()

http://developer.android.com/reference/android/hardware/usb/UsbManager.html#getDeviceList()

于 2013-10-29T18:27:00.900 に答える