2014-11-08 3 views
0

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

해당 독자는 암호화되지 않았으므로 아마도 인코딩 문제 일 수 있습니다. 카드 데이터에 사용할 인코딩 유형을 확인하고 바이트 배열을 전달할 때 해당 인코딩을 사용하려면 판독기 설명서를 확인하십시오. 아래는 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(); 

    } 

} 
관련 문제