2012-05-22 13 views
6

Używam składnika ComPort do wysyłania wiadomości SMS za pośrednictwem modemu Problem polega na tym, że czasami dostaję sms czasami niekiedy dostaję komendy w treści wiadomości tekstowej.Wysyłaj sms przez AT Polecenie działa dziwnie

Oto mój kod:

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; 

Co robię źle? I dlaczego, kiedy czytam z modemu, dostaję to, co wysłałem na linii Tx?

+0

Zająć się trybem sincron lub asincron ... – RBA

Odpowiedz

1

Spróbuj dodać niewielkie opóźnienie między poleceniami (lub poczekaj na odpowiedź modemu, zwykle "OK").

+2

Z opóźnieniem (jak długo i tak?) Nie można mieć pewności, że polecenie się udało, więc na pewno poczekam na odpowiedź i sprawdzę jego wartość. – TLama

+0

Jeden drugi czas oczekiwania jest dobry. Pamiętaj, że modemy mogą odpowiadać w trybie pełnym lub numerycznym. Czasem dobrze jest najpierw nawiązać kontakt z modemem, wysyłając 'AT + # 13 # 10'. –

+0

TLAMA: opóźnienie to łatwy sposób na sprawdzenie go, a czasem odpowiednie rozwiązanie. – Harriv