2012-05-22 27 views
6

Estoy utilizando el componente ComPort para enviar mensajes SMS a través de un módem, el problema es que a veces obtengo sms a veces no recibo los comandos a en el cuerpo del mensaje de texto.Enviar sms a través del comando AT actúa raro

Aquí está mi código:

procedure SendSmsCosmote(numar,text : string); 
const 
    buf : Byte = 26; 
begin 
    Form1.ComPort1.WriteStr('AT+CMGF=1'+#13#10); 
    Form1.ComPort1.WriteStr('AT+CMGS="'+ numar + '"'+#13); 
    Form1.ComPort1.WriteStr(text); 
    Form1.ComPort1.Write(buf,1); 
end; 

¿Qué estoy haciendo mal? ¿Y por qué cuando leo del módem recibo lo que envié en la línea tx?

+0

tenga en cuenta el modo sincronizar o asincron ... – RBA

Respuesta

1

Intente agregar un pequeño retraso entre los comandos (o espere la respuesta del módem, "OK" normalmente).

+2

Con retraso (¿cuánto tiempo de todos modos?) No puede estar seguro de que el comando tuvo éxito, por lo que definitivamente esperaría la respuesta y verificaría su valor. – TLama

+0

Un segundo tiempo de espera es bueno. Recuerde que los módems pueden responder en modo detallado o numérico. A veces es bueno establecer contacto con el módem primero simplemente enviando 'AT + # 13 # 10'. –

+0

TLama: el retraso es una forma fácil de probarlo, y a veces una solución adecuada. – Harriv