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.
İ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.
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