borepin/NFC/Readers/PCSC/PCSC_Reader.cs

50 lines
1.1 KiB
C#
Raw Normal View History

2020-09-15 15:27:01 +02:00
using PCSC;
using PCSC.Iso7816;
using System;
namespace NFC.Readers.PCSC
{
2020-11-07 01:14:51 +01:00
public class PCSC_Reader : IReader, IDisposable
2020-09-15 15:27:01 +02:00
{
private string _ReaderID;
private IContextFactory _ContextFactory;
private ISCardContext _SCardContext;
private IsoReader _ISOReader;
private ICard _Card;
2020-11-07 01:14:51 +01:00
public PCSC_Reader(string readerID)
2020-09-15 15:27:01 +02:00
{
_ReaderID = readerID;
}
public event ReaderEventHandler CardDiscovered;
public event ReaderEventHandler CardLost;
public void Dispose()
{
2020-09-17 16:07:58 +02:00
Stop();
2020-09-15 15:27:01 +02:00
}
2020-09-17 16:07:58 +02:00
public void Start()
2020-09-15 15:27:01 +02:00
{
_ContextFactory = ContextFactory.Instance;
_SCardContext = _ContextFactory.Establish(SCardScope.System);
_ISOReader = new IsoReader(_SCardContext);
_Card = new Card(_ISOReader, _ReaderID);
CardDiscovered?.Invoke(this, _Card);
}
2020-09-17 16:07:58 +02:00
public void Stop()
2020-09-15 15:27:01 +02:00
{
CardLost?.Invoke(this, _Card);
_ISOReader.Dispose();
_SCardContext.Dispose();
}
}
}