0

USBホストとして機能する Nexus 7を使用して、USB アクセサリ(磁気ストリップ カード リーダー、モデル - E-Seek M250)と通信しようとしています。

ユースケース:カードがスワイプされたとき、カードから詳細を取得し、それをユーザーが読み取り可能な形式に変換する必要があります。

デバイス、そのインターフェイス、および入力エンドポイントを正常に取得できました。その後、これは私がデータを取得するために行っていることです:

int receivedBytes = mConnection.bulkTransfer(usbEndpointIN, readBytes, readBytes.length, 3000);
if (receivedBytes > 2) {
    dataString = new String(readBytes);
    Log.v(Util.TAG, " :: Received Byte Count ::" + receivedBytes);
    Log.v(Util.TAG, " :: Final Value Bytes" + readBytes);
    Log.v(Util.TAG, " :: Final Value String" + dataString);
}

何度か試行した後、ユーザーが読み取り可能な形式でデータを取得する方法を見つけることができませんでした。以下は、データがログに表示される方法です。

ログ

このデータをユーザーが読める形式に変換する方法を誰か教えてもらえますか?

4

1 に答える 1

1

そのリーダーは暗号化されていないため、おそらくエンコードの問題です。リーダーのドキュメントをチェックして、カード データに使用するエンコーディングの種類を確認し、バイト配列を渡すときにそのエンコーディングを使用します。以下は、UTF-8 を使用した場合の例です。

int receivedBytes = mConnection.bulkTransfer(usbEndpointIN, readBytes, readBytes.length, 3000);
if (receivedBytes > 2) {
    String dataString = null;
    Log.v(Util.TAG, " :: Received Byte Count ::" + receivedBytes);
    Log.v(Util.TAG, " :: Final Value Bytes" + readBytes);

    try {

        dataString = new String( readBytes, "UTF-8");
        Log.v(Util.TAG, " :: Final Value String" + dataString);

    } catch (UnsupportedEncodingException e) {

        e.printStackTrace();

    }   

}
于 2014-11-10T16:08:49.793 に答える