使用 .Net 技术开发智能卡读卡器
Posted
技术标签:
【中文标题】使用 .Net 技术开发智能卡读卡器【英文标题】:Smart card reader development with .Net technologies 【发布时间】:2013-11-08 15:49:10 【问题描述】:有人知道如何监控智能卡的存在并读取卡的 UID 值吗?
是的,我在网络上尝试了很多例子,比如
A Smart Card Framework for .NET
pcsc-sharp
Monitoring a Smartcard Reader
但不知道该怎么做。我可以检测到卡的存在并且可以单独获取 UID,但不知道如何在我的应用程序中组合它们:(。
帮帮我
【问题讨论】:
【参考方案1】:我想通了。想与任何有兴趣的人分享。
我使用 winscard.dll 函数来访问卡数据并与 PC 通信。
请注意,我使用 Mifare 1K 卡 作为 NFC 标签和阅读器 ACR 122u。
private string getcardUID()//only for mifare 1k cards
string cardUID = "";
byte[] receivedUID = new byte[256];
Card.SCARD_IO_REQUEST request = new Card.SCARD_IO_REQUEST();
request.dwProtocol = Card.SCARD_PROTOCOL_T1;
request.cbPciLength = System.Runtime.InteropServices.Marshal.SizeOf(typeof(Card.SCARD_IO_REQUEST));
byte[] sendBytes = new byte[] 0xFF, 0xCA, 0x00, 0x00, 0x00 ; //get UID command for Mifare cards
int outBytes = receivedUID.Length;
int status = Card.SCardTransmit(hCard, ref request, ref sendBytes[0], sendBytes.Length, ref request, ref receivedUID[0], ref outBytes);
if (status != Card.SCARD_S_SUCCESS)
cardUID = "Error";
else
cardUID = BitConverter.ToString(receivedUID.Take(4).ToArray()).Replace("-", string.Empty).ToLower();
return cardUID;
对于任何感兴趣的人,我已经在此处编写了分步指南以实现此目的。
Simple NFC reading system for windows
享受!!!
【讨论】:
我可以联系你解释我如何用这个 dll 调用 SmartCard 吗?我的智能卡有代码 Hexa 的命令 APDU以上是关于使用 .Net 技术开发智能卡读卡器的主要内容,如果未能解决你的问题,请参考以下文章