怎么把uid转化为十进制后放到数组中
如题 现在在做一个RC522的实验TT想问一下要是预先将一个卡号放进一个数组里,然后在读卡的时候进行两个数组匹配,来判断是否是有效的卡,应该如何弄呢?想的头都要秃了 求助各位大佬们!
读取uid的代码如下#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN); //创建MFRC522实例
MFRC522::MIFARE_Key key;
byte nuidPICC;
void setup() {
Serial.begin(9600);
SPI.begin(); //初始化 SPI 总线
rfid.PCD_Init(); //初始化 MFRC522 卡
for (byte i = 0; i < 6; i++) {
key.keyByte = 0xFF;
}
}
void loop() {
if(!rfid.PICC_IsNewCardPresent())
return;
if(!rfid.PICC_ReadCardSerial())
return;
for (byte i = 0; i < 4; i++) {
nuidPICC = rfid.uid.uidByte;
}
Serial.print(F("Dev1:"));
printDec(rfid.uid.uidByte, rfid.uid.size);
//暂停PICC
rfid.PICC_HaltA();
//暂停PCD上的加密
rfid.PCD_StopCrypto1();
}
void printDec(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer < 0x10 ? "0" : "");
Serial.print(buffer, DEC);//十进制
}
Serial.println(" ");
}如果能帮忙真的非常感谢
题目若是说详细一些 就是如何从uid里按字节取出来 再去跟我设定好的数组进行相比较呢?十进制数的话 直接用memcmp不行吗?
人造人 发表于 2021-6-14 19:49
直接用memcmp不行吗?
但是uid里的是byte类型 数组里是int类型 可以互比吗{:5_100:} 段软w 发表于 2021-6-17 10:39
但是uid里的是byte类型 数组里是int类型 可以互比吗
举个例子看看
你先给出一个uid,然后手动转换一下
人造人 发表于 2021-6-17 10:42
举个例子看看
你先给出一个uid,然后手动转换一下
啊..是把提前设置好的uid int数组设置为byte类型的意思吗{:10_291:}不是很懂5555抱歉 段软w 发表于 2021-6-17 10:45
啊..是把提前设置好的uid int数组设置为byte类型的意思吗不是很懂5555抱歉
你的uid是什么样子的?
这样?
0000-1234-5678-9870-0000
这样?
0000000-11111111
这样?
12-13-14-10-99-80 人造人 发表于 2021-6-17 11:13
你的uid是什么样子的?
这样?
0000-1234-5678-9870-0000
我程序里显示卡的uid
十六进制
E9 96 07 87
十进制
233 150 07 135 段软w 发表于 2021-6-17 10:39
但是uid里的是byte类型 数组里是int类型 可以互比吗
就不能改成一样的吗?
把数组里的int类型改成byte类型
或者改uid类型为int
人造人 发表于 2021-6-17 22:45
就不能改成一样的吗?
把数组里的int类型改成byte类型
或者改uid类型为int
TT就是不太清楚怎么改{:10_250:}orz 人造人 发表于 2021-6-17 22:45
就不能改成一样的吗?
把数组里的int类型改成byte类型
或者改uid类型为int
void printDec(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer < 0x10 ? "0" : "");
Serial.print(buffer, DEC);//十进制
}
Serial.println(" ");
}
是把括号里的byte直接改成int吗?{:10_266:}还是什么呢..orz 段软w 发表于 2021-6-18 11:18
void printDec(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Ser ...
这里面都是byte呀,哪来的int ?
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN); //创建MFRC522实例
MFRC522::MIFARE_Key key;
byte nuidPICC;
void setup() {
Serial.begin(9600);
SPI.begin(); //初始化 SPI 总线
rfid.PCD_Init(); //初始化 MFRC522 卡
for (byte i = 0; i < 6; i++) {
key.keyByte = 0xFF;
}
}
void loop() {
if(!rfid.PICC_IsNewCardPresent())
return;
if(!rfid.PICC_ReadCardSerial())
return;
for (byte i = 0; i < 4; i++) {
nuidPICC = rfid.uid.uidByte;
}
Serial.print(F("Dev1:"));
printDec(rfid.uid.uidByte, rfid.uid.size);
//暂停PICC
rfid.PICC_HaltA();
//暂停PCD上的加密
rfid.PCD_StopCrypto1();
}
void printDec(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer < 0x10 ? "0" : "");
Serial.print(buffer, DEC);//十进制
}
Serial.println(" ");
} 人造人 发表于 2021-6-18 11:35
这里面都是byte呀,哪来的int ?
!喔 我直接设置byte了 谢谢!
页:
[1]