0

我正在尝试与 USB 附件(磁条读卡器,Model-E-Seek M250)通信,Nexus 7 充当 USBHost。

用例:刷卡时,我需要从卡中获取详细信息并将其转换为用户可读的格式。

我已经能够成功获取设备、它的接口和输入端点。之后,这就是我为获取数据所做的事情:

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 回答