Dont read bad caracters

someone know how i can do a correct comunication with esp8622 and apk (tcp server<->tcp client)

here is the problem:

http://subefotos.com/ver/?fe63c676738f9a6c2c08d5744997309do.png

i NEED send constantly values and esp8622 dont read it well sometime;

arduino bauidio:115200
esp8266 baudio:115200

apk: send msg like 5;del;45 (speed,state,servo_position)
this is my car code (tcp server):

    #include <SoftwareSerial.h>
    #include <Servo.h>
    
    #define M_ATRAS 4
    #define M_ADELANTE 5
    #define M_VELOCIDAD 6
    
    
    Servo servo;  // Crea un Objeto servo  
    SoftwareSerial ESP8266(3,2); //1)RX-> Azul, 2)TX->Amarillo
    
    String mar;
    int vel;
    int rot;
    
    void setup()
    {
      Serial.begin(9600);
      ESP8266.begin(115200);
      Serial.println("Iniciando...");
    
    
     comandoESP("AT+RST"); // reset module
     comandoESP("AT+CWMODE=3"); // configure as access point
     //comandoESP("AT+CWSAP=\"ESP\",\"1234567890\",3,3"); //SSID,PASSWORD,CHANNEL,PASSWORD-ENCRYPATION(0=NO PASSWORD)                                               //0 is encryption type like 0 = Open, 2 =WPA_PSK, 3 = WPA2_PSK, 4 = WPA_WPA2_PSK
     comandoESP("AT+CWJAP=\"DAAIO\",\"poip\"");
     comandoESP("AT+CIPMUX=1"); // configure for multiple connections
     comandoESP("AT+CIPSERVER=1,400"); // turn on server on port x
    
    Serial.println("Servidor TCP ON...");
    
     pinMode(M_VELOCIDAD, OUTPUT);
     pinMode(M_ATRAS,OUTPUT);
     pinMode(M_ADELANTE,OUTPUT);
     velocidad(0);
     servo.attach(7);  // Selecionamos el pinde control para el servo  Rango: 0<->155
     Serial.println("Posicion delservo: "+String(servo.read()));
    
    }
    
    void loop()
    { 
    if(ESP8266.available())
     {
       if(ESP8266.findUntil("+IPD,","."))
       {
          vel=ESP8266.readStringUntil(';').toInt();
          mar=ESP8266.readStringUntil(';');
          rot=ESP8266.readStringUntil(';').toInt();
          velocidad( vel);
          marcha(mar);
          rotacion(rot);
          Serial.println(String(vel)+"-"+mar+"-"+String(rot));
       }        
     }
    }
    
    void marcha(String tipo){
          if(tipo == "del")
         {
          //Serial.println("Adelante?");
           digitalWrite(M_ATRAS,LOW);
           digitalWrite(M_ADELANTE,HIGH);
         }
         else if(tipo == "tra")
         {
          //Serial.println("Atras?");
           digitalWrite(M_ATRAS,HIGH);
           digitalWrite(M_ADELANTE,LOW);
         }
    
    }
    void velocidad(int v){
      //Serial.println("Velocidad: "+String(v));
      analogWrite(M_VELOCIDAD, v); 
    } 
    
    void rotacion(int r){
        int rot =map(r,-10, 10, 125, 0); //mapeamos los valores que puede tener el acelerometro a los valores que puede tener el servo
        //Serial.println("Acelerometro: "+String(r)+" Servo: "+String(rot));
        servo.write(rot);
    }
    void comandoESP(String cmd)
    {
      ESP8266.println(cmd);
    
      if(ESP8266.available())
        Serial.println(ESP8266.readStringUntil(14));
    
      delay(1000*3); //3seg
    }

SoftwareSerial will not work at 115200 baud. Try 9600 baud.

And use code tags the </> button - not quotes for your code. It should look like this

...R

        Serial.println(ESP8266.readStringUntil(14));

14? It seems highly unlikely that the Arduino is sending anything terminated by a shift out character.

solved, i change to 19200 baudio and perfect

'baudio'? 'Baud' is a unit of measure named after a dude, same as 'Newton' or 'Pascal'. (It's number of state transitions per second).