problema para recibir mensajes

Hola
mi problema es que no puedo recibir completos los mensajes en el monitor serial

para aclarar estoy usando un arduino uno con un modulo GPS y GSM sim808

#include <SoftwareSerial.h>
SoftwareSerial SIM808(7, 8); // Configura el puerto serial para el SIM808

char incoming_char = 0; //Variable para guardar los caracteres que envía el SIM808


void setup() {
      //digitalWrite(9, HIGH); // Descomentar para activar la alimentación de la tarjeta por Software
      //delay(1000); 
      //digitalWrite(9, LOW);
      delay (5000);  // Nos damos un tiempo para encender el GPRS y la alimentación de la tarjeta
      SIM808.begin(19200); //Configura velocidad del puerto serie para el SIM808
      Serial.begin(19200); //Configura velocidad del puerto serie del Arduino
      Serial.println("OK");
      delay (1000);
      SIM808.println("AT + CPIN = \"1234\""); //Comando AT para introducir el PIN de la tarjeta
      delay(25000); //Tiempo para que encuentre una RED
      Serial.println("PIN OK");
      SIM808.print("AT+CLIP=1\r"); // Activamos la identificación de llamadas
      delay(1000);
      SIM808.print("AT+CMGF=1\r"); //Configura el modo texto para enviar o recibir mensajes
      delay(1000);
      SIM808.print("AT+CNMI=2,2,0,0,0\r"); //Configuramos el módulo para que nos muestre los SMS recibidos por comunicacion serie
      delay(1000);

}

void loop() {

  if (Serial.available() > 0)
 SIM808.write(Serial.read());
 if (SIM808.available() > 0)
 Serial.write(SIM808.read());
  
  
  
  
  if (SIM808.available() > 0)
         {
            incoming_char = SIM808.read(); //Guardamos el caracter que llega desde el SIM808
            Serial.print(incoming_char); //Mostramos el caracter en el monitor serie
            if (SIM808.read() == "Hola")
            {
              
              mensaje_sms();
              
              
              }
              
            
         }

}

void mensaje_sms()
   {
      Serial.println("Enviando SMS...");
      SIM808.print("AT+CMGF=1\r");  //Configura el modo texto para enviar o recibir mensajes
      delay(1000);
      SIM808.println("AT+CMGS=\"0971322246\"");  //Numero al que vamos a enviar el mensaje
      delay(1000);
      SIM808.println("que tal ......");  // Texto del SMS
      delay(100);
      SIM808.println((char)26); //Comando de finalización ^Z
      delay(100);
      SIM808.println();
      delay(5000);  // Esperamos un tiempo para que envíe el SMS
      Serial.println("SMS enviado");
   }

Mas alla del código, esto esta mal

 if (SIM808.read() == "Hola") {
          mensaje_sms();
      }

No puedes comparar caracteres con una cadena.

Primero verificaría que lo que escribes por Monitor Serie es enviado y viceverza.

Luego cambiaría esa linea usando la comparación C-String correspondiente.

Algo asi

char opcion = "Hola";

y luego podrías hacer un bucle para ir comparando caracter a caracter, o usar una funcion de comparar cadenas de string.h:

if (strcmp(codigo, opcion)  == 0) //son iguales

donde código se armo con los caracteres recibiods por el SIM808 SIN LF y CR.