Тег чтения Android NfcV всегда предшествует 0x00

У меня возникла проблема с чтением метки NFC-V. Тип метки — Tag-it HF-I Plus (TMS37112). Вот код, который я использую для чтения данных:

private void GetTagInfo(Tag tag){
        String[] techList = tag.GetTechList();
        for (int i = 0; i < techList.Length; i++) {
            if(techList[i].Contains("NfcV")){
                NfcV nfcv = NfcV.Get (tag);
                nfcv.Connect ();

                var response = nfcv.Transceive(new byte[] {
                    (byte)0x00,
                    (byte)0x23,
                    (byte)0x00,
                    (byte)0x01 });
            }
        }
    }

Написание на С#, но не цель здесь (работа над Xamarin).

Независимо от того, что я использую в качестве номера первого блока, я получил 0x00 перед своими данными. Это нормально?


person Leze    schedule 28.10.2015    source источник
comment
После некоторого поиска я вижу здесь nfcapp В строке 370 в readSingleBlock и в строке 395 в readMultipleBlocks, чтобы он не читал первый байт. Это нормально?   -  person Leze    schedule 29.10.2015


Ответы (1)


То, что вы видите, это байт флагов. Этот байт является частью каждого кадра ответа NFC-V и предоставляет информацию о статусе команды. Если этот байт равен 0x00 (или, возможно, 0x80), то команда была выполнена успешно, а оставшиеся байты содержат параметры/данные ответа для вашей команды (в вашем случае один блок, начинающийся с нулевого блока, запрошенный командой READ MULTIPLE BLOCKS).

Если бит 0 байта флагов установлен, это указывает на ошибку выполнения, второй байт будет кодировать информацию об ошибке, как определено в стандарте ISO/IEC 15693-3.

Таким образом, типичный кадр команды NFC-V (при обмене с использованием NfcV.transceive()) выглядит следующим образом:

+-------+--------------+--------------------------------+-------------------------+
| FLAGS | COMMAND CODE | [ADDRESS, if Addressed_flag=1] | COMMAND PARAMETERS/DATA |
+-------+--------------+--------------------------------+-------------------------+

и кадр ответа выглядит так:

+-------+--------------------------+
| FLAGS | RESPONSE PARAMETERS/DATA |
+-------+--------------------------+
person Michael Roland    schedule 07.11.2015
comment
Большое спасибо за ваш ответ Михаил. Я некоторое время искал, чтобы получить документ для протокола nfc-v, чтобы проверить, является ли этот байт нормальным, я до сих пор не нашел его. Так что ваш ответ более чем ценен для меня. И ваша иллюстрация более чем явная. - person Leze; 09.11.2015