TASARIM BELGESİ

 

                                                              28.05.2001

 

 

                        WRC

                                                     Web Remote Control

 

 

 

 

Öz

 

Bu rapor, "WRC : Web Remote Control" projesi  tasarım raporudur.

Raporda, projenin kapsamlı tasarımının verilmesi amaçlanmıştır.

Proje tasarımı; mimari tasarım ,veri tasarımı ,arayüz tasarımı, prosedürel

tasarım ve proje planı, uygulama takvimi ile kullanılan kaynakları

içermektedir.

 

Kapsam

 

Bu projenin hedefi; Internet üzerinden bağlanılan web sayfasına girilen

komutlarla uzakta herhangi bir yerdeki yine internete bağlı bilgisayara bağlı

elektrikli cihazları kontrol etmektir.

 

Web sayfasında kontrol edilecek cihazların adları ve o andaki gerçek

durum (açık / kapalı) bilgilerinin uzaktaki internet kullanıcısına görüntülenmesi

de proje kapsamına dahil edilmiştir. Kontrol komutunun web üzerinden

gönderilmesinden sonra tekrar gerçek cihaz durumlarının görüntülenmesi

rahatsızlık yaratmayacak bir sınırlamayı da beraberinde getirmiştir ;

Komut yerel makinede bulunan veritabanına yazdığı bilginin bağımsız ve

eşzamansız çalışan port-server uygulaması tarafından işlenip, gerçek port

durum bilgisinin veritabanında ayrı bir alana yazılmasına ve bu bilginin

webserver uygulaması tarafından uzaktaki kullanıcıya ulaştırılması arasında

yerel makinedeki işlem yoğunluğuna göre değişen bir zaman farkı olacaktır.

Bu açıdan, webserver uygulamasının gerçek-zaman port durum bilgisini

gösterebilmesi için yerel makinede belirli bir süre bekleme yaparak

( 5-6 saniye kadar) uzak kullanıcı ekranına gelmesi gerekmektedir.

 

Ayrıca, kontrol edilecek cihazların paralel port üzerinden bağlı bulunduğu

bilgisayarın dinamik IP adresinin ele geçirilerek istenmeyen kişiler tarafından

kullanılmasını engellemek amacı ile kullanıcı adı ve şifre girişini mümkün

kılan bir web sayfası ve bu bilgileri barındıran bir tablo da  veritabanı tasarımına

eklenmiştir.

 

Proje kapsamında tasarımı yapılan LPT port - Elektrikli cihazlar arabiriminde

elktromekanik bir eleman olan "röle" nin kullanılması öngörülmüş, fakat tasarım

aşamasında bu elemanın getireceği bazı dezavantajları bertaraf edebilmek

açısından berebarinde bir sınırlama da getiren "triak" elektronik elemanın

kullanılarak tasarımının değiştirilmesi uygun görülmüştür.

 

"Röle" nin  dezavantajları :

  

   * Mekanik parçalarının mevcudiyetinden ötürü kullanımdan kaynaklanan

       yıpranma neticesinde kısa ömürlü olması.

 

   * Maliyetinin diğer alternatife oranla çok daha yüksek olması

 

   * fiziksel boyutunun büyük olması ve 8 adete kadar kullanılacak olmasından

       dolayı arabirimin boyutlarını önemli ölçüde büyütecek olması.

 

"Triak" ın sınırlaması :

 

   * projenin emplamantsayon aşamasında, arabirimin 220V AC şehir şebekesine

       bağlantı yapılırken faz ve nötr uçlarının belirlenerek buna göre tek bir şekilde

       bağlantı yapılması gerekmektedir.Son kullanıcının teknik olarak bu

       konuda yetersiz olduğu varsayılması gerektiğinden arabirimin proje geliştiricisi

       tarafından emplamante edilmesi zorunluluğu ortaya çıkmaktadır. Mamafih,

       bu konuya ilişkin çözüm üretme süreci devam etmektedir.

 

 

Mimari Tasarım

 

Yerel yönetici rolündeki kullanıcı ( muhtemelen bu kişi evindeki veya işyerindeki

cihazları kontrol etmek isteyecek web kullanıcısı ile aynı kişi olacaktır.) cihazlara

ve veritabanına erişim için gereken onayı verir. Böylelikle WRC artık uzak

kullanıcıdan gelecek komutları alabilir durumdadır.

 

Web kullanıcısı veritabanında kayıtlı kullanıcı adı ve şifresini girer. Böylelikle

sisteme komut gönderebilir. Komutları işleyen WRC bunları paralel porta

yazar ve durumu hem yerel ekrana hemde uzak kullanıcının web sayfasına

görüntüler.

 

 

1)WRC Web Server :

 

 İnternet kullanıcısının bağlanıp komutlarını girebileceği  web sayfasında

çalışan vekontrol edilmek istenen cihazların bağlı bulunduğu bilgisayardaki

veritabanına komutları yazan program;

 

Aktör ---> Uzak Kullanıcı

 

 

    *  Uzak kullanıcı giriş web sayfasında ilk olarak sisteme giriş ekranı olacaktır.

        Kullanıcı server üzerinde tanımlı kullanıcı adı ve şifresini girdikten sonra ,

        bağlı cihazların durum bilgilerini (açık / kapalı) gösteren  ve bu cihazları

        kontrol edecek komutları barındıran sayfaya ulaşacaktır.

 

    *  Komut girildikten sonra sayfa tekrar kendisini çağıracak, fakat bu sefer

        cihazların gerçek durumlarını server üzerindeki database den okuyarak

        tekrar yeni bilgileri ekrana basacaktır. Böylelikle iletilen komutun başarısız

        olma durumunda sonucun izlenebilmesi mümkün kılınacaktır.

 

 

2) WRC Port Server :

 

Komut database'nin bulunduğu bilgisayarda bağımsız çalışan; veritabanına

internet üzerinden yazılan komutları  küçük zaman aralıkları ile okuyup bunları

Paralel Port'a yazan 32bitlik Windows uygulaması;

 

Aktör ---> Admin Kullanıcı

 

 

    *  Bu uyguluma çalıştırıldığında ilk olarak veritabanı ve paralel port erişimlerini

        sağlayacak ve ardından gelen ekranda veritabanı +  port erişimi  ve elektrikli

        cihazların bağlı bulunduğu Paralel Port Databitlerinin  durumunu görsel

        olarak görüntüleyecektir.

 

   *  Admin Kullanıcının herbir databitine bağlı cihaz adlarını atayabileceği alanlar

        tasarlanacaktır.

 

   *  Admin Kullanıcı istediği bir anda veritabanı veya port erişimini kapatabilecek,

        ve acil durumlar için tek bir komutla müdahale edebileceği bir acil durum

        algoritması da bağlı bulunan bütün elektrikli cihazları, port ve veritabanı

        erişimlerini kapatacaktır.

 

Veri Tasarımı

 

Proje kapsamında iki ayrı yazılım parçalarının (WRC port server ve webserver)

ortak olarak kullanacağı bir veritabanı dosyasında ( Access tipi dosyada; *.mdb)

iki adet ayrı tablo tasarlanmıştır:

 

1) Databits;

 

  

Alan Adı Veri Tipi Açıklama Örnek
BitNo

integer

0'dan 7 ye kadar LPT databit no'ları 0,1,2,..,7
PortVal integer bir databitinin gerçek durum bilgisi 1
WebCom integer web uzak kulanıcının girdiği komutlar 0
CihazAd text bir databitine bağlı cihazın adı Radyo

 

WRC Port Server uygulaması BitNo alanına göre okuduğu LPT port gerçek

durum değerini PortVal alanına 1 veya 0 olarak yazar. Ayrıca Port Server

uygulamasının ekranında tasarlanmış alanlara admin kullanıcı tarafından atanan

cihaz adlarını CihazAd alanının ilgili BitNo'suna göre yazar. Port Server uygulaması

aynı zamanda uzak kullanıcının webserver aracılığı ile WebCom alanına yazdığı

komutları bu alandan okur ve LPT portunun adresine yazar.

 

WRC Web server uygulaması uzak kullanıcının girdiği AÇ / KAPA komutlarını

WebCom alanına yazar. Ayrıca Port server uygulamasının PortVal alanına yazdığı

cihazların bağlı olduğu databitlerinin gerçek durumlarını okuyarak uzak kullanıcının

görüntülediği web sayfasına yazar.

 

2) User;

 

 

Alan Adı Veri Tipi Açıklama Örnek
Name text Uzak kullanıcı adı burak
Password text Uzak kullanıcının şifresi b2001

 

WRC Web server uygulaması giriş web sayfasında uzak kullanıcının girdiği

kullanıcı adı ve şifresini Name ve Password alanlarına bakarak uyuşan bir

kayıt bulursa kontrol sayfasına erişim izni verir.

 

 

Arayüz Tasarımı

 

1) WRC Port Server Uygulamasının modüllerinin kontrol akışının

     aşağıdaki gibi yapılandırılması tasarlanmıştır :

 

 

 

 

2) WRC Web Server Uygulamasının modüllerinin kontrol akışının

     aşağıdaki gibi yapılandırılması tasarlanmıştır :

 

 

 

 

Prosedürel Tasarım

 

WRC Port Server :

 

    1) Ana Modül :

 

            i) Initialize :

 

                    * LPT Port adresini global değişkene ata.

                    * Veritabanına erişimi aç.

                    * Port erişimini aç.

                    * Porttaki fiziksel durum değerini oku.

                    * Bu değeri veritabanında PortVal alanına yaz.

                    * Veritabanından CihazAd alanındaki string'leri oku,

                        bunları ana ekrandaki textbox'lara yaz.

                    * Veritabanı erişimini kapat.

                    * Port erişimini kapat.

 

            ii) Zamanlı işler : ( Bu alt-modül her 100ms de bir çalışacaktır)

 

                    * Port erişimi açıksa -->

                            * Port değerini oku.

                            Veritabanı erişimi açıksa -->

                                * Bu değeri veritabanında PortVal alanına yaz.

                    * Veritabanı erişimi açıksa -->

                            * WebCom değerini oku.

                            Port erişimi açıksa -->

                                * Bu değeri porta yaz.

 

            iii) Komut butonu işleyicileri :

 

                    * Veritabanı erişimi butonuna basılırsa -->

                            Veritabanı erişimi açıksa -->

                                Veritabanı erişimini kapat.

                            Veritabanı erişimi kapalı ise -->

                                Veritabanı erişimini aç.

                    * Port erişimi butonuna basılırsa -->

                            Port erişimi açıksa -->

                                Port erişimini kapat.

                            Port erişimi kapalı ise -->

                                Port erişimini aç.

                    * Acil butonuna basılırsa -->

                            Acil alt-yordamını çağır.

 

            iv) Acil alt-yordamı :

 

                    * Port erişimini kullanıcılara kapat.

                    * Tüm Databitlerine 0 değerini yaz.(cihazları kapat)

                    * Port değerini oku.

                    * Bu değeri veritabanındaki PortVal alanına yaz.

                    * Veritabanı erişimini kapat.

 

            v) Ekran güncelleme :

 

                    * Port databitlerinin değerini tutan global değişken değerini oku.

                    * Bu değerlere göre herbir databitine atanmış kutuları,

                       değer 1 ise -->

                            * Yeşil yap.

                        değer 0 ise -->

                            * Kırmızı yap.

                    * Veritabanı ve Port erişimlerinin durumunu tutan global

                        değişkenlerin değerlerini oku.

                    * Bu değerlere göre erişimlerre atanmış kutuları,

                       değer 1 ise -->

                            * Yeşil yap.

                        değer 0 ise -->

                            * Kırmızı yap.

 

            vi) Binary-Decimal dönüştürücü :

 

                      * Veritabanında WebCom da bulanan değerlere atanmış global

                          dizi değişkenin her elemanı ikilik tabanda bir digite karşılık

                          gelir, bunları kullanarak ondalık sayı elde et, bunu global

                          bir değişkene ata.

                      * Porttan okunan değeri tutan global değişkenin değerini

                         ikilik tabana çevirerek her bir digit değerini bir dizi değişkenin

                         elemanlarına ata.

 

    2) Database erişimi :

 

            i) DB okuma :

                    * DB erişimi açıksa -->

                            * WebCom değerlerini okumak için SQL sorgu cümlesini hazırla.

                            * değerleri oku, global dizi değişken elemanlarına ata.

                            * Binary-Decimal dönüştürücü alt yordamnı çağır.

                            * CihazAd değerlerini okumak için SQL sorgu cümlesini hazırla.

                            * değerleri oku, textbox değerleri olarak ata.

 

            ii) DB yazma :

                     * DB erişimi açıksa -->

                            * Port databitlerinin değerlerini tutan global dizi değişkenin

                               elemanlarının değerlerini SQL cümleciği ile birleştir.

                            * PortVal alanının kayıtlarını update et.

 

            iii) DB erişim kontrolü :

                    * DB erişiminin boolean değerini tutan global değişken TRUE ise -->

                            * ADO nesnesini yarat.

                            * ADO bağlantı cümlesini ve database dosya adını hazırla.

                            * ADO bağlantısını gerçekleştir.

                    * DB erişiminin boolean değerini tutan global değişken FALSE ise -->

                            * ADO bağlantısını kapat.

                            * ADO nesnesini NULL değerine eşitle. ( Nesneyi yoket.)

 

   3) Port Erişimi :

 

            i) Port okuma :

                    * Port erişiminin boolean değerini tutan global değişken TRUE ise -->

                            * Okuma fonksiyonun bulunduğu wrcport.dll dosyasına bağlantı

                                yap, port adres değerini parametre olarak geçir.

                            * Geri döndürülen değeri port değerini decimal olarak tutan global

                                değişkene kopyala.

                            * Binary-Decimal dönüştürücü alt yordamını çağır.

 

            ii) Porta Yazma :

                    * Port erişiminin boolean değerini tutan global değişken TRUE ise -->

                            * Veritabanından okunup, decimale dönüştürülmüş değeri oku.

                            * Bu değeri ve port adresini wrcport.dll dosyasındaki yazma

                               fonksiyonuna parametre olarak geçir.

 

            iii) Port Erişimi Kontrolü :

                    * Port erişiminin boolean değerini tutan global değişken TRUE ise -->

                            wrcport.dll dosyası bağlantısına izin ver.

                    * Port erişiminin boolean değerini tutan global değişken FALSE ise -->

                            wrcport.dll dosyası bağlantısını yasakla.

 

WRC Web Server :

 

1) Kullanıcı giriş kontrolü sayfası :

        * Database Erişimi alt yordamını çağır.

        * User tablosundaki tüm kayıtları çağıran SQL sorgu cümlesini hazırla.

        * Sorguyu çalıştır, geriye dönen recordsetteki değerleri geçici dizi değişkene ata.

        * Uzak Kullanıcının girdiği kullanıcı adı ve şifresini bu değerlerle karşılaştır.

        * Uyuşma var ise -->

                * Kontrol sayfasına yönlendir.

        * Uyuşma yok ise -->

                * Hata mesajı bas ve geri dönüş butonunu görüntüle.

 

2) Cihaz Kontrol Ekranı sayfası :

 

        i) Database erişimi :

               * ADO nesnesini yarat.

             * ADO bağlantı cümlesini ve database dosya adını hazırla.

               * ADO bağlantısını gerçekleştir.

 

        ii) Ekran kontrolleri işleyicisi :

              * Sisteme o anda bağlanmış olan kullanıcı adını görüntüle.

              * cihaz adlarını gösterecek tetxtbox ları ve açık / kapalı

                 durumlarını gösterecek ve seçim yapacak listbox ları görüntüle.

              * Komut gönderme butonunu görüntüle

              * Veritabanından CihazAd ve PortVal değerlerini oku, ilgili textbox ve

                  listbox lara yaz.

              * ilgili cihaz AÇIK ise -->

                        * listbox'ın font rengini yeşil yap.

              * ilgili cihaz KAPALI ise -->

                        * listbox'ın font rengini kırmızı yap.

              * Komut Gönder butonuna basılırsa -->

                        * O anda listboxlarda seçili olan değere göre (AÇIK / KAPALI)

                            veritabanında WebCom alanının ilgili kayıtlarını 1 veya 0 olarak

                            update et.

              * Belirli bir süre bekle. (5-6 saniye)

              * Sayfayı yeniden çağır.

 

 

Proje Planı ve Uygulama Takvimi

 

              .

              .

* 17 Nisan 2001  - Proje teklifinin sunulması;

              Teklif Belgesi Sunuldu

 

              .

              .

* 7 Mayıs 2001 - Proje analizinin tamamlanması;

             Analiz Belgesi sunuldu

 

             8 - 15   Mayıs 2001 - WRC Web Server ve Veritabanı tasarımı

              16 - 24 Mayıs 2001 - WRC Port Server tasarımı

              25 - 28 Mayıs 2001 - Çevre arabirimi elektronik devre tasarımı

 

* 28 Mayıs 2001 - Proje tasarımının tamamlanması

               Tasarım Belgesi sunuldu

 

                29 Mayıs - 8 Haziran 2001 - WRC Web Server ve Veritabanı

                                                           gerçekleştirimi

                9 - 16   Haziran 2001 - WRC Port Server gerçekleştirimi

                17 - 18 Haziran - Çevre arabirimi gerçekleştirimi

 

* 18 Haziran 2001 - Gerçekleştirimin tamamlanması 

                  Gerçekleştirim Belgesi ile sunulacaktır.            

 

                    19 - 22 Haziran - WRC Web Server ve Veritabanı testleri

                 23 - 25 Haziran -WRC Port Server ve arabirim testleri

 

* 25 Haziran 2001 - Testlerin tamamlanması

              Test Belgesi ile sunulacaktır.

 

* 1 -2 Temmuz 2001 - Projenin Sunulması

 

 

17 Nis

7 May 8-15 May

16-24

May

25-28 May 29 May

8 Haz

9-16 Haz 17-18 Haz 19-22 Haz 23-25 Haz 1-2 Tem
Proje Teklifi                      
Analiz Belgesi                                  
Web Server, Veritabanı Tasarımı                              
Port Server Tasarımı                               
Devre Tasarımı                      
Web Server, Veritabanı gerçekleştirimi                               
  Port Server gerçekleştirimi                      
Çevre Arabirimi gerçekleştirimi                          
Web server ve Veritabanı testleri                      
Port server ve arabirim testleri                       
Sunum                      

 

Kaynakça

* Software Engineering, Ian Sommerville, Addison-Wesley, 1998

* MSDN, Microsoft Developer Network Library CD

* Learn Visual C++ 6.0 Now, Chuck Sphar, Microsoft Press, 1999

* The Visual C++ Handbook, Murray & Pappas, Osborne, 1995

* Paralel Port Complete, Jan Axelson, Lakeview Research, 1999

* Elektronik Elemanlar ve Devre Teorisi, Robert Boylestad - Louis Nashelsky,

    Prentice-Hall / M.E.B. (çeviri), 1994