Команда запроса Iso 14443

1

Я пытаюсь общаться с некоторыми смарт-картами. У меня есть читатель, у которого есть способ запросить карточку типа 14443A. Когда я выдаю эту команду, она иногда возвращает успех, иногда она терпит неудачу. Возможно, я что-то пропустил в протоколе 14443A? Может быть, карта входит в какое-то состояние остановки? Или я должен вызвать состояние остановки вручную, если есть сбой? Или есть какая-то другая команда, которую я должен позвонить заранее? Где я могу получить информацию о том, как установить связь (на уровне протокола) с картой ISO14443? Есть ли какой-то учебник для этого?

Вот как выглядит код (примерно):

 SerialPort p = new SerialPort("COM1", 19200, Parity.None, 8, StopBits.One);
 p.Open();

 byte[] res;
 res = send(p, REQUEST_TYPEA_COMMAND);
 res = send(p, RESETA_COMMAND);
 // send some other command
 p.Close();

Если я впервые запускаю код в первый раз, все вызовы в порядке. Но после второго запуска программы первый вызов (REQUEST_TYPEA_COMMAND) завершается с ошибкой - пока я не перезапущу устройство чтения.

Теги:

1 ответ

1
Лучший ответ

Карта, не отвечающая на команды REQA, может иметь несколько причин:

  1. Это не карта типа ISO 14443 Type A. В этом случае он не будет (не должен) отвечать на любые команды REQA. Как иногда делает ваша карта, это, конечно, не так.

  2. Карта не получила команду REQA. Это может произойти, если есть ошибки передачи на физическом канале (воздушный интерфейс).

  3. Карта не находится в состоянии IDLE. Карточка начинается в состоянии IDLE после сброса (т.е. в поле включено). Если карта получает команду REQA, она переходит в состояние READY. Получение любой другой команды, кроме команды анти-столкновения с совпадающей частью UID, в то время как в состоянии READY сбрасывает карту обратно в состояние IDLE, где она может обрабатывать дальнейшие команды REQA. Если карта дополнительно активирована вне состояния READY и принимает команду HLTA (или DESELECT, если она активирована до уровня протокола ISO 14443-4), она переключается в состояние HALT. В состоянии HALT карта не будет отвечать на команды REQA, а только на WUPA (команды пробуждения).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню