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
NuGet 团队不提供对此客户端的支持。请联系其 维护者以获取支持。
#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
NuGet 团队不提供对此客户端的支持。请联系其 维护者以获取支持。
MFRC522 - RFID 读取器
MFRC522 是一种非常便宜的 Iso 14443 Type A 卡的 RFID/NFC 读取器。这些汽车的一部分是 Mifare 和 Ultralight 系列。这个读取器实现了专有的 Mifare 加密协议,并且可以透明地使用。
文档
- MFRC5222 数据表
用法
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,强烈建议使用尽可能高的串行波特率传输。
-
- nanoFramework.CoreLibrary (>= 1.15.5)
- nanoFramework.Iot.Device.Card (>= 1.2.605)
- nanoFramework.Logging (>= 1.1.108)
- nanoFramework.Runtime.Events (>= 1.11.18)
- nanoFramework.Runtime.Native (>= 1.6.12)
- nanoFramework.System.Buffers.Binary.BinaryPrimitives (>= 1.2.586)
- nanoFramework.System.Device.Gpio (>= 1.1.41)
- nanoFramework.System.Device.I2c (>= 1.1.16)
- nanoFramework.System.Device.Spi (>= 1.3.52)
- nanoFramework.System.Diagnostics.Stopwatch (>= 1.2.586)
- nanoFramework.System.IO.Ports (>= 1.1.86)
- nanoFramework.System.IO.Streams (>= 1.1.59)
- nanoFramework.System.Text (>= 1.2.54)
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 |