从读卡器解码数据

时间:2014-11-08 09:13:13

标签: android cardreader magnetic-cards android-usb

我正在尝试与USB附件(磁条读卡器,型号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);
}

经过多次尝试,我找不到以用户可读格式获取数据的方法,下面是数据显示在日志中的方式。

logs

有人可以告诉我如何将这些数据转换为用户可读的格式吗?

1 个答案:

答案 0 :(得分: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();

    }   

}