Csharp’da basit kontrollü alarm


Deprecated: Function create_function() is deprecated in /var/www/vhosts/digitaldunyam.net/coder.digitaldunyam.net/wp-content/plugins/codecolorer/lib/geshi.php on line 4698

Bir önceki yazıda(Bugünün tarihi ve saati gösterme) uygulamasını biraz daha ileri götürerek; kullanıcın girdiği tarih ve saati kontrol edip eşitlendiğine alarm tarzı mesaj çıkaran uygulama ile merhaba.

Forma, resimdeki gibi bileşenleri ekleyelim. Bunlar; bugünün tarihi ve saati göstermek için 2 adet label ve bir tane timer nesnesi. Kullanıcıdan zaman verileri almak için; bir adet datetimepicker, 3 adet textbox, 2 adet buton ve alarmı kurmak için timer(formda bununla birlikte iki adet timer nesnesi oluyor).

Kod kısmına geçmeden önce başlıkta kontrollü yazmanın sebebini açıklayayım. Kontrollü, yani kullanıcın olası mantık ve giriş hatlarına karşı düzenlenmiş olduğu için yazdım. Örneğin kullanıcı eski bir tarihi girmiş olabilir, eski tarih girdiğinden dolayı alarm hiçbir zaman çalışmaz. Bundan dolayı kontrolleri ile yazmak istedim. Kod kısmında deneyerek ne demek istediğimi anlayacağınız umuyorum.

1
2
3
4
5
 private void saattarih_Tick(object sender, EventArgs e)
        {
            ltarih.Text = DateTime.Now.ToShortDateString();
            lzaman.Text = DateTime.Now.ToLongTimeString();
        }

Bugünün tarihi ve saati gösterme uygulamasında kileri burada tekrar yaptık.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
            int saat = 0;
            int dakika = 0;
            int saniye = 0;
            private void btnayarla_Click(object sender, EventArgs e)
            {
                if (txtsaat.Text == "" | txtdakika.Text == "" | txtsaniye.Text == "") // Saat veya dakika veya saniye boş bırakılmayacak
                {
                    MessageBox.Show("Girilen değerleri kontrol et \n Alanlardan herhangi birini boş bırakma");
                    return;
                }

                try //uygulamanın olsaı hatada kitlenmemesi için try catch ile girilen değerleri kontrol ettik
                {
                    saat = Convert.ToInt32(txtsaat.Text);
                    dakika = Convert.ToInt32(txtdakika.Text);
                    saniye = Convert.ToInt32(txtsaniye.Text);

                }

                catch
                {
                    MessageBox.Show("Girilen değerleri kontrol et \n Alanlardan herhangi birini boş bırakma");
                }

                if (23 < saat | -1 > saat) // saati 23 ile -1 arasına değerlerin girmesi şartı sağladık
                {
                    MessageBox.Show("Doğru saati girin!!!");
                    return;
                }
                else if (59 < dakika | -1 > dakika) // dakikayı saat gibi aynı şekilde şartı sağlattırdık
                {
                    MessageBox.Show("Doğru dakikayı girin!!!");
                    return;
                }
                else if (59 < saniye | -1 > saniye) // saniyeyi saat gibi aynı şekilde şartı sağlattırdık
                {
                    MessageBox.Show("Doğru saniyeyi girin!!!");
                    return;
                }

                alarmayar(dateTimePicker1.Value.Date);
            }

Burada saat, dakika ve saniye kontrollerini gerçekleştirdik. Kullanıcı hatalarına karşı uyarı mesajları sağladık. Try catch ile int değer almak için hata denetimi yaptırdık.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        DateTime alarmzamani; //değişken tanımladık
        private void alarmayar(DateTime zaman) //alarm ayarı için metot kullandık
        {

            alarmzamani = zaman;  //saat dakika ve saniyeyi alarmzamani zaman değişkenine atıyoruz
            alarmzamani = alarmzamani.AddHours(saat);
            alarmzamani = alarmzamani.AddMinutes(dakika);
            alarmzamani = alarmzamani.AddSeconds(saniye);

            if (DateTime.Now > alarmzamani) //alarmı eski zamana kurdurma!
            {
                MessageBox.Show("Geçmiş zamana alarm kuramazsınız !!!");
                return;
            }

            talarmkur.Enabled = true; //alarm timer'ını aktif hale geitriyoruz
        }

Burada metot kullanarak girilen saat, dakika, saniyeyi alarmzamani değişkenine atayarak eski tarih girilmemesi için kontrol sağladık.

1
2
3
4
5
6
7
8
9
10
11
12
        DateTime simdi;
        private void talarmkur_Tick(object sender, EventArgs e)
        {
            simdi = DateTime.Now;


            if (simdi.ToString() == alarmzamani.ToString())
            {
                talarmkur.Enabled = false;
                MessageBox.Show("Alarm Zamanı");
            }
        }

Son olarak da alarm için eklediğimiz timer nesnemi de simdi zaman değişkeni atayarak girilen değer ile karşılaştırma yaptık. Timer 1 saniyede bir çalışacağı için her saniyede bu döngüyü kontrol edecek girilen zamana geldiğinde ise messagebox ile “Alarm Zamanı” mesajını verecek(ses dosyası ekleyerek zil sesi çaldıra bilirsiniz).

Gerekli açıklamaları kod içinde bulabilirsiniz. Daha fazlasına ihtiyacınız olursa yorum yazmanız yeterli…

“Csharp’da basit kontrollü alarm” için 6 cevap

  1. yaa cok ıyı oldu bu tsekkurler bılgı ıcın ama bırtek anlamadıgım alarmayar olarak yazan nedır acaba neyın ıcıne yazıorz o kodları cözemedm??? ltfen yardm edersenz sevınrm

    1. Örnekte alarm zamanı mesajı verilen yere ses dosyası açtırman gerekiyor. Açtığın ses dosyasını da bir timer içinde tututp belirli bir süre veya süresiz aktif edip yani müziği çaldırabilirsin.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir