Elektronik / Elektronik Programlar/

C#: Gauge

Sponsorlu Bağlantılar

Çocuklarla meşe oynayacağım, iş yerine gideceğim, raporları yazacağım derken uzun bir süredir siteyle ilgilenemedim. Fakat bu geri dönüşte herkesin oldukça fazla ilgisini çekeceğini düşündüğüm bir konuya el attım: Gauge.

İnternette dolaşırken ‘gauge’nin oldukça fazla anlama sahip olduğunu gördüm; 1 milin 100’de biri, tüfek namlusu ölçü birimi, ölçü aygıtı.. Benim ise ilgilendiğim tanımı ‘gösterge’ olanıydı. Daha önce C#’ta chart işlemlerini burada paylaşmıştım, fakat ‘chart’ yapmak istediklerimi tam olarak karşılamamaktaydı, bu yüzden C#’ın drawing yani çizim kısmına girmem gerekti.

Öncelikle kendim bir seven-segment uygulaması yapmaya karar verdim. Seven segment’in o köşeli yapısını vermek için System.Drawing sınıfının Polygon metodunu kullandım. Biraz matematiksel hesaptan sonra yanda görülen sonucu elde ettim.

Fakat yapmak istediğimi, aklımdakini bir türlü oluşturamadım. C#’ta şekil çizmenin nasıl olduğunu öğrendikten sonra ise Amerika’yı tekrar keşfetmemek amacıyla internette aramalara koyuldum ve sonunda aradığım gauge’leri buldum.

1) Seven Segment

İlk gauge’miz biz elektronikçilerin asla vazgeçemeyeceği seven segmentle ilgili. Codeproject’te gördüğüm seven segment uygulaması Dmitry Brant‘a ait ve oldukça başarılı bir tool. İster tek bir seven segment öğesini ister küme halinde bulunan seven segment öğelerini formunuza yerleştirip, renginden, yatıklığına, büyüklüğünden, şekline kadar her şeyle oynayabiliyorsunuz. Telif hakları konusunda Dmitry Brant sadece ticari uygulamalar için kendisi ile görüşülmesini istemiş fakat Türkiye gibi bir ülkede kim bunu dikkate alır orası muamma.

seven_segment

2) Gauge

İkinci ve gördüğümde ‘işte bu’ dediğim gauge toolumuzu ise bu siteden buldum. İlk bakışta hiç bir şey anlaşılmasa da kaynak dosyayı indirip projenize dahil etmenizle gerçekten her anlamda kontrol edebildiğiniz bir göstergeniz oluyor. Büyüklüğünü, renklerini, açılarını, gösterge büyüklüklerini yani hemen hemen her şeyi kontrol edebiliyorsunuz. Tek yapmanız gereken class dosyasını projenize eklemek.

3) Sliding Scale

Üçüncü gaugemiz ise Tefik Becirovic‘e ait. Özellikle eski tip elektrik panolarında gördüğüm bu gösterge yerine göre oldukça faydalı işlevlerde kullanılabilir.

Projelerinize ayrı bir renk katacak bu göstergeler ile bir uygulama yapmamak olmazdı elbette. Bu düşünce ile aklıma ilk gelen uygulama, mikrodenetleyiciye bağlı sensörlerden alınan bilgilerin bu gaugeler kullanılarak bilgisayarda gösterilmesiydi ve sonucunda aşağıda görülen yapı ortaya çıktı.

atmega_16_terminal_Sliding_Scale

Yukarıdaki resimden de görüleceği üzere seri porttan haberleşme için gerekli protokolleri ayarlayan kısım daha önceki projemden bire bir alınma. Projenin nasıl bir işleve sahip olduğu ise aşağıdaki videodan görülebilir. Videoyu tam ekran seyretmenizi öneririm. (Eğer video açılmıyorsa youtube ile ilgili bir probleminiz var demektir.)

Videodan da görüleceği üzere Proteus ve yazdığım program arasındaki bağlantı, Proteus’un içerisinde bulunan COMPIM adlı araçla mümkün olmuştur. Projenin kaynak kodlarını paylaşmayacak olsamda seri porttan gönderdiğim seri bilgi şu şekilde.

4 bit: İlk seven segment dizisinin değeri, 1234 şeklinde gitmeli,
4 bit: İkinci seven segment dizisinin değeri, 1234 şeklinde gitmeli,
4 bit: İlk gerilim kaydırıcısının değeri, 5V=1024 olarak düşünülmeli, maksimum 1024 gönderilmeli,
4 bit: İkinci gerilim kaydırıcısının değeri, 5V=1024 olarak düşünülmeli, maksimum 1024 gönderilmeli,
4 bit: Üçüncü gerilim kaydırıcısının değeri, 5V=1024 olarak düşünülmeli, maksimum 1024 gönderilmeli,
4 bit: İlk sıcaklık göstergesinin değeri, 5V=1024 olarak düşünülmeli, maksimum 1024 gönderilmeli,
4 bit: İkinci sıcaklık göstergesinin değeri, 5V=1024 olarak düşünülmeli, maksimum 1024 gönderilmeli,
4 bit: İlk gerilim göstergesinin değeri, 5V=1024 olarak düşünülmeli, maksimum 1024 gönderilmeli,
4 bit: İkinci gerilim göstergesinin değeri, 5V=1024 olarak düşünülmeli, maksimum 1024 gönderilmeli.

Toplamda 36 byte boyutundaki diziyi C# ile çekmek için ise aşağıdaki kod öbeğini kullanabilirsiniz.

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e )
        {
            text = serialPort1.ReadExisting();

            if (text_temp.Length == 36 && flag == true)
            {
                flag = false;
            }
            else if(flag==true)
            {
                if (text_temp.Length < = 36)
                    text_temp += text;
                else
                    text_temp = "";
            }
        }

Son olarak gauge denemesi yaparken kullandığım CoreAudioApi adlı API'ye değinelim. Windows seslerini kontrol etmek için tasarlanmış bu .dll, Ray M. tarafından yazılmış ve tamamen bedava. Api bilgisayarın master sesini kontrol ettiği gibi, o anki sağ, sol ve master ses seviyelerini de alabiliyor. Bu da bizlere ses düzeylerini öğrenmemiz konusunda yardımcı oluyor.

Denememin sonucunda bu API'yi ve gauge'leri kullanarak aşağıda görebileceğiniz VuMetre uygulamasını yaptım.

computer_vumeter-c-gauge-windows

Bu uygulamaya ait video görüntüsü ise aşağıdan görülebilir. (Bilgisayarın sesini açarak dinleyiniz.)

Sonuç olarak tüm bu değerleri bir label'a ya da textbox'a yazdırıp, değişen değerleri yine gözlemleyebilirdik fakat örneklerde görüldüğü üzere gauge'ler projeye hem görsel hem de okuma kolaylığı kazandırdığından, kullanıcılar tarafından her zaman tercih edilmektedir. Bu yüzden sonraki yazılarımda bulduğum yeni gauge'leri yine sizlerle buradan paylaşacağım.

Programların 32 ve 64 bitlik sürümlerini ve Atmega16 için Proteus ve .hex dosyaları: C#: Gauge

Dosya indirme LINK listesi (TXT formatında) link-21483.zip şifre-pass: 320volt.com

Programların çalışabilmesi için sisteminizde Microsoft .NET Framework kurulu olması gerekmektedir. Microsoft .NET Framework kurulum dosyasına buradan ulaşabilirsiniz. Ayrıca programları istediğiniz şekilde paylaşıp, kullanabilirsiniz.

  • Ali

    Ben ilk siteden dosyaları indirdim fakat projeme ekleyemedim. Nasıl ekleyeceğim konusunda yardım ederseniz sevinirim.

  • FxDev

    Kodları yeni bir .cs dosyası ekleyip, aynı proje ismiyle buraya ekleyeceksiniz. Hepsi bu.
    .dll kullanma veya komponent ekleme diye google’dan ararsanız sonuç bulacaksınızdır.

  • yiğit

    Gerçekten güzel olmuş, iyi yapmışsın.