我最近使用 winscard 库实现了与 ACR122 的通信。我使用计时器来调用所有相关的 API 调用,例如 1. SCardEstablishContext 2. SCardListReaders 等以获取阅读器的状态
我已将计时器的间隔保持在五 (5) 秒。因此,这会使获取设备状态延迟 5 秒。
谁能建议我一种更好的方法,例如“基于事件的触发器”来避免这种延迟并一起删除计时器。
我最近使用 winscard 库实现了与 ACR122 的通信。我使用计时器来调用所有相关的 API 调用,例如 1. SCardEstablishContext 2. SCardListReaders 等以获取阅读器的状态
我已将计时器的间隔保持在五 (5) 秒。因此,这会使获取设备状态延迟 5 秒。
谁能建议我一种更好的方法,例如“基于事件的触发器”来避免这种延迟并一起删除计时器。
以下是我在实施的几个项目中遵循的一般方法。希望它
有帮助。
1)初始化所有连接到系统的阅读器(使用类似的api
SCardEstablishContext 和 SCardListReaders)
2)从一个线程开始轮询每个阅读器上的卡(使用类似的api
SCardGetStatusChange )。我会为每个读者准备一个线程。当读卡器检测到卡片时
放置在它上面会引发一个事件来进行卡交易。
3)处理轮询线程引发的事件以进行卡片交易(使用apis like
SCardConnect SCardTransmit 使用)
我认为上述方法将帮助您摆脱计时器并优化性能。