У нас есть несколько тегов ISO15693, которые мы использовали для чтения с помощью считывателя RFID. Сегодня я начал работать над примером приложения на Android для чтения тех же тегов, используя NfcV
с Android 6 (API 23).
Мне удалось прочитать некоторые данные из тега, но в данных есть неожиданные символы. Это код, который я использовал:
private void readTagData(Tag tag) throws Exception {
byte[] id = tag.getId();
String strTag = new String(id, "UTF-8");
boolean techFound = false;
for (String tech : tag.getTechList()) {
if (tech.equals(NfcV.class.getName())) {
techFound = true;
NfcV nfcvTag = NfcV.get(tag);
try {
nfcvTag.connect();
} catch (IOException e) {
Toast.makeText(this, "IO Exception", Toast.LENGTH_LONG).show();
return;
}
try {
int offset = 0;
int blocks = 19;
byte[] cmd = new byte[]{
(byte)0x60,
(byte)0x23,
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, // placeholder for tag UID
(byte)(offset & 0x0ff),
(byte)((blocks - 1) & 0x0ff)
};
System.arraycopy(id, 0, cmd, 2, 8);
byte[] response = nfcvTag.transceive(cmd);
response = Arrays.copyOfRange(response, 0, 96);
String strData = new String(response, "UTF-8");
mTextView.setText("TAG:" + strTag + " DATA:" + strData);
} catch (IOException e) {
Toast.makeText(this, "An error occurred while reading", Toast.LENGTH_SHORT).show();
return;
}
try {
nfcvTag.close();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "Unable to close the connection!", Toast.LENGTH_SHORT).show();
return;
}
}
}
}
Выход
Идентификатор тега (в кодировке UTF-8): {��WP�
Данные (в кодировке UTF-8): �2018�0011�8899�0002�0920�16���
Байты данных в шестнадцатеричном представлении:
0000316561640031 3233340035363738 0035303030003030 4231003233343500 3631383100353036 3400313630320032 3031360031363033 0032303136003136 3032003230313800 3030313100383839 3900303030320030 3932300031360000
Теперь часть этих данных верна, но я не уверен, почему там есть эти символы «�». Идентификатор тега также неверен.
Отдельно я попытался преобразовать байтовый массив «ответ» и идентификатор тега в шестнадцатеричную строку, а затем в ASCII с тем же результатом.