Comando AT+CMGS mas variable..

Hola a todos, estoy tratando de configurar la devolucion de un sms al mismo numero que envia el sms:

SIM900.println("AT+CMGS=\"+54xxxxxxxxx\"");

asi anda genial, pero el dato lo agrego manualmente, como puedo tomarlo de una variable char donde lo tengo almacenado?
esta dentro de una estructura...

struct {
  char Tel_sms[15];

}datos;

o sea la idea es hacer algo asi:

SIM900.println("AT+CMGS=\"Tel_sms\"");

probe asi y no anda ninguna:

Serial1.print("AT+CMGS=\"" + Tel_sms + "\"");

y asi

Serial.write(("AT+CMGS=\"" + Tel_sms + "\"").c_str());

y asi tmb

Serial1.write("AT+CMGS=\"");
Serial.print(Tel_sms );
Serial.write("\"");

cambia

Serial.write(("AT+CMGS=\"" + Tel_sms + "\"").c_str());

por

Serial.write(("AT+CMGS=\"" + Tel_sms + "\"");

y

Serial1.write("AT+CMGS=\""); // si esta es correcta (Serial1) las demás están mal

Serial.print(Tel_sms ); //<----- Serial.print??

Serial1.write(Tel_sms ); //<---- mejor Serial1.write

Serial1.write("\""); // Serial o Serial1??

deberían funcionar

Saludos

Hola Bosoft gracias por tu respuesta, te cuento respecto a lo que me indicaste:

Serial.write(("AT+CMGS=\"" + Tel_sms + "\""));

me da este error:

no matching function for call to 'HardwareSerial::write(StringSumHelper&)'

de cualquier manera ya corregí un error, es SIM900 y no serial, o sea seria asi:

SIM900.write(("AT+CMGS=\"" + Tel_sms + "\""));

eso lo se porque después de tantas pruebas jaja, este código:

SIM900.println("AT+CMGS=\"+54114561234\"");

envía perfecto el sms…

pero no logro que lo tome de la variable, y la variable esta bien porque primero hago una comparación de mi variable Tel_sms almacenada en la estructura datos:

struct {
  char Tel_sms[15];

}datos;

con mi variable Remitente que la comparo asi, primero la obtengo con esto:

int pos = mensaje.indexOf("+CMT: ");
    Remitente = mensaje.substring(pos+7,pos+20);

asi obtengo el numero del remitente y en esa variable lo almaceno, pero antes de avanzar las comparo:

if (Remitente == datos.Tel_sms){

que avance, y lo hace bien, porque lo envío desde otro celu y no hace nada.. o sea la compara perfecto...

La diferencia en las líneas de códigos entre Tel_sms y Remitente, es porque en tantas pruebas la verdad que probe directamente con las 2 en todas las formas posibles como puse en el mensaje anterior, pero independientemente de la variable, el código no quiere enviar ninguna, solo respeta si es numero tel puesto a mano..

por monitor veo esto:

+CMT: "+54xxxxxxxxx8","","19/02/07,10:58:23-12"
Er1
SMS enviado

AT+CMGF=1
AT+CMGS="+54xxxxxxxxx8"

OK

pero no llega el sms….

esto es el código qe muestra la salida que indique arriba:

SIM900.write("AT+CMGS=\"");
SIM900.print(Remitente);
SIM900.write("\"");
SIM900.println("Lo que sea.");

pero como dije antes, nop no anda..

Vale, prueba esto

//SIM900.println("AT+CMGS=\"+54114561234\"");
SIM900.print("AT+CMGS=\");
SIM900.print(Tel_sms);
SIM900.print("\"\r")

SIM900.print(mensaje); // texto del message
SIM900.print("\r");
SIM900.println((char)26); //Comando AT de finalizacion: ^Z (ASCII 26)
SIM900.println(); // otro salto de linea

Presta atención al .print sin el ln al final

Saludos

dice el compilador:

SIM900.print("AT+CMGS=\");

missing terminating " character

Lo corregi asi:

SIM900.write("AT+CMGS=\"");
        SIM900.print(Remitente);
        SIM900.write("\"");

pero tampoco...

Perdón, se me perdieron unas comillas :-[

es asíSIM900.print("AT+CMGS=\"");

Saludos

Hol bosoft muchas gracias por la respuesta..solucionado ya funciona...saludos..