Cep telfonuna sms attırma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
AhmetNuri
Üye
Mesajlar: 262
Kayıt: 02 Tem 2007 07:55
Konum: ist
İletişim:

Cep telfonuna sms attırma

Mesaj gönderen AhmetNuri »

Merhaba, Piyasada bazı programlar var.
vın modemleri yada modem özelliği olan telefonlar üzerinden sms atıyor.
telefonu bilgisayara bağıyorusun. o kendine bir com numarası laıyor com 13 gibi .
modem driver ı açınca eskiden kullandığımız dailup modem olarak kullanabiliyorsunuz.
bu konuda bilgisi veya küçük bir kodu olan olan var mı nasıl yapılır

teşekkürler
Ahmet DENİZ
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: Cep telfonuna sms attırma

Mesaj gönderen Lost Soul »

Bahsettiğiniz com üzerinden seri bağlantı gibi bağlnıyorsunuz TSocket, TComport ya da ona benzer bir bileşenle veya Socket metodlarıyla.
Sonra sms ile ilgili AT komutlarını icra ediyorsunuz.

zamanında yaptığım bir program vardı. Ticari sebeplerden Tüm metodu veremem ancak ipucu teşkil eden kıısmlarını vereyim.

Kod: Tümünü seç

function TMain.YazBekle(Yazilacak : AnsiString; BeklemeSuresi : Integer;Log : TStrings;SleepTime : Integer): AnsiString;
var
  xxStr : String;
  b : Boolean;
  Events : TComEvents;
Begin
  try
    if (log<>nil) and (Yazilacak<>'') then log.Add(Yazilacak);

    Application.ProcessMessages;

    Result :='';
    b:=false;
    if Yazilacak <> '' then Comport.WriteStr(Yazilacak + #13);

    Events := [evRxChar];
    Comport.WaitForEvent(Events,0,BeklemeSuresi);

    if SleepTime > 0 then Sleep(SleepTime);

    xxStr :='';
    Comport.ReadStr(xxStr,255);

    b:=True;
  except on e : Exception do
    result := UpperCase('ERROR:For[' + Yazilacak +']'+e.Message);
  end;
    if b then Result :=UpperCase(xxStr);

    if log<>nil then log.Add(Result);

    Application.ProcessMessages;
End;

Kod: Tümünü seç

function TMain.MesajGonderEx(Telefon: AnsiString; Mesaj: AnsiString.....
const
  MsgTimeOut = 45000;
var
  b : Boolean;
  TTBas : TDateTime;
  xStr : String;

begin
  try
    if Comport.Connected then ComPort.Connected := False;
    Comport.Events := [];
    ComPort.Connected := True;
  except
     Result := 'Bağlantı esnasında hata oluştu...';
     Exit;
  end;
  try
    Result :='';

    {baskıyı durdurun :)}
    YazBekle(';',500,apLog,500);
    {Echo off}
    YazBekle('ATE0', 500, apLog, 500);
    { Mesaj kayıt ayarı }
    YazBekle('AT+CPMS="MT","ME","SM"', 500, apLog, 500); // Bu kullnacağınız cihaza göre değişiklik gösterir
    { SMS indication }
    YazBekle('AT+CNMI=3,1,3,2,1', 500, apLog, 500);
    { SMS message format }
    YazBekle('AT+CMGF=1', 500, apLog, 500);

    xStr := YazBekle(';', 1000, apLog,500);
    xStr :=YazBekle('AT+CMGS='+Telefon,10000,apLog,1000); //mesaj gönderilecek numara
...
...
     if Pos('>',xStr)>0 then // eğer numarayı kabul edip mesajı bekliyorsa bu sembol gelir
      Begin
        xStr :=YazBekle(SMSMEtni(Mesaj)+#26,2000,apLog,500); //Mesaj + Ctrl+Z

...
...
...
          if (Pos('+CMGS',xStr)>0) or (Pos('OK',xStr)>0) then
          Begin
            b:=True;
            Result := 'Mesaj gönderildi...';
          End else
...
...
...


AT komutları ekseriyette aynıdır ancak cihazdan cihaza bazı komutlar değişiklik göstermektedir. Kodlarınızı ona göre düzenlemelisiniz.
Kolay gelsin.
Cevapla