Parallax RFID Reader Code

Can someone tell me how I can get a tag read only once? When a tag is scanned it is being printed two or three times on the serial monitor. I also would like to have a time limit after a tag is scanned before the reader will detect it again. Is this possible?

int val = 0;
int bytesread = 0;
char tag[11];    // holds the tag and a terminating 

#define enable 2
#define start_byte 0x0A
#define stop_byte 0x0D


//**************Programmed Tag ID's******************************
char ID[11] = {'0','C', '0', '0', '5', '1', '5', '4', '9', 'A'}; 


//****************************************************************


void setup() 
{
  Serial.begin(2400); 
  pinMode(enable,OUTPUT); 
  digitalWrite(enable, LOW); 
 
  
}


void loop()
{
  enableRFID();
  getRFIDTag();
  printCode();
  disableRFID(); 
  //printCode();
  
}



// functions/

void enableRFID()
{
  digitalWrite(enable, LOW);  
}


void disableRFID()
{
  digitalWrite(enable, HIGH);  
}


void getRFIDTag()
{
 if(Serial.available() > 0) 
 {
   if((val = Serial.read()) == 10)
    {
      bytesread = 0;
      while(bytesread < 10)
      {
        if(Serial.available() > 0)
        {
          val = Serial.read();
          if((val == start_byte) || (val == stop_byte)) 
          {
            break;
          }
          tag[bytesread] = val;
          bytesread++; 
        }
      }
    }
 }
}
 
          
          
         
void printCode()
{
  if(Serial.read() == stop_byte)
  {
    if(strcmp(tag, ID) == 0) 
    {
      Serial.print("The tag is: ");
      Serial.println(tag); 
    }
    else
    {
      Serial.print("Invalid Tag"); 
    }
  }
  
}

Once you have printed the tag, clear the array. getRFIDTag() returns if there is no new tag data to read.

    if(strcmp(tag, ID) == 0) 
    {
      static unsigned long lastReceivedTime = 0;
      // Require five seconds minimum between activations
      if (millis() - lastReceivedTime > 5000) {
          Serial.print("The tag is: ");
          Serial.println(tag); 
      }
    lastReceivedTime = millis();
    }
    else
    {
      Serial.print("Invalid Tag"); 
    }

I am trying to setup a interrupt timer that will be set for 5 minutes for my RFID tags. I want each RFID tag to have to wait 5 minutes before it can be reactivated once it was already scanned. Can someone tell me how I can do this? As of right now, I have two tags programmed. I have attempted to code this but am lost on what I need to do next. Any help would be appreciated!

int  val = 0; 
int weight = 0; 
char code[11]; 
int bytesread = 0;

volatile int counter = 0; 

///TESTING
int LEDRed = 12;                   
int LEDYellow = 11;                  
int LEDGreen = 10;  
////////////////

#define enable 2
#define start_byte 0x0A
#define stop_byte 0x0D

//**************Programmed Tag ID's******************************
char tag[11] = {'0','C', '0', '0', '5', '1', '5', '4', '9', 'A'}; 
char tag1[11] = { '0', 'C', '0', '0', '5', '1', 'E', 'D', '1', '4'}; 



//****************************************************************

void setup()
{
  Serial.begin(2400);
  pinMode(enable, OUTPUT);
  enableRFID(); 
  
  //TESTING
  pinMode(LEDRed, OUTPUT);         
  pinMode(LEDYellow, OUTPUT);        
  pinMode(LEDGreen, OUTPUT);
  
}

void loop()
{
  getRFIDTag();
  printTag(); 
  
}


void ISR_timer() {
  counter++; 
}

//RFID Functions

void enableRFID()
{
  digitalWrite(enable,LOW);
}

void disable()
{
  digitalWrite(enable,HIGH);
}

void getRFIDTag()
{
   if(Serial.available() > 0) 
   {         
    if((val = Serial.read()) == 0x0A)  //10 
    {   // check for header 
      bytesread = 0; 
      while(bytesread<10) 
      {             
        if( Serial.available() > 0) 
        { 
          val = Serial.read(); 
          if((val == 0x0A)||(val == 0x0D))
          { 
            break;                      
          } 
          code[bytesread] = val;                   
          bytesread++;                   
        } 
      } 
    }
   }
}

void printTag()
{
      if(bytesread == 10)  
      {              
       if (strcmp(code, tag) == 0)
       {
        weight = 10; 
        Serial.print("Steven tag is: ");
        Serial.println(code); 
        //digitalWrite (LEDGreen, HIGH); 
        Serial.println(weight);  
    
        dog_weight();
       }
      else if (strcmp(code, tag1) == 0)
      {
        weight = 70; 
        Serial.print("The Second tag is: ");
        Serial.println(code);  
        Serial.println(weight); 
        dog_weight();
       }
       else
       {
         Serial.print("INVALID: ");
         Serial.println(code);  
       }
       
         bytesread = 0; 
         disable();                 
           delay(1500);                       
           enableRFID();                 
       }
 } 
      
 void dog_weight()
 {
   if (weight <= 20)
   {
      digitalWrite (LEDGreen, HIGH); 
      delay(2000); 
      digitalWrite (LEDGreen, LOW); 
   }
   else if (weight >= 60)
   {
      digitalWrite (LEDYellow, HIGH); 
      delay(2000); 
     digitalWrite (LEDYellow, LOW); 
     
   }
   else
   {
     digitalWrite (LEDRed, HIGH);
     delay(2000); 
     digitalWrite (LEDRed, LOW); 
   }
 }

Can someone tell me how I can do this?

How would YOU tell someone who tried to scan their tag within 5 minutes to take a hike? Hint: It does NOT involve interrupts.

Once you know how YOU would do it, translating that into code will be nearly trivial.

I've just merged your two cross-posts for you. Please don't cross-post.