Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual C# => Konuyu başlatan: since1990 - 05 Haziran 2012, 12:51:52

Başlık: C# ile seri prottan data gelince Timer Dursun.
Gönderen: since1990 - 05 Haziran 2012, 12:51:52
C# ta Timer ile işlemcilere data yollayıp cevap alıyoum. Eğer yolladığım datanın karşılğı yoksa beklemesin istiyorum yani. Bana cevap gelecekse beklemek istiyorum. Fakat data receieved eventin içerisinden timera müdahle edince timer duruyor?? Tekrar çalıştıramıyorum bi fikri olan varmı?

Gelen data kesmesi
private void seriport_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {

            timer2.Stop(); //Burda data geldiği için timer dursun istiyorum.
           
            bool ayrildi=false;
            decimal gelen_adres;
            decimal gelen_data;
            string[] data = new string[4];


           

            System.Threading.Thread.Sleep(100);

            gelen = seriport.ReadExisting();

            textBox1.Text = gelen;

            try
            {
               
                data[3] = null;
                data = gelen.Split("?".ToCharArray());
             ayrildi = true;
            }
            catch (Exception)
            { ayrildi = false; }

            if ((ayrildi == true))
            { gelen_adres = Convert.ToDecimal(data[1]);
            gelen_data = Convert.ToDecimal(data[2]);

            gelen_adres = gelen_adres / 10;

            Modul1.smodul[Convert.ToInt16(gelen_adres)] = gelen;
           
            }



            timer2.Start(); // data işleme işlemi bittiği için data göndermeye devam etmesi için timer 2 yi açıyorum tekrar.
           
       
       
       
        }


Timer 2 kesmesi

private void timer2_Tick(object sender, EventArgs e)
        {
           
                    seriport.DiscardOutBuffer();
                    adresler[0] = data_adres;
                   
                    seriport.Write(adresler, 0, 1);
                   

                    data_adres++;

                    if (data_adres > 12)
                    { data_adres = 1; }
               
            }

Başlık: Ynt: C# ile seri prottan data gelince Timer Dursun.
Gönderen: YARARMAN - 05 Haziran 2012, 13:39:53
Sorununu tam manasıyla anlayamadım.
Datanın karşılığı gelince zaten timer duruyor.
Sen tekrar başlatmak istiyorsan, veri gelip de işlerini bitirdikten sonra timerı tekrardan başlatacaksın.
Başlık: Ynt: C# ile seri prottan data gelince Timer Dursun.
Gönderen: since1990 - 05 Haziran 2012, 13:45:06
işte datareceieved eventin içerisinde timeri durdurp çıkşında çalıştırıyorum. Ama gerçekte brikez datareceieved eventin içerisine giriyor. Sonra  timer2.Start() etsemde çalışmıyor.?
Başlık: Ynt: C# ile seri prottan data gelince Timer Dursun.
Gönderen: YARARMAN - 05 Haziran 2012, 13:47:20
timer2.Enable = true; yapıyor musun?
Başlık: Ynt: C# ile seri prottan data gelince Timer Dursun.
Gönderen: since1990 - 05 Haziran 2012, 14:22:25
onuda denedim olmadı. Timer in içerisine bir şart koydum ifle ture veya false olarak bakıyorum yani timer yine tickliyor ama içerisindeki işlemi yaptırmıyorum. sorunumu böyle çözdüm :)
timer stop yerine hazir diye bir bool tanımladım. girerken false çıkarken true yapıyorum. timer içerisine de if (hazir==true) yazdım tüm timer ifadesine. ;)
Başlık: Ynt: C# ile seri prottan data gelince Timer Dursun.
Gönderen: YARARMAN - 05 Haziran 2012, 14:24:50
Enable özelliğini true ya da false yaparak neden kullanmıyorsun?
Çeltefilli yollara gidiyorsun?
Başlık: Ynt: C# ile seri prottan data gelince Timer Dursun.
Gönderen: since1990 - 05 Haziran 2012, 14:29:50
HOcam denedim olmadı. enable ile start stopun farkı varmı?
Başlık: Ynt: C# ile seri prottan data gelince Timer Dursun.
Gönderen: YARARMAN - 05 Haziran 2012, 14:41:43
Aşağıdaki bağlantıdaki yazılanları iyi oku.

http://msdn.microsoft.com/en-us/library/xh4x8z27 (http://msdn.microsoft.com/en-us/library/xh4x8z27)

timer içinde bool denetlemene gerek kalmaz.
Elbette o da ayrı bir seçenek.