modificare impostazione comunicazione seriale cambiando il clock

ok, e se per caso avessi già messo come buffer size 256 e cmq non bastasse? qual è il massimo che posso impostare?
cmq, questo è il mio codice, le funzioni che non vedete definite non hanno grande importanza per questo problema

#include <AltSoftSerial.h>
// AltSoftSerial always uses these pins:
//
// Board          Transmit  Receive   PWM Unusable
// -----          --------  -------   ------------
// Arduino Uno        9         8         10
// Arduino Mega      46        48       44, 45

AltSoftSerial monitor;
int pnt=0;
int lostDataCounter;
int cs;//checksum value

//char array_response[8220];
float settings[7];
String command;
String response;
boolean flag;
boolean isTypeOneCommand, isTypeTwoCommand;

void setup(){
  Serial.begin(57600);
  monitor.begin(57600);
  delay(20);
  setDefaultValues();
  pinMode(13,OUTPUT);
  pinMode(2,OUTPUT);
  pinMode(11,OUTPUT);

}

void loop(){
  flag = false;
  isTypeOneCommand = false;
  isTypeTwoCommand = false;

  union{
    char byteData[4];
    float floatDatum;
  }
  datum;

  digitalWrite(13,LOW);
  digitalWrite(11,LOW);
  digitalWrite(2,LOW);
  command = "";
  response = "";
  cs = 0;
  lostDataCounter = 0;
  /*
  for (int i=0;i<220;i++){ //initialezes each element of arrayresponse to null character
   array_response[i] = 0x00;
   }
   */

  // k=0;//counter for array_response
  while(monitor.available()){
    command = monitor.readStringUntil('\r');
    command.trim();

    if (command.startsWith(":SPNT")){
      pnt = getPoints(command);
    }      

    if(command.charAt(5) == 32){
      isTypeOneCommand = true;
    }
    else if(command.charAt(1) == 'D' || command.charAt(1) == 'G'){
      isTypeTwoCommand = true;
    }

    cs = checkSum(command);
    monitor.print(command);       // type1commands are f
ollowed by hex(cs) 
    monitor.print(cs,HEX);
    monitor.print("\r"); 

    Serial.print(command);  
    Serial.print(cs,HEX);
    Serial.print("\r");
    flag = true;
  }//---end first while loop
------------------------------------------------------------------
------unica parte che secondo me crea problemi---------
-----------------------------------------------------------------
  while(Serial.available() || flag){
    digitalWrite(13,HIGH);
    char inChar= Serial.read();
    delayMicroseconds(300);
    if(inChar != -1 ){ //tdr.read() returns -1 when it reads nothing
      response += inChar;
      delayMicroseconds(100);
      flag=false;  
    }
    if(inChar == 13) {
      flag = false;
      digitalWrite(13,LOW);
    }
  }
--------------------------------------------------------------------
--------------------------------------------------------------------
-------------------------------------------------------------------
  if(response!="")
    monitor.println(response);
  if(isTypeTwoCommand && command == ":DUMP"){
    digitalWrite(2,HIGH);
    int j=0;    
    for (int i = 6; i < 33; i+=4){
      datum.byteData[3] = response.charAt(i);
      datum.byteData[2]= response.charAt(i+1);
      datum.byteData[1]= response.charAt(i+2);
      datum.byteData[0]= response.charAt(i+3);
      delay(5);
      settings[j] = datum.floatDatum; 
      j++;
    }
    for (int i=0;i<7;i++){
      monitor.println(settings[i],3);
    }
    digitalWrite(2,LOW);
  }
  if(isTypeTwoCommand && command == ":GWAV"){
    digitalWrite(11,HIGH);
    float Data[pnt];
    int j=0;
    for (int i = 6; i< response.length() - 6 ;i+=4){

      delayMicroseconds(100);
      datum.byteData[3] = response.charAt(i);
      delayMicroseconds(100);
      datum.byteData[2]= response.charAt(i+1);
      delayMicroseconds(100);
      datum.byteData[1]= response.charAt(i+2);
      delayMicroseconds(100);
      datum.byteData[0]= response.charAt(i+3);
      delay(5);
      Data[j] = datum.floatDatum;
      
      if( (Data[j] > 1) || (Data[j] < -1) ){
        digitalWrite(2,HIGH);
        lostDataCounter+=1; 
        digitalWrite(2,LOW);
      }
      j++;
    }
    digitalWrite(11,LOW);
    for (int i=0; i<pnt;i++){
      delay(50);
      monitor.println(Data[i]);
    }
    monitor.print(lostDataCounter);
    monitor.println(" data have been lost during the communication");
  }
}//----end void loop()

la seriale hardware è collegata allo strumento mentre quella software è collegata al monitor del pc per vedere i dati