#include SoftwareSerial mySerial(2, 3); //pin2 Rx, pin3 Tx int CMD[64]; // Here the Max command length is set as 64 bytes. For example, Command “AB 02 01” is 3 bytes int comlen =0; int out_flag =0; void setup() { Serial.begin(9600); mySerial.listen(); Serial.println("Serial number will be displayed here if a card is detected by the module:\n"); // set the data rate for the SoftwareSerial port mySerial.begin(9600); delay(10); mySerial.write(0x02); //Send the command to read RFID tag, please refer to the manual for more detail. } void loop() // run over and over { while (Serial.available()) { int a = SerialReadHexDigit(); //Serial.println(a); if(a>=0){ CMD[comlen] = a; comlen++; } delay(10); } for(int i=0; i0) { Serial.println(); out_flag = 0; } } /************************************************************************************* The following function is to receive data and judge if it is HEX character. Hex characters include 1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,A,B,C,D,E,F Any other characters sent with the command will be ignored. **************************************************************************************/ int SerialReadHexDigit() { byte c = (byte) Serial.read(); if (c >= '0' && c <= '9') { return c - '0'; } else if (c >= 'a' && c <= 'f') { return c - 'a' + 10; } else if (c >= 'A' && c <= 'F') { return c - 'A' + 10; } else { return -1; // getting here is bad: it means the character was invalid } }