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; }
}
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.
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.?
timer2.Enable = true; yapıyor musun?
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. ;)
Enable özelliğini true ya da false yaparak neden kullanmıyorsun?
Çeltefilli yollara gidiyorsun?
HOcam denedim olmadı. enable ile start stopun farkı varmı?
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.