2011-06-20 7 views
1

新しいAndroidホストUSBを使用してAndroidバージョン3.1(Motorola XoomのHMJ37を構築)でUSBホストモードを使用してAndroidアプリケーションを作成しようとしていますSilicon Labs CP2102仮想COMポートインターフェイス(USBからシリアルブリッジ)を使用するデバイスでUSB経由で通信するためのAPI。私はAndroid開発者のサイトのAdbTestアプリケーションの例をガイドラインとして使用しています。XOOMのUSBホストモード - CP2102 Virtual Comポートデバイスとの通信に問題があります

CP2102のUART側で送信された文字の読み込みに問題があります。 1バイトのバルク転送はうまく動作しますが、1バイト以上のデータを要求する場合は正しく動作しません。 USBDeviceConnection.controlTransfer()を使用してGET_COMM_STATUSコマンドを送信し、CP2102のInQueueバッファに文字があることを確認できるため、データがそこにあることがわかります。ただし、USBRequest.queue()(非同期)またはSBDeviceConnection.bulkTransfer()(同期)関数を使用してIn Endpointから複数のバイトを要求すると、返されるバッファに無効な文字が含まれます。

は、ここでの作業を行うものです:USBデバイス

  • アプリケーションが起動の挿入や削除の際に

    1. 意図火災、USBデバイス、接続、インターフェース、エンドポイント、および特許請求の範囲のインターフェース
    2. はCP2102を設定することができます見つけますUSBDeviceConnection.controlTransfer()を送信することによって コマンド
    3. キャラクタは、USBエンドポイントにUSBRequest.queue()を使用してデータを送信することによって、CP2102のUART側から正常に送信されます。
    4. CP2102のUART側に来る1文字(時間遅延で区切られた文字)は、同期コマンドまたは非同期コマンドのいずれかを使用して、バルク転送In Endpointから正常に読み取られます。

    文字をストリークで送信しようとすると問題が発生します。しかし、私はUART側で9600ボーでしかデータを送信していないので、CP2102上のバッファを埋めるほど多くの文字を送信していません。

    私はデバイスの電源としてXoomを使用しています。私は 2つの異なるXOOMで同じ動作をします。私はMOTOROLA XOOMのMotorola Camera Connection KitをUSBホストケーブルとして使用しています。

    誰でも私にこの作品を作る方法に関するガイドラインを教えてもらえますか?または、XOOM上のHoneycomb 3.1 USBホストAPIがまだ本当に安定していないのですか?

  • 答えて

    0

    返されたバイト数を確認して、実際の返されたデータより多くのデータをバッファから消費しないようにしてください。 また、複数のスレッドがバッファにアクセスしているかどうかを確認します。バッファへのアクセスが適切に同期されていないと、返されたデータが破損する可能性があります。

    関連する問題