我正在尝试与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);
}
经过多次尝试,我找不到以用户可读格式获取数据的方法,下面是数据显示在日志中的方式。
有人可以告诉我如何将这些数据转换为用户可读的格式吗?
答案 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();
}
}