gpt4 book ai didi

c# - 使用 WinSCard 库获取 mifare 卡序列号

转载 作者:行者123 更新时间:2023-11-30 19:17:40 24 4
gpt4 key购买 nike

我正在开发一个需要读取 mifare 卡序列号的应用程序,我使用的语言是 C#。

我是 mifare 读卡器编程的新手,所以很抱歉提出了愚蠢的问题。首先我想知道Mifare UID和Mifare Serial number是否有区别。

我已经在 WinSCard 库的帮助下获得了 UID,但我不知道如何获得应该是 10 位数字的卡序列号。

如果您能指出正确的方向,我将不胜感激。

在此先感谢您的帮助。问候

最佳答案

SCardTransmit 方法的 C# 签名

[StructLayout(LayoutKind.Sequential)]
public struct SCARD_IO_REQUEST
{
public int dwProtocol;
public int cbPciLength;
}

[DllImport("winscard.dll")]
public static extern int SCardTransmit(int hCard, ref SCARD_IO_REQUEST pioSendRequest, ref byte SendBuff, int SendBuffLen, ref SCARD_IO_REQUEST pioRecvRequest,
ref byte RecvBuff, ref int RecvBuffLen);

读取mifare卡UID代码示例

private SmartcardErrorCode GetUID(ref byte[] UID)
{
byte[] receivedUID = new byte[10];
UnsafeNativeMethods.SCARD_IO_REQUEST request = new UnsafeNativeMethods.SCARD_IO_REQUEST();
request.dwProtocol = 1; //SCARD_PROTOCOL_T1);
request.cbPciLength = System.Runtime.InteropServices.Marshal.SizeOf(typeof(UnsafeNativeMethods.SCARD_IO_REQUEST));
byte[] sendBytes = new byte[] { 0xFF, 0xCA, 0x00, 0x00, 0x04 }; //get UID command for Mifare cards

int outBytes = receivedUID.Length;
int status = SCardTransmit(_hCard, ref request, ref sendBytes[0], sendBytes.Length, ref request, ref receivedUID[0], ref outBytes);

UID = receivedUID.Take(8).ToArray();
return status;
}

关于c# - 使用 WinSCard 库获取 mifare 卡序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16856620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com