2012-05-22 24 views
6

Sto usando il componente ComPort per inviare messaggi SMS tramite un modem il problema è che a volte ottengo sms a volte non a volte ottengo i comandi at nel corpo del messaggio di testo.Invia SMS tramite AT Comando funziona strano

Ecco il mio codice:

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; 

Che cosa sto facendo di sbagliato? E perché quando leggo dal modem ottengo ciò che ho inviato sulla linea tx?

+0

fare attenzione alla modalità sincron o asincron ... – RBA

risposta

1

Provare ad aggiungere un leggero ritardo tra i comandi (o attendere la risposta del modem, "OK" in genere).

+2

Con ritardo (quanto tempo comunque?) Non si può essere sicuri che il comando sia riuscito, quindi aspetterei sicuramente la risposta e verificarne il valore. – TLama

+0

Un secondo timeout è buono. Ricorda che i modem possono rispondere in modalità verbosa o numerica. A volte è bene stabilire prima il contatto con il modem semplicemente inviando "AT + # 13 # 10". –

+0

TLama: il ritardo è un modo semplice per testarlo e, a volte, una soluzione adeguata. – Harriv