AT Komutu ile SMS Gönderimi

Bu dersimizde sizlerle birlikte AT komutuyla SMS nasıl gönderilir konusunu işleyeceğiz..

Selam arkadaşlar,

Bu dersimizde sizlerle birlikte AT komutuyla SMS nasıl gönderilir konusunu işleyeceğiz..

Bu benim ilk makalem umarım herkese yararlı olacaktır.

AT komutu nedir, ne işe yarar, nerde bulunur, hemen bunu öğrenelim.

AT komutu 1970'lerin sonunda çıkan ve Hayes firmasının geliştirdiği, modemlerle bilgisayarların haberleşmesini sağlamak amacıyla kullanılan bir komut setiydi. Şimdilerde ise standart hale gelmiştir. Cep telefonlarında, bilgisayarlarda vs. hemen hemen birçok elektronik haberleşme cihazlarında bulunmaktadır.

AT komutuyla portlardan SMS gönderilebilir, uzaktaki cihazları kontrol edebiliriz.

AT komutunu öğrendik. Umarım sıkılmadınız :) Şimdi projemize başlayalım.

Hemen Visual Studio'dan yeni bir Windows form açıyoruz. Sonra da bir combobox, 2 button, 2 textbox formumuzun üzerine bırakıyoruz. Butonlarımızın isimlerini "gönder" ve "bağlan" olarak, textboxlarımızın isimlerini de "mesaj" ve "numara" olarak değiştirelim.

Şimdi gelelim kuru fasulyenin yararlarına (:

Tabi gelmeden önce global olarak ; SerialPort sp = new SerialPort(); bir yere yazıyoruz ve SerialPort Classımızı import ediyoruz.

Form içine yazılacak kodlar;


private void Form1_Load(object sender, EventArgs e)

        {

            string[] portlar = SerialPort.GetPortNames();  // portları dizi halinde aldık

            foreach (string port in portlar)

            {

                comboBox1.Items.Add(port.ToString()); // Portlarımızı combobox ın içine aldık.

            }

        }




Bağlan içerisine yazılacak kodlar;


private void button1_Click(object sender, EventArgs e)

        {

            if (sp.IsOpen) // Bağlantıyı açıyoruz.eğer önceden bağlan butonuna basmış isek yani bağlantıyı açmışsak aşağıdaki hata mesajını verecektir.

            {

                MessageBox.Show("Port Açık Bulunmaktadır..", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button3);

                return;

            }

            else

            {

                try

                {

                    sp.BaudRate = int.Parse("33600"); // Hız olarak 33600 verdik.

                    sp.DataBits = int.Parse("8"); // Veri bit ini de 8 bit olarak verdik

                    sp.StopBits = System.IO.Ports.StopBits.One; // Durma bitini tek sefer olarak verdik.

                    sp.Parity = Parity.None; // eşlik bit ini vermedik.

                    sp.PortName = comboBox1.Text; // Port adlarını comboboxtan alıyoruz. 

                    sp.Open(); // Bağlantıyı açıyoruz

                    MessageBox.Show("Bağlantı Başarılı");

                }

                catch (Exception) // Herhangi bir hata anında alttaki hata mesajını alacağız..

                {

                    MessageBox.Show("Beklenmedik Bir Hata Oluştu...", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button3);

                }

            }

        }



Gönder içerisine yazılacak kodlar;


private void button3_Click(object sender, EventArgs e)

        {

            try

            {

                if (sp.IsOpen)

                {

                    MessageBox.Show("Mesaj Gönderiliyor Lütfen Bekleyiniz..");

                    Thread.Sleep(1000); // Thread süresini 1000 olarak verdik

                    sp.Write("AT+CMGF=1" + (Char)13); //  Mesaj Formatını ayarladık.

                    sp.Write(String.Format("AT+CMGS="{0}"" + (Char)13, txt_Numara.Text));     // Mesajı txt_numaradaki numaraya gönder dedik.

                    sp.Write(String.Format("{0}" + (Char)26 + (Char)13, trDuzelt(txt_Mesaj.Text))); // txt_mesaj daki mesajı belirlediğimiz numaraya gönder dedik ve türkçe karakterkeri trDuzelt metoduyla duzenledık.

                    MessageBox.Show("Mesaj Gönderimi Başarıyla Sonuçlandı.."); //  Ve Mesajı Gönderdik

                }

            }

            catch (Exception)

            {

                MessageBox.Show("Mesaj Gönderme Başarısız !", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button3);

            }

        }



Şimdi de trDuzelt Adlı Metodumuzu yazıyoruz.


public string trDuzelt(string a)

        {

            a = a.Replace("İ", "I");

            a = a.Replace("Ü", "U");

            a = a.Replace("Ç", "C");

            a = a.Replace("Ş", "S");

            a = a.Replace("Ö", "O");

            a = a.Replace("Ð", "G");

            a = a.Replace("ı", "I");

            a = a.Replace("ü", "U");

            a = a.Replace("ş", "S");

            a = a.Replace("ç", "C");

            a = a.Replace("ğ", "G");

            a = a.Replace("ö", "O");

            return a;

        }



Bu makalemizin sonuna geldik. Bu makale orta seviyedeki yazılımcı arkadaşlar için hazırlandı.

İyi Çalışmalar...

Yusuf GÜLER
Yazılım Geliştirici & VeriTabanı Uzmanı
  • Etiketler;
Yusuf Güler
2003'ten beri bilgisayarla sıkı bir dost olan Yusuf Güler, 2005 yılında yazılıma merak sardı. <p>2006 yılından beri yazılım, donanım, network, sistem ve web alanında kendini geliştirdi. <p>2008 yılında profesyonel olarak yazılım hayatına başladı. Bir çok büyük ve orta ölçekli projelerde görev aldı. Zaman zaman proje yöneticiliği yaptı. <p>Şu an özel bir şirkette yazılım bölüm başkanı olarak çalışan Yusuf Güler, piyasada çeşitli projelerde de görev almaktadır. <p>MCP, MCTS, MCPD ünvanlarına sahiptir. 2010 yılında ise Bilge Adam B.T.A.'da aldığı 300 saat yazılım ve veritabanı uzmanlığı eğitimi ile altyapısını iyice güçlendirmiştir.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Proğramı çalıştırırken Telefonunuzun usb veya bluetooth ile bağlı olması gerekmektedir aksi takdir de hata verecektir
Konu hakikaten güzel . Bu konu ile alakalı olarak bir sorum olacak C# da boyle yazılan bir programla Orijin yani GONDEREN kısmındaki telefon numaramızı istediğim bir firma adı veya başka bir telefon nosu olarak değiştirebilirmiyiz. Bu mümkün müdür? Değiştirebilirse nasıl olur elinizde örnek kod varsa paylaşırsanız sevinirim özelden de msj atabilirsin.
Merhaba albado. Gönderen kısmındaki telefon numarasını değiştiremezsin sadece telefonda takılı olan hat tan mesaj yollayabildiğin için, telefona takılı olan hattın numarasından mesaj gitmektedir.bu yüzden telefon a hangi hat takılı ise onun üzerinden gönderme yapacaktır. İyi Çalışmalar.
Cevabın için teşekkürler. O zaman Orijini değiştirme için sadece Operatörlerden msj almamız geekiyor . AYrıca forumdan sana özel msj gönderdim. Gitmediyse msnden görüşebilirmiyiz. esyaysan@hotmail.com
Güzel saol ama bağlan butonuna yazdığımız kodlarda sp.IsOpen kodlarında sp 'de hata veriyodiğer sp. kodlarda da hata veriyo çözümünü bilen varmı ?
sp.Write(String.Format("AT+CMGS="{0}"" + (Char)13, txt_Numara.Text)); satırında da hata veriyor
Kodları doğru yazdığından emin misin .Sitemizden projenin setup ını indirebilirsiniz http://rexasoft.com İyi Çalışmalar.
sp.Write(String.Format("AT+CMGS="{0}"" + (Char)13, txt_Numara.Text)); yerine sp.Write(String.Format("AT+CMGS={0}" + (Char)13, txt_Numara.Text)); yazmanız gerekiyor . Ama program yine çalışmadı . "Mesaj Gonderiliyor" sonra "Mesaj Gonderildi" cevabını alıyoruz ama msj gitmiyor. Mesaj atarken 0532.... ile denendi , 532.... denendi , +90532... ile denendi ama hiçbir şekilde gitmiyor.Hatta telefon gondermeye bile çalışmıyor . Telefonda hiçbir işlem olmuyor. Sadece portu açıyor o kadar. Fakat siteden senin yaptığın programı indirdim. O program gayet güzel çalışıyor.
Merhaba, Makalede kullandığım kodlar ile yazdığım proğram ile aynı kodlara sahip.Sanalkurs tarafından değitirildiyse bilmiyorum. sizin doğru class ları eklediğinizden emin değilim. İyi Çalışamalar.
Kodlar yukarıda zaten değiştirilmiş mi sence ?
Sorun çözüldü yukarıdaki kodlarda hata var . Bu kodlarla mesaj atamazsın bilginize...
Ben bunu tam anlayamadım yukarda yazmışsınızki serialport sp=new serialport() bunu nereye yazıyoruz.
albado sorunun çözülmüş halini paylaşabilirmisiniz
albado arkadasım ozaman daha ıyısını yap sen paylasta butun herkes bundan faydalansın calısmıyor dedın sey senın calısıyor ama mutlaka bır yerde hatan varkı calıstıramıyorsun onun ıcın yanlıs yanlıs konusma
yusuf benım bır sorum olucak ben tek telefon degılde toplu sms atmak ıstıyorum ve atıyorum 100 kısıye atıcam if (sp.IsOpen) { MessageBox.Show("Mesaj Gönderiliyor Lütfen Bekleyiniz.."); Thread.Sleep(1000); // Thread süresini 1000 olarak verdik sp.Write("AT+CMGF=1" + (Char)13); // Mesaj Formatını ayarladık. sp.Write(String.Format("AT+CMGS="{0}"" + (Char)13, txt_Numara.Text)); // Mesajı txt_numaradaki numaraya gönder dedik. sp.Write(String.Format("{0}" + (Char)26 + (Char)13, trDuzelt(txt_Mesaj.Text))); // txt_mesaj daki mesajı belirlediğimiz numaraya gönder dedik ve türkçe karakterkeri trDuzelt metoduyla duzenledık. MessageBox.Show("Mesaj Gönderimi Başarıyla Sonuçlandı.."); // Ve Mesajı Gönderdik } surda nerde degısıklık yapmam lazım

Yukarı Git