Arduino上RDM880 RFID读取异常
RDM880 RFID reading anomaly on Arduino
我有一个 RDM880 硬件来读取一些 13.56MHz 的卡。
我已经阅读了通信协议并按照我在网上找到的一些指南写了一个草图。我能够正确地在串行上打印来自接收器的响应,但是当我尝试存储它以使用它时,我遇到了一些问题。
按照我的代码:
byte MF_GET_SNR[8] = {0xAA, 0x00, 0x03, 0x25, 0x26, 0x00, 0x00, 0xBB};
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
}
void loop() {
Serial1.write(MF_GET_SNR, 8);
delay(1000);
while(Serial1.available() > 0) {
Serial.print(Serial1.read(), HEX);
Serial.print(" ");
}
Serial.println();
}
我在串行监视器上得到这个:
AA 0 2 1 83 80 BB
AA 0 2 1 83 80 BB
AA 0 2 1 83 80 BB
AA 0 6 0 0 ED B F0 6C 7C BB
AA 0 6 0 0 ED B F0 6C 7C BB
AA 0 6 0 0 ED B F0 6C 7C BB
AA 0 6 0 0 ED B F0 6C 7C BB
AA 0 2 1 83 80 BB
AA 0 2 1 83 80 BB
AA 0 2 1 83 80 BB
AA 0 2 1 83 80 BB
AA 0 2 1 83 80 BB
AA 0 2 1 83 80 BB
其中 AA 0 6 0 0 ED B F0 6C 7C BB 是我放卡时接收方的答案,其中这个 ED B F0 6C 应该是卡的 RFID
当我改变我的代码来存储和使用我从接收者那里得到的数据时,我的问题就开始了:
字节MF_GET_SNR[8] = {0xAA, 0x00, 0x03, 0x25, 0x26, 0x00, 0x00, 0xBB};
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
}
void loop() {
Serial1.write(MF_GET_SNR, 8);
delay(1000);
char rfid[1024];
for (int i=0;i<14;i++) rfid[i]='0';
int counter=0;
while (Serial1.available()){
//var=Serial1.read();
rfid[counter]=Serial1.read();
actived=true;
Serial.print("Recived Element: "); Serial.println(rfid[counter],HEX);
counter++;
//Serial.println("CHECK1");
if (counter > 14) break;
}
}
这是我得到的数据:
Recived Element: FFFFFFAA
Recived Element: 0
Recived Element: 2
Recived Element: 1
Recived Element: FFFFFF83
Recived Element: FFFFFF80
Recived Element: FFFFFFBB
Recived Element: FFFFFFAA
Recived Element: 0
Recived Element: 6
Recived Element: 0
Recived Element: 0
Recived Element: 2B
Recived Element: FFFFFFA8
Recived Element: FFFFFFB5
Recived Element: FFFFFF9E
Recived Element: FFFFFFAE
Recived Element: FFFFFFBB
我无法理解如何解决在 HEX 值前面读取的 FFFFFF 问题。
Doesent 似乎是波特率的问题,因为如果我只尝试读取数据,我会得到正确的值。
我想要达到的目标必须在最后得到这个:var="AA00060000ED0BF06C7CBB"
设置为"unsigned char rfid[1024]"即可解决问题。
我对其他 RFID reader 没有这个问题,但似乎需要这个模型。
byte MF_GET_SNR[8] = {0xAA, 0x00, 0x03, 0x25, 0x26, 0x00, 0x00, 0xBB};
/* This will contain the RFID receiver response
(11 is taken from your example) */
byte RFID_DATA[11];
int RFID_DATA_index;
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
}
void loop() {
Serial1.write(MF_GET_SNR, 8);
delay(1000);
RFID_DATA_index = 0;
while(Serial1.available() > 0) {
/* Store RFID received response data */
RFID_DATA[RFID_DATA_index] = Serial1.read();
/* This will print the card RFID */
if(RFID_DATA_index > 4){
Serial.print(RFID_DATA[RFID_DATA_index], HEX)
}
RFID_DATA_index++;
}
Serial.print('\n');
}
我有一个 RDM880 硬件来读取一些 13.56MHz 的卡。
我已经阅读了通信协议并按照我在网上找到的一些指南写了一个草图。我能够正确地在串行上打印来自接收器的响应,但是当我尝试存储它以使用它时,我遇到了一些问题。 按照我的代码:
byte MF_GET_SNR[8] = {0xAA, 0x00, 0x03, 0x25, 0x26, 0x00, 0x00, 0xBB};
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
}
void loop() {
Serial1.write(MF_GET_SNR, 8);
delay(1000);
while(Serial1.available() > 0) {
Serial.print(Serial1.read(), HEX);
Serial.print(" ");
}
Serial.println();
}
我在串行监视器上得到这个:
AA 0 2 1 83 80 BB
AA 0 2 1 83 80 BB
AA 0 2 1 83 80 BB
AA 0 6 0 0 ED B F0 6C 7C BB
AA 0 6 0 0 ED B F0 6C 7C BB
AA 0 6 0 0 ED B F0 6C 7C BB
AA 0 6 0 0 ED B F0 6C 7C BB
AA 0 2 1 83 80 BB
AA 0 2 1 83 80 BB
AA 0 2 1 83 80 BB
AA 0 2 1 83 80 BB
AA 0 2 1 83 80 BB
AA 0 2 1 83 80 BB
其中 AA 0 6 0 0 ED B F0 6C 7C BB 是我放卡时接收方的答案,其中这个 ED B F0 6C 应该是卡的 RFID
当我改变我的代码来存储和使用我从接收者那里得到的数据时,我的问题就开始了:
字节MF_GET_SNR[8] = {0xAA, 0x00, 0x03, 0x25, 0x26, 0x00, 0x00, 0xBB};
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
}
void loop() {
Serial1.write(MF_GET_SNR, 8);
delay(1000);
char rfid[1024];
for (int i=0;i<14;i++) rfid[i]='0';
int counter=0;
while (Serial1.available()){
//var=Serial1.read();
rfid[counter]=Serial1.read();
actived=true;
Serial.print("Recived Element: "); Serial.println(rfid[counter],HEX);
counter++;
//Serial.println("CHECK1");
if (counter > 14) break;
}
}
这是我得到的数据:
Recived Element: FFFFFFAA
Recived Element: 0
Recived Element: 2
Recived Element: 1
Recived Element: FFFFFF83
Recived Element: FFFFFF80
Recived Element: FFFFFFBB
Recived Element: FFFFFFAA
Recived Element: 0
Recived Element: 6
Recived Element: 0
Recived Element: 0
Recived Element: 2B
Recived Element: FFFFFFA8
Recived Element: FFFFFFB5
Recived Element: FFFFFF9E
Recived Element: FFFFFFAE
Recived Element: FFFFFFBB
我无法理解如何解决在 HEX 值前面读取的 FFFFFF 问题。
Doesent 似乎是波特率的问题,因为如果我只尝试读取数据,我会得到正确的值。
我想要达到的目标必须在最后得到这个:var="AA00060000ED0BF06C7CBB"
设置为"unsigned char rfid[1024]"即可解决问题。 我对其他 RFID reader 没有这个问题,但似乎需要这个模型。
byte MF_GET_SNR[8] = {0xAA, 0x00, 0x03, 0x25, 0x26, 0x00, 0x00, 0xBB};
/* This will contain the RFID receiver response
(11 is taken from your example) */
byte RFID_DATA[11];
int RFID_DATA_index;
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
}
void loop() {
Serial1.write(MF_GET_SNR, 8);
delay(1000);
RFID_DATA_index = 0;
while(Serial1.available() > 0) {
/* Store RFID received response data */
RFID_DATA[RFID_DATA_index] = Serial1.read();
/* This will print the card RFID */
if(RFID_DATA_index > 4){
Serial.print(RFID_DATA[RFID_DATA_index], HEX)
}
RFID_DATA_index++;
}
Serial.print('\n');
}