nanoFramework.Iot.Device.Mfrc522 1.2.606

前缀已预留
dotnet add package nanoFramework.Iot.Device.Mfrc522 --version 1.2.606                
NuGet\Install-Package nanoFramework.Iot.Device.Mfrc522 -Version 1.2.606                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="nanoFramework.Iot.Device.Mfrc522" Version="1.2.606" />                
对于支持 包引用 的项目,请将此 XML 节点复制到项目文件中以引用包。
paket add nanoFramework.Iot.Device.Mfrc522 --version 1.2.606                
#r "nuget: nanoFramework.Iot.Device.Mfrc522, 1.2.606"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将其复制到交互式工具或脚本的源代码中以引用包。
// Install nanoFramework.Iot.Device.Mfrc522 as a Cake Addin
#addin nuget:?package=nanoFramework.Iot.Device.Mfrc522&version=1.2.606

// Install nanoFramework.Iot.Device.Mfrc522 as a Cake Tool
#tool nuget:?package=nanoFramework.Iot.Device.Mfrc522&version=1.2.606                

MFRC522 - RFID 读取器

MFRC522 是一种非常便宜的 Iso 14443 Type A 卡的 RFID/NFC 读取器。这些汽车的一部分是 MifareUltralight 系列。这个读取器实现了专有的 Mifare 加密协议,并且可以透明地使用。

文档

用法

MFRC522 支持 SPI、I2C 和 UART(串行端口)。你可以使用任何这些协议创建读取器。

注意:大多数你将购买的流行的板子仅支持 SPI。此文档将重点关注 SPI。在 示例 中可以获得有关如何设置 I2C 和 UART 的更多信息。

GpioController gpioController = new GpioController();
// adjust the GPIO used for the hard reset
int pinReset = 21;

// Default on ESP32:
// GPIO23 = MOSI; GPIO25 = MISO; GPIO19 = Clock

// Uncomment for SPI
SpiConnectionSettings connection = new(1, 22);
// Here you can use as well MfRc522.MaximumSpiClockFrequency which is 10_000_000
// Anything lower will work as well
connection.ClockFrequency = 5_000_000;
SpiDevice spi = SpiDevice.Create(connection);
MfRc522 mfrc522 = new(spi, pinReset, gpioController, false);

代码将创建一个 MFRC522 实例,并将 GPIO21 引脚用作硬件复位引脚,并自动从默认驱动程序创建 GpioController。有关更多元素,请查看详细的 [示例]。更多详细示例展示了如何使用其他类型的卡。

您可以使用 Version 属性来获取版本。

Debug.WriteLine($"Version: {mfrc522.Version}, version should be 1 or 2. Some clones may appear with version 0");

请注意,版本号为0.0并不一定意味着您的读者工作不正常;如果您购买的是专利MFRC522的廉价副本,内部版本可能无法被识别。

MFRC522只支持ISO 14443类型A。您可以插入这样的卡片

bool res;
Data106kbpsTypeA card;
do
{
    res = mfrc522.ListenToCardIso14443TypeA(out card, TimeSpan.FromSeconds(2));
    Thread.Sleep(res ? 0 : 200);
}
while (!res);

一旦检测到卡片,就会生成一个表示卡片的Data106kbpsTypeA类。您将获得卡片的唯一标识符以及帮助识别它的其他元素。

然后您可以创建一张Mifare卡并对其进行操作

var mifare = new MifareCard(mfrc522, 0);
mifare.SerialNumber = card.NfcId;
mifare.Capacity = MifareCardCapacity.Mifare1K;
mifare.KeyA = MifareCard.DefaultKeyA;
mifare.KeyB = MifareCard.DefaultKeyB;

mifare.BlockNumber = 0;
mifare.Command = MifareCardCommand.AuthenticationB;
ret = mifare.RunMifareCardCommand();
if (ret < 0)
{
    mifare.ReselectCard();
    Debug.WriteLine($"Error reading bloc: {mifare.BlockNumber}");
}
else
{
    mifare.Command = MifareCardCommand.Read16Bytes;
    ret = mifare.RunMifareCardCommand();
    if (ret >= 0)
    {
        if (mifare.Data is object)
        {
            Debug.WriteLine($"Bloc: {mifare.BlockNumber}, Data: {BitConverter.ToString(mifare.Data)}");
        }
    }
    else
    {
        mifare.ReselectCard();
        Debug.WriteLine($"Error reading bloc: {mifare.BlockNumber}");
    }
}

重要:每次在读取或认证失败时,您都必须执行ReselectCard()操作。默认情况下,卡片会停止响应。这种行为是按照设计意图实现的,以便使暴力破解认证机制更加困难。以下示例显示了一种如何从已知密钥中找到用于NDEF场景的方法。注意,该示例未完全优化,旨在帮助理解其背后的机制。

其他说明

  • SPI实现已被进行了深入测试。
  • 由于缺乏硬件支持,I2C和UART只进行了基本的测试。因此,如果您有任何问题,请提交问题。
  • 当使用I2C时,地址可以使用硬件引脚设置,这也是为什么没有默认地址的原因。
  • 如果您正在使用UART,强烈建议使用尽可能高的串行波特率传输。
产品 兼容和额外的计算目标框架版本。
.NET框架 net兼容。
兼容目标框架
包含目标框架(在包中)
更多关于目标框架.NET标准的信息。

NuGet包

此包未由任何NuGet包使用。

GitHub仓库

此包未由任何流行的GitHub仓库使用。

版本 下载 最后更新
1.2.606 38 8/2/2024
1.2.595 52 7/24/2024
1.2.590 71 7/17/2024
1.2.570 84 6/14/2024
1.2.560 90 5/29/2024
1.2.552 94 5/17/2024
1.2.548 88 5/15/2024
1.2.536 105 4/15/2024
1.2.486 126 2/2/2024
1.2.483 86 1/31/2024
1.2.479 78 1/27/2024
1.2.446 234 11/17/2023
1.2.436 96 11/10/2023
1.2.416 106 11/8/2023
1.2.329 216 5/26/2023
1.2.313 156 5/12/2023
1.2.298 147 5/5/2023
1.2.297 156 5/3/2023
1.2.253 281 2/22/2023
1.2.243 245 2/20/2023
1.2.215 319 1/6/2023
1.2.212 302 1/5/2023
1.2.205 287 12/30/2022
1.2.203 296 12/28/2022
1.2.161 349 11/15/2022
1.2.159 343 11/14/2022
1.2.155 348 11/6/2022
1.2.153 379 11/5/2022
1.2.141 413 10/25/2022
1.2.128 398 10/22/2022
1.2.122 447 10/12/2022
1.2.118 423 10/11/2022
1.2.117 403 10/10/2022
1.2.114 382 10/8/2022
1.2.95 431 9/22/2022
1.2.89 419 9/16/2022
1.2.87 482 9/15/2022
1.2.73 415 9/8/2022
1.2.40 424 8/6/2022
1.2.35 401 8/4/2022
1.2.5 452 7/13/2022
1.2.0 351 11/2/2022
1.1.141.41205 445 7/6/2022
1.1.116.8772 452 6/24/2022
1.1.113.2032 451 6/23/2022
1.1.111.5739 441 6/17/2022
1.1.109.32999 438 6/16/2022
1.1.99.36719 448 6/14/2022
1.1.97.17326 450 6/13/2022
1.1.92.53000 443 6/8/2022
1.1.67.25390 451 5/27/2022
1.1.48.19401 438 5/19/2022
1.1.38 463 5/4/2022
1.1.27 456 4/26/2022
1.1.20 450 4/21/2022
1.1.3 450 4/15/2022
1.1.1 456 4/14/2022
1.0.300 457 3/31/2022
1.0.278-preview.125 125 3/25/2022
1.0.278-preview.124 114 3/25/2022
1.0.278-preview.115 104 3/22/2022
1.0.278-preview.111 113 3/19/2022
1.0.278-preview.109 110 3/18/2022
1.0.278-preview.105 123 3/15/2022
1.0.278-preview.104 116 3/15/2022
1.0.278-preview.101 109 3/11/2022
1.0.278-preview.98 107 3/10/2022
1.0.278-preview.97 115 3/8/2022
1.0.278-preview.84 113 2/25/2022
1.0.278-preview.76 111 2/18/2022
1.0.278-preview.70 107 2/11/2022
1.0.278-preview.64 111 2/9/2022
1.0.278-preview.62 118 2/8/2022
1.0.278-preview.61 126 2/5/2022
1.0.278-preview.59 130 2/4/2022
1.0.278-preview.52 130 1/31/2022
1.0.278-preview.40 126 1/28/2022
1.0.278-preview.31 124 1/27/2022
1.0.278-preview.29 127 1/27/2022
1.0.278-preview.16 137 1/24/2022
1.0.278-preview.14 124 1/21/2022
1.0.278-preview.12 130 1/21/2022
1.0.278-preview.1 133 1/14/2022
1.0.272 163 1/10/2022
1.0.259 325 12/9/2021
1.0.221 155 10/19/2021
1.0.219 164 10/19/2021
1.0.218 193 10/18/2021
1.0.217 194 10/16/2021
1.0.209 185 10/12/2021
1.0.194 199 10/1/2021
1.0.193 165 9/30/2021
1.0.191 168 9/29/2021
1.0.146 165 7/22/2021
1.0.140 171 7/20/2021
1.0.138 186 7/18/2021