2015-12-08 5 views
2

Я использую MFRC522 в качестве считывателя, в то время как Sony C4 выполняет образец Google HCE. Читатель посылает кадр 1:Как обрабатывать S-блок, полученный считывателем?

02 00 A4 04 00 07 F0 01 02 03 04 05 06 crc1 crc2 

Тогда читатель получает кадр 2:

f2 08 50 dd 

Я думаю, это может быть S-блок или WTX.

Однако журнал приложения HCE показывает:

получил APDU 00 A4 04 00 07 F0 01 02 03 04 05 06

отправки номер счета номер 123456

Даже если читатель посылает кадр 1 снова и снова, я всегда получить тот же кадр 2, почему?

+0

извините, у меня была опечатка .... apdu1 is 02 00 A4 04 00 07 F0 01 02 03 04 05 06 crc1 crc2 и журнал показывает 00 A4 04 00 07 F0 01 02 03 04 05 06. – jorgewang168

+0

извините, MFRC522 является правильным. – jorgewang168

ответ

1

f2 08 50 dd представляет собой S-блок указывает на расширение времени ожидания (WTX):

  • PCB = f2:
    • бит '11' = 8..7: S-блок
    • Бит 6..5 = '11': S (WTX)
  • INF = 08:
    • WTXM = 8
  • ДХЭ = 50 dd

Если читатель получает S (WTX) запрос с карты, он должен признать этот запрос, отвечая с S (WTX) кадр , Таким образом, вы можете, например, отправить тот же S (WTX) кадр обратно на карту.

Поскольку обработка HCE обычно довольно медленная, нередко обмениваться несколькими кадрами S (WTX), прежде чем вы действительно получите какие-либо данные ответа для APDU.

+0

спасибо, это очень помогает. – jorgewang168

+0

Когда считыватель отправляет тот же кадр S (WTX) обратно на карточку, только ответы на карту 02 90 00 crc1 crc2. Как я могу получить номер счета 123456? – jorgewang168

+0

@ jorgewang168 '02 90 00 CRC' выглядит как вполне действительный ответ на команду select, которую вы отправили. Поэтому я предлагаю вам принять этот ответ, а затем создать новый вопрос, задающий эту новую проблему (включая соответствующие части кода Android HCE). –