C# - Modül AT modda değilken bile hata mesajı almak istiyorum.

Başlatan Hadi, 27 Temmuz 2016, 23:03:07

Hadi

Merhaba arkadaşlar.

Bluetooth modülün AT modu için bu şekilde bir kod parçacığı yazdım:

        string DataRecive;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (!sp.IsOpen) sp.Open();

            sp.Write(textBox1.Text + "\r\n");
        }

        public void receiveData(object sender, EventArgs e)
        {
            textBox2.Text = DataRecive;
        }

        private void sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            DataRecive = sp.ReadLine();
            this.Invoke(new EventHandler(receiveData));
        }


Şimdi modül AT modundayken program duzgun çalışıyor ve bir sorunum yok. Yani OK komutunu gönderince OK cevabını alıyor. Hatta TA gibi yanlış komut gönderince ERROR(0) cevabını da alıyor.

Bildiğiniz gibi modül AT modunda değilken veya ortada bir modül yokken, bir komut iletilmediğinden normal olarak bir cevap da geri gönderilmez.

Şimdi ben istiyorum ki bu durumlarda yazdığım kod, gönderdiğim komuta bir cevap alamadığı için bir hata mesajı versin. Bunun için nasıl bir yol izlemeliyim?

Şimdiden teşekkürler.

Kabil ATICI

Komutu gönderdiğin zaman yanıt gelme süresini biliyorsun, timer olayını da.

Komut gönderdiğin zaman timer çalıştır ve yanıt süresinin 2-3 katı kadar bir süre için timer'ı çalıştır(timer çalıştırmadan timer süresini ayarla), eğer beklenen süre içinde yanıt gelmezse, timer'ı devre dışı bırak ve hata mesajı ver.
Eğer beklenen süre içinde yanıt gelirse, timer'ı devre dışı bırak.
ambar7

kimlenbu

button1_Click event'ında bir timer çalıştır. Komut cevabı için bir timeout süresi belirle misal 2sn. Eğer veri gelirse verialindi=true yaparsın, alınmadıysa false olarak kalır. daha sonra timerın süresi bitince de verialindi yi kontrol edersin, true ise cevap gelmiştir, false ise gelmemiştir ve hata mesajını gösterebilirsin.

Hadi

Alıntı yapılan: Kabil ATICI - 28 Temmuz 2016, 02:23:10
Komutu gönderdiğin zaman yanıt gelme süresini biliyorsun, timer olayını da.

Komut gönderdiğin zaman timer çalıştır ve yanıt süresinin 2-3 katı kadar bir süre için timer'ı çalıştır(timer çalıştırmadan timer süresini ayarla), eğer beklenen süre içinde yanıt gelmezse, timer'ı devre dışı bırak ve hata mesajı ver.
Eğer beklenen süre içinde yanıt gelirse, timer'ı devre dışı bırak.

Alıntı yapılan: kimlenbu - 28 Temmuz 2016, 10:30:17
button1_Click event'ında bir timer çalıştır. Komut cevabı için bir timeout süresi belirle misal 2sn. Eğer veri gelirse verialindi=true yaparsın, alınmadıysa false olarak kalır. daha sonra timerın süresi bitince de verialindi yi kontrol edersin, true ise cevap gelmiştir, false ise gelmemiştir ve hata mesajını gösterebilirsin.

Arkadaşlar zaman ayırıp cevap verdiğiniz için sağolun ama ben istiyorum ki program veya devre kendisi hata versin. Yani kendisi anlasın. Nasıl ki yanlış komut gönderdiğimizde kendisi ERROR(0) hatası veriyor ya modülü bulamadığında da ERROR(A) hatasını versin.

Umarım bu sefer anlatabilmişimdir.