Недавно я реализовал связь с ACR122, используя библиотеку winscard. Я использовал таймер для вызова всех релевантных вызовов API, таких как 1. SCardEstablishContext 2. SCardListReaders и т.д., Чтобы получить статус читателя
Я сохранил интервал до пяти (5) секунд для таймера. Таким образом, вы получаете задержку в 5 секунд при получении статуса устройства.
Может ли кто-нибудь предложить мне лучший подход, например, "триггер, основанный на событиях", чтобы избежать этой задержки и удалить таймер.
Ниже приведен общий подход, который я выполнил в двух проектах, которые я реализовал. Надеюсь, это
помогает.
1) Инициализируйте все считыватели, подключенные к системе (используя apis like
SCardEstablishContext и SCardListReaders)
2) Начните опрос для карточки на каждом из читателей из потока (используя apis like
SCardGetStatusChange). У меня был бы один поток для каждого читателя. Когда считыватель обнаруживает карту
на нем возникает событие для совершения транзакций с карточками.
3) Обработайте событие, поднятое потоком опроса, чтобы совершать транзакции с картой (используя apis like
Используется SCardConnect SCardTransmit)
Я думаю, что вышеупомянутый подход поможет вам избавиться от таймеров и оптимизировать производительность.