Никогда не используйте ATQ! Используйте SAK только для карт без 14443-4 (например, Mifare Classic)! ATS также является плохой практикой, поскольку другой поставщик карт может устанавливать его по-разному.
Теперь, как это сделать:
Единственный способ, как думать о карте и не сойти с ума, это представить его, как это полный стек связи (см модель OSI).
Имейте в виду, что ваша цель - соединить два приложения: одно на карте и одно на вашем компьютере. 14443-4 предоставляет механизм для отправки сообщений и не заботится о его содержимом.
В дополнение к этому реализованы интерфейсы разных карт, и если обе стороны: card-carddriver совместимы, они будут общаться. Если нет, на этом уровне будут ошибки. Поэтому вы знаете, что вам нужно будет использовать другой драйвер карты.
полный коммуникационный стек будет выглядеть следующим образом:
Your Application
| CardProtocol/7816-4
| | 14443-4
| | | 14443
| | | | radio waves
| | | 14443 (in card)
| | 14443-4 (in card)
| CardProtocol/7816-4 (in card)
Application/Appdata (in card)
Конечно между каждым слоем должен быть некоторый интерфейс.
Если у вас есть два приложения, которые хотят общаться, попробуйте один, а затем попробуйте секунд.
ошибка на уровне приложений => не совместимое приложение на карте
ошибка на уровне CardProtocol => есть не совместимая карта
Точка ваша связь должна succed на всех уровнях, так что не беспокоиться, чтобы попытаться связаться с картой с помощью несовместимого протокола - если вы (каким-то чудом) не получите ошибку на уровне CardProtocol, вы обязательно получите один на своем уровне приложения, и результат будет таким же. Удачи!
P.S. Есть еще несколько сложных ситуаций, таких как «одно приложение поверх двух протоколов/типов карт», но с ними также можно легко справляться.
Да, я знаю это, но ATS можно изменить в карточках Mifare Plus, поэтому он не на 100% надежен. И я подозреваю, что могут существовать другие карты (не семейства Mifare), которые имеют тот же SAK. NXP рекомендует оценивать только бит 6 SAK, чтобы увидеть, поддерживает ли карта ISO 14443-4 и игнорировать другие биты. –
Вероятно, лучшим способом будет реализация «прагматичного» подхода: сначала используйте SAK и ATS (так что вы охватите большинство карт), а также несколько тестовых команд для угловых случаев. Будет ли программное обеспечение вашего читателя поддерживать все общие карты Mifare Plus или только те, которые персонализированы для конкретного приложения или услуги? – mictter
Думаю, этого будет достаточно, чтобы обрабатывать персонализированные, а также новые пустые карты для персонализации. –