using PCSC; using PCSC.Iso7816; using System; namespace NFC.Readers.PCSC { public class PCSC_Reader : IReader, IDisposable { private string _ReaderID; private IContextFactory _ContextFactory; private ISCardContext _SCardContext; private IsoReader _ISOReader; private ICard _Card; public PCSC_Reader(string readerID) { _ReaderID = readerID; } public event ReaderEventHandler CardDiscovered; public event ReaderEventHandler CardLost; public void Dispose() { Stop(); } public void Start() { _ContextFactory = ContextFactory.Instance; _SCardContext = _ContextFactory.Establish(SCardScope.System); _ISOReader = new IsoReader(_SCardContext); _Card = new Card(_ISOReader, _ReaderID); CardDiscovered?.Invoke(this, _Card); } public void Stop() { CardLost?.Invoke(this, _Card); _ISOReader.Dispose(); _SCardContext.Dispose(); } } }