How can i Send Variables Value thru i2c Protocoll between 2 Arduinos.

The way you said didnt work so well it loose some bytes and sometimes get wrong values..
The way i did works great but if i change Baud Rate 9600 to 115200 it works lot faster, but sometimes miss some characters i dont no why!! if i set a delay(20) works correctly but i dont want a delay.. how can i fix this?

Master

// Written by Nick Gammon
// February 2012

#include <Wire.h>



const byte MY_ADDRESS = 25;
const byte SLAVE_ADDRESS = 42;
String capSensValues;
String analogSensValues;
String teste;
String teste1;
int analogInPin[16]; //array para abrir as  4 portas analogicas


void setup() 
{
  Wire.begin (MY_ADDRESS);
  Wire.onReceive (receiveEvent);
  Serial2.begin(115200);
  Serial.begin(115200);  

}  // end of setup

void loop() 
{
  
   if ( Serial.available()) {
    char recebido = Serial.read();
    if (recebido == 'a'){
      
    Wire.beginTransmission (SLAVE_ADDRESS);

    Wire.write ("A");

    Wire.endTransmission ();
      
   while (Wire.available () > 0)
    {
    byte b;
   

    b = Wire.read ();

    capSensValues += b; 

    } 
  //Transformando String em Array de Char
    teste = capSensValues;
    char charBuf[11];
    teste.toCharArray(charBuf,12);
    for (int i=1; i<=11; i++)
     {
        teste1 += charBuf[i];
        if (i<10){
        teste1 += ",";
      }
  //Fim da Transformacao    
    
    }

    for (int i=0; i<=15;i++){
      analogInPin[i] = i;
        int analog = analogRead(analogInPin[i])/4; //Atribui o valor do sensor 0,1,2 ou 3 e divide por 4 na variavel analog
      analogSensValues += analog;
      analogSensValues += ",";
  }
      
      analogSensValues += teste1;
  Serial.println(analogSensValues);
 //Serial.println(teste1);
  analogSensValues = "";
  capSensValues = "";
  teste1="";
  delay(20); //I want without this!
  }
  
 }
   }


void receiveEvent (int howMany)
 {

    // end of while available
} // end of receiveEvent

Slave

// Written by Nick Gammon
// February 2012

#include <Wire.h>
#include <CapSense.h>

const byte MY_ADDRESS = 42;
const byte OTHER_ADDRESS = 25;

CapSense   cs_2_3 = CapSense(2,3);        // 10M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil if desired
CapSense   cs_2_4 = CapSense(2,4);        // 10M resistor between pins 4 & 6, pin 6 is sensor pin, add a wire and or foil
CapSense   cs_2_5 = CapSense(2,5);        // 10M resistor between pins 4 & 8, pin 8 is sensor pin, add a wire and or foil
CapSense   cs_2_6 = CapSense(2,6); 
CapSense   cs_2_7 = CapSense(2,7); 
CapSense   cs_2_8 = CapSense(2,8); 
CapSense   cs_2_9 = CapSense(2,9);
CapSense   cs_2_10 = CapSense(2,10); 
CapSense   cs_2_11 = CapSense(2,11);
CapSense   cs_2_12 = CapSense(2,12);
CapSense   cs_2_13 = CapSense(2,13); 


byte p3tr=0;
byte p4tr=0;
byte p5tr=0;
byte p6tr=0;
byte p7tr=0;
byte p8tr=0;
byte p9tr=0;
byte p10tr=0;
byte p11tr=0;
byte p12tr=0;
byte p13tr=0;


void setup () 
{
  cs_2_3.set_CS_AutocaL_Millis(0xFFFFFFFF);
  cs_2_4.set_CS_AutocaL_Millis(0xFFFFFFFF);
  cs_2_5.set_CS_AutocaL_Millis(0xFFFFFFFF);
  cs_2_6.set_CS_AutocaL_Millis(0xFFFFFFFF);
  cs_2_7.set_CS_AutocaL_Millis(0xFFFFFFFF);
  cs_2_8.set_CS_AutocaL_Millis(0xFFFFFFFF);
  cs_2_9.set_CS_AutocaL_Millis(0xFFFFFFFF);
  cs_2_10.set_CS_AutocaL_Millis(0xFFFFFFFF);
  cs_2_11.set_CS_AutocaL_Millis(0xFFFFFFFF);
  cs_2_12.set_CS_AutocaL_Millis(0xFFFFFFFF);
  cs_2_13.set_CS_AutocaL_Millis(0xFFFFFFFF);
  
  cs_2_3.set_CS_Timeout_Millis(2);
  cs_2_4.set_CS_Timeout_Millis(2);
  cs_2_5.set_CS_Timeout_Millis(2);
  cs_2_6.set_CS_Timeout_Millis(2);
  cs_2_7.set_CS_Timeout_Millis(2);
  cs_2_8.set_CS_Timeout_Millis(2);
  cs_2_9.set_CS_Timeout_Millis(2);
  cs_2_10.set_CS_Timeout_Millis(2);
  cs_2_11.set_CS_Timeout_Millis(2);
  cs_2_12.set_CS_Timeout_Millis(2);
  cs_2_13.set_CS_Timeout_Millis(2);
  
  Wire.begin (MY_ADDRESS);
  
  Wire.onReceive (receiveEvent);
  Serial.begin(9600);
}  // end of setup

void loop() 
{
  
  long total3 =  cs_2_3.capSense(1000);
  long total4 =  cs_2_4.capSense(1000);
  long total5 =  cs_2_5.capSense(1000);
  long total6 =  cs_2_6.capSense(1000);
  long total7 =  cs_2_7.capSense(1000);
  long total8 =  cs_2_8.capSense(1000);
  long total9 =  cs_2_9.capSense(1000);
  long total10 =  cs_2_10.capSense(1000);
  long total11 =  cs_2_11.capSense(1000);
  long total12 =  cs_2_12.capSense(1000);
  long total13 =  cs_2_13.capSense(1000);
if (total3>100){
    p3tr = 1;
  }
  else{
    p3tr = 0;
  }
  if(total4>100){
    p4tr = 1;
  }  
  else{
    p4tr = 0;
  }
  if(total5>100){
    p5tr = 1;
  }
  else{
    p5tr = 0;
  }
  if(total6>100){
    p6tr = 1;
  }
  else{
    p6tr = 0;
  }
  if(total7>100){
    p7tr = 1;
  }
  else{
    p7tr = 0;
  }
  if(total8>100){
    p8tr = 1;
  }
  else{
    p8tr =0;
  }
  if(total9>100){
    p9tr = 1;
  }
  else{
    p9tr = 0;
  }
  if(total10>100){
     p10tr = 1;
  }
  else{
    p10tr = 0;
  }
  if(total11>100){
     p11tr = 1;
  }
  else{
    p11tr = 0;
  }
  if(total12>100){
     p12tr = 1;
  }
  else{
    p12tr = 0;
  }
  if(total13>100){
     p13tr = 1;
  }
  else{
    p13tr = 0;
  }
while (Wire.available () > 0)
  {
    char c;
    c = Wire.read ();
      if (c=='A'){
           Wire.beginTransmission (OTHER_ADDRESS);
            byte a[11] = {p3tr,p4tr,p5tr,p6tr,p7tr,p8tr,p9tr,p10tr,p11tr,p12tr,p13tr};
            
             Wire.write(a,11);
           Wire.endTransmission ();
    Serial.println(c);  
    }
    

  }

 
}  // end of loop

// called by interrupt service routine when incoming data arrives
void receiveEvent (int howMany)
 {

}  // end of receiveEvent