Я пытаюсь поговорить с тегом ISO15693. Тип тега — TI HF-I Plus. Когда я запускаю команду Get System Info, команда выполняется нормально, и я получаю правильный ответ. Для большинства других команд, отправляемых в тег, фреймворк, похоже, не обрабатывает ответ должным образом. Исключение TAG LOST выдается для большинства других команд. Кто-нибудь успешно внедрил команды ISO15693 в Android?
Исходный код:
@Override
protected byte[] doInBackground(byte[]... params) {
NfcV mNfcVObject = NfcV.get(mTag);
byte[] mCommand = null;
switch(params[0][0]){
case ReadSingleBlock:
mCommand = new byte[]{0x02, 0x20, params[1][0]};
break;
case ReadMultipleBlocks:
mCommand = new byte[]{0x02, 0x23,params[1][0],params[2][0]};
break;
case WriteSingleBlock:
mCommand = new byte[]{0x42, 0x21, (byte)params[1][0],params[2][0],params[2][1],params[2][2],params[2][3]};
break;
case GetSystemInfo:
mCommand = new byte[]{0x00,(byte)0x2B};
break;
}
if (mNfcVObject != null) {
try {
mNfcVObject.connect();
} catch (IOException e) {
e.printStackTrace();
Log.e(LOG_TAG, e.toString());
}
if (mNfcVObject.isConnected()) {
int i = 0;
try {
mResponse = mNfcVObject.transceive(mCommand);
String responseString = FlomioNdefHelper.mBytesToHexString(mResponse);
Log.d(String.format(LOG_TAG + " Response %d", i), responseString);
} catch (IOException e) {
e.printStackTrace();
Log.e(LOG_TAG, e.toString());
}
try {
mNfcVObject.close();
} catch (IOException e) {
e.printStackTrace();
Log.e(LOG_TAG, e.toString());
}
}
}
return mResponse;
}
@Override
protected void onPostExecute(byte[] response) {
super.onPostExecute(response);
mOnCommandExecutedCallBack.onCommandExecuted(response);
return;
}