Tôi cố gắng để đọc một thẻ ISO15693 RFID với thư viện android nfc:Android NFC đọc ISO15693 RFID Tag
Dưới đây là thông tin thêm về các Tag: http://img42.com/gw07d+
Các ID thẻ được đọc một cách chính xác nhưng dữ liệu trong thẻ thì không.
onCreate
Phương pháp:
// initialize NFC
nfcAdapter = NfcAdapter.getDefaultAdapter(this);
nfcPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, this.getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
onNewIntent
phương pháp:
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction()) || NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) {
currentTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
byte[] id = currentTag.getId();
Tag_data_TextDisplay.setText("TagId:" + Common.getHexString(id));
for (String tech : currentTag.getTechList()) {
if (tech.equals(NfcV.class.getName())) {
NfcV nfcvTag = NfcV.get(currentTag);
try {
nfcvTag.connect();
txtType.setText("Hello NFC!");
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "Could not open a connection!", Toast.LENGTH_SHORT).show();
return;
}
try {
byte[] cmd = new byte[]{
(byte) 0x00, // Flags
(byte) 0x23, // Command: Read multiple blocks
(byte) 0x00, // First block (offset)
(byte) 0x04 // Number of blocks
};
byte[] userdata = nfcvTag.transceive(cmd);
userdata = Arrays.copyOfRange(userdata, 0, 32);
txtWrite.setText("DATA:" + Common.getHexString(userdata));
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "An error occurred while reading!", Toast.LENGTH_SHORT).show();
return;
}
}
}
}
userdata
là chứa một byte đơn có giá trị 0x02
({ 0x02 }
) ngay sau khi phương pháp Transceive xong.
và nó nên đọc gì? –
@RandykaYudhistira Nơi tôi đọc thẻ http://img42.com/mHBPa+ – yoshgoodman
Sẽ hữu ích nếu bạn có thể cho chúng ta biết kết quả thực tế của 'nfcvTag.transceive (cmd);' (không có đệm tới 32 byte). Hơn nữa, bạn có thể chắc chắn rằng mảng byte của bạn để chuyển đổi hex padds mỗi byte đến hai chữ số hex (nếu không nó sẽ rất khó để giải thích giá trị). –