Serial print read brokeng the sting

Hi guys!
I make a code to read a string in arduino Serial monitor.
The strings is for example: $cr$1,0,12,0,21,30,0,0,13,30,22,0,1,0,12,30,22,30,0,0,2,30,23,0,1,0,22,0,12,0,2,0,8,0,21,0,0,0,12,30,21,0,2,0,16,0,0,1,2,0,16,0,0,3#
and the # its the final string.

I make a code to read this string and work fine. It is the code.

int bluetooth =1;
char cadenaentrada [500];         // a string to hold incoming data
boolean cadenacompleta = false;  // whether the string is complete
int contleeblue=0;

void setup() {
  // initialize serial:
  Serial.begin(9600);
  // reserve 200 bytes for the inputString:
  //cadenaentrada.reserve(200);
}

void loop() {
  // print the string when a newline arrives:
 limpiacadenablue();
}


void serialEvent() {
  
  if (bluetooth==1)
  {
  while (Serial.available()) {
    
    char letra = (char)Serial.read(); 
    Serial.flush();
    
    cadenaentrada[contleeblue]= letra;
    contleeblue++;
    
    
    if (letra == '#') 
    {
      tratacadena(cadenaentrada,contleeblue);
      
      cadenacompleta = true;
    } 
  }
}
}

void limpiacadenablue ()
{
 if (cadenacompleta) {
   Serial.println("");
   Serial.print("Cadena rebida por bluetooth:");
    Serial.print(cadenaentrada); 
    // clear the string:
    //cadenaentrada = "";
   
    cadenacompleta = false;
    for (int cl=0; cl<=contleeblue; cl++)
    {
      cadenaentrada[cl]=0;
    }
  contleeblue=0;
    
  }
}

void tratacadena( char cadenarecibida [], int contcadenare)
{
  int i=0;
  int x=0;
  char cadenabuena[500];
  
  while( i<contcadenare)
  {
  while ((cadenarecibida[i] != '

I like to put my code in the main where the arduino monitors various functions but if I put not read the complete 64 -character string losing itself on. If I put a shorter chain is working perfectly.
If I put a shorter chain works perfectly .
Thank You
)&& (i<contcadenare))
  {
  i++;
  }
 
  while ((cadenarecibida[i] != '#')&& (i<contcadenare))
  {
    cadenabuena[x]=cadenarecibida[i];
    x++;
    i++;
  }
 
  cadenabuena[x]=cadenarecibida[i]; // para recoger #
    x++;
    i++;
   
  switch (cadenabuena[1])
            {
              case('e'):// cadena solicita envio de cadena
              {
               
                switch (cadenabuena[2])
                {
                  case ('r'):
                  {
                    // intro();
                    //cadenamuestra="se ha solicitado el envio de relojes";
                    //imprimemonitor(cadenamuestra);
                    Serial.println("");
                    Serial.print("Recibida cadena de solicitud de relojes: ");
                    Serial.print(cadenabuena);
                   
                    //mandarelojes();
                  }break;
                  case('s'):
                  {
                    Serial.println("");
                    Serial.print("Recibida cadena de solicitud de sondas: ");
                    Serial.print(cadenabuena);
                   
                    //mandasondas();
                  }break;
                  default:
                  {
                    Serial.println("");
                    Serial.print("Recibida cadena de solicitud de erronea ");
                    Serial.print(cadenabuena);
                  }break;
                }
               
              }break;
              case ('c'): // recibida cadena cambios relojes
              {
                switch (cadenabuena[2])
                {
               
                  case ('r'):
                  {
                    //cadenamuestra="Se ha recibido la cadena de cambios de relojes";
                    //imprimemonitor(cadenamuestra);
                    Serial.println("");
                    Serial.print("Recibida cadena de cambio de relojes: ");
                    Serial.print(cadenabuena);
                 
                    //enviabluestring("$l$ Recibidos cambios en relojes del servidor web#");
                    //reciberelojes(cadena);
                   
                  }break;
                  case ('3'):
                  {
                    //cadenamuestra="Se ha recibido la cadena de cambios de boton 3";
                    //imprimemonitor(cadenamuestra);
                    Serial.println("");
                    Serial.print("Recibida cadena de cambios de boton 3: ");
                    Serial.print(cadenabuena);
                   
                    //enviabluestring("$l$ Recibidos cambios en boton 3 del servidor web #");
                    //recibeboton3(cadena);
                    //mandaboton3();
                  }break;
                  case ('g'):
                  {
                    //cadenamuestra="Se ha recibido la cadena de cambios de sondas";
                    //imprimemonitor(cadenamuestra);
                    Serial.println("");
                    Serial.print("Recibida cadena de cambios de sondas: ");
                    Serial.print(cadenabuena);
                   
                    //enviabluestring("$l$ Recibidos cambios en sondas del servidor web #");
                    //recibetemp(cadena);
                    //mandatemp();
                 
                  }break;
                  case ('p'):
                  {
                    Serial.println("");
                    Serial.print("Recibida cadena de cambios principales: ");
                    Serial.print(cadenabuena);
                    //enviabluestring("$l$ Recibidos cambios principales del servidor web#");
                    //cadenamuestra="Se ha recibido la cadena de cambios de principal";
                    //imprimemonitor(cadenamuestra);
                    //recibeprincipal(cadena);
                 
                  }break;
                   
                }
              }break;
              default:
              {
                //enviabluestring("$l$ Cadena erronea general#");
                  Serial.println("");
                    Serial.print("Recibida cadena erronea: ");
                    Serial.print(cadenabuena[1]);
              }break;
             
             
            }
           
           
            for (int cl=0; cl<=x; cl++)
            {
              cadenabuena[cl]=0;
            }
                   
            x=0;
 
  }
}


I like to put my code in the main where the arduino monitors various functions but if I put not read the complete 64 -character string losing itself on. If I put a shorter chain is working perfectly.
If I put a shorter chain works perfectly .
Thank You

Just as a guess, you are using an Uno and running out of SRAM. Do you need two 500 character arrays?

i m using a mega. code reads the entire string if I have only the Captcha code . If I put all my code it is discontinued . It is memory problem ?
thanks