23/11/2008    iPNo: 38.103.63.58
Mail Girisi  |
WEBMAİL  |  DİZİN  |  İLETİŞİM  |  REKLAM  |  HAKKIMIZDA
E-kart  |  Wallpaper  |  Download  |  Forum  |  Sohbet  | Üyeler  |  Edebiyat  |  Avatarlar  | Güzel Sözler  |  İnternet  |  Haberler  |  Canlı Tv İzle  |  Zorluk Çektikleriniz  |  Tarih  |  İsim Sözlüğü  |  Öğreniyorum  |  Oyun  |  Burçlar  |  Radyo Dinle  |   Hosting Hizmetleri  |  Web Messenger  |  Online Müzik

            Koaks oldukça ucuzdur ve kurulumu kolaydır. Bununla beraber tek güçleştirici faktör, LAN tekno­lojisinin RG numarası adı verilen (RG-58 gibi) farklı bir spesifikasyonu kullanmasıdır. Sonuç olarak mevcut kablonuz yeni bir teknolojiyle çalışmayabilir. Ancak bu teknoloji bir ev kullanıcısı ve küçük işletme sahibi için uzun yıllar hizmet görebilecek bir ağ kablolama alt yapısı sağlayacaktır. Aşağıda koaksın avantajları ve dezavantajları listelenmektedir:

 

Koaksın Avantajları              Kurulumu kolay

                                               Özellikle orta üzakfcktaki mesafelerde işaret-gürültü oranı                               yüksek

                                               Bakım masrafları az

 

Koaksın Dezavantajları        Güvenliği az, müdahale kolay

                                               Topolojileri değiştirmek zor

                                               Mesafe ve topoloji sınırlı

                                               Kolaylıkla hasar görebilir

 

           Çevirmenin Notu: İşaret-gürültü oranı, sayısal haberleşme sistemlerinin performansını karşılaştırırken kullanılan bir kriterdir. Bu oran bir ortamdaki mevcut gürültüye karşın veri iletiminin başarısını gösterir. Bu nedenle bir sistemin işaret-gürültü oranı ne kadar yüksek olursa, performansının da bu oranda iyi olduğunu söyleyebiliriz.

 

            Korumasız (Zırhsız) İki-Telli Kablo

 

            Korumasız İki-telli-kablo (Unshielded Twisted Pair, UTP) telefonunuzu hatta bağlamak için kullan­dığınız kabloya benzer. Tellerin her biri daha iyi aktarım olanakları sağlayan manyetik bir alan ya­ratmak için diğerinin etrafına dolanmıştır. Tel korumasız olduğundan elektriksel parazitlere açıktır,bu  nedenle kablonun yerleşimine dikkat etmeniz gerekir. Örneğin kablonuzu bir güç transformatörünün veya yüksek güçlü bir aydınlatma sisteminin yanından geçir­memelisiniz:

Koaks

            Ağınız için asla düşük kaliteli bir kablo tipi kullanmamalısınız. Mesela ağ diliminizde hiçbir zaman bir telefon yama kablosu kullanmayın. Telefon kablosu bir ağ kablosuna (RJ-45) oldukça benzemesine rağmen bu iki kablo tipinin farklı özellikleri vardır. Telefon akım taşıyan hemen her türlü or­tam üzerinde çalışmasına rağmen yüksek-hızlı veri ağları daha seçicidir. Eğer bir kablo mükemmel değilse veri bozulmaya uğrayacak ve ağınız iflas edecektir. Standart burmasız telefon kablosundan yapılan ve hat ile telefonunuz arasında yer alan 182,88 cm.lik tek bir yama kablo (silver satin adı verilir) tüm LAN'ın söz konusu dilimin tamamı üzerinden veri göndermesini önleyebilecektir.

 

            Uygun ağ kablosunu meydana getiren etkenler konusundaki karışıklığı ve kurulum hatalarını önlemek için Elektronik Endüstrileri Birliği/Haberleşme Endüstrisi Birliği (Electronics Industries Association/Telecommunication Industry Association, EIA/TIA) korumasız iki telli kablo türlerini birbi­rinden ayıran bir sistem geliştirdi. EIA/TIA sistemi kabloyu en altta 1. seviyeden en üst düzeyde 5. seviyeye kadar sınıflandırır:

 

Level l ve 2: Bu seviyedeki kablolar yüksek-hızlı dijital iletim için uygun Değildir ve sadece ses aktarımı için kullanılmalıdır.

 

Level 3: 3. seviye kabloyu 4Mbps (megabitsper second) token ringce 10Mbps 10Base-T gibi düşük-orta hızlı veri iletiminde rahatlıkla kullanabilirsiniz. Eğer ağınız yoğun oranda elektriksel para­zitlere maruz kalabilecek bir yerleşimde bulunuyorsa 10Mbps'lik hızlar için bile Level 4 kablo kullanmanız gerekir.

 

Level 4: 16Mbps token ring gibi 10Mbps'in üzerindeki hızlara çıkmaya başladığınızda en az Level 4 kablo kullanmalısınız.

 

Level 5: Bu en kaliteli kablo türü tüm aktarım hızlarında kullanılabilir (hatta l00Mbps hızındaki Fast Ethernet'de bile). Yalnız dikkat etmeniz gereken bir şey var: Yeni. yüksek-hızlı teknolojileri kullanmaya başladığınızda, kaliteli bir kablo kurulum firması ile çalışmaya itina edin; bu hızlarda yüksek-kaliteli bîr kurulum çok önemli hale getir:

 

            Öyleyse, hangi seviyeyi seçmelisiniz? Son birkaç yıldır ben Level 5 dışındaki hiçbir şeyi tavsiye et­miyorum. Kablo kurulumlu emek isteyendir iş olduğundan (toplam kurulum masrafının en azından dörtte üçü doğrudan bu emeğe gider; kompleks, birkaç katlı yerleşimlerdeki kurulum işlerinde ise (daha fazlası) yapılacak en akıllıca şey mümkün olduğunca uzun süre sizi idare edecek bir seçim yapmaktır. Kablo maliyetinden kıstığınız birkaç yüz dolar ileride en yeni LAN Teknolojileriyle çalış­mak için yeni kablo almanızı gerektirebilir. Unutmayın her fiziksel tesisatta olduğu gibi kablonuzun en az 10 yıl süreyle iş görmesini ve böylelikle gelecekte planladığınız ağ trafiğiniz açısından üzerine düşeni yapmasını istersiniz.

 

NOT   Her   zaman    müşterilerimden   biri    çıkıp    bana    üreticilerinden    birinin,

            spesifikasyonda Level 3 dendiği için token ring ve 10Base-T için Level 5                              

            kullanmamaları gerektiğini söyler. Bu yanlış anlama genellikle spesifikasyonun

            yanlış okunmasından ileri gelir: Spesifikasyon gerekli plan seviye yerine kabul          

            edilebilir minimum EIA/TIA seviyesini belirtir. Her zaman için daha düşük bir seviye             belirtildiğinde daha yüksek bîr seviyeyi kullanabilirsiniz (hatta kuttan-malısınız).

 

Koaks

            Gördüğünüz gibi C formatındadır.

            Yukarıdaki yardım ekranında gördüğümüz, Windows dizinini belirlemeye yarayan Api'nin Builder'deki kullanımını aşağıdaki örnekle görebilmekteyiz.

void __fastcall TForml::FormCreate(TObject *Sender)

{

char *d;

d="xxxxxxxxxxxxxxxxxxxx";//dizin ismi kadar harf atamak gerekli GetWindowsDirectory(d,257);//Windows dizinini d değişkenine al

ShowMessage(String(d));//Sonuç: c:\windows gibi bir mesaj

(String(d));//Sonuç: c:\windows gibi bir mesaj

}

 

Bazı özel API'ler ise WIN32.HLP dosyasında değil de diğer HELP dosyalarında tanımlanmıştır. Bu API help dosyalarına Win32s.hlp dosyasını kullanarak ulaşabilirsiniz. Bu özel API'ler şunlardır:

v     Multimedya API

v     OLE API

v     ETUP API

v     TELEPHONYAPI

v     INTERNET API

v     MESAJ API

v     OPENGLAPI vs.

Boş bellek miktarını öğrenmek

 

Boş     bellek     miktarını     ve     diğer     bazı     ayarları     öğrenebilmek     için GIobalMemoryStatus API'si kullanılır. Bu API'nin C formatı şöyledir:   

 

void GlobalMemoryStatus(LPMEMORYSTATUS IpBuffer);

 

Bu API Windows altında kullanılabilecek bellek hakkında bilgi verir. Fonksiyonun kullandığı MEMORYSTATUS aşağıdaki gibi tanımlanmıştır.

  typedef stmct_MEMORYSTATUS {     

  DWORD dvvLength;        // sizeof(MEMORYSTATUS)

  DWORD dwMemoryLoad; //percent of memory in use

  DWORD dwTotalPhys;    // bytes of physical memory                

  DWQRD dwAvailPhys;     //free physical memory bytes

  DWORD dwTotalPageFile; // bytes of paging file

  DWORD dwAvailPageFile; // free bytes of paging file                                              

  DWORD dwTbtalVirtual; U user bytes of address space                    

  DWORD dwAvailVirtual;//"free user bytes

}MEMORYSTATUS, *LPMEMORYSTATUS; 

dwMemoryLoad          Belleğin kullanım yüzdesini verir.

dwTotalPhys                Toplam fiziksel bellek(RAM) miktarını byte olarak verir.

dwAvailPhys                Fiziksel bellekteki boş miktarı byte olarak verir.

 

_MEMORYSTATUS yapısının Builder karşılığı TMEMORYSTATUS olarak tanımlanmıştır.

 

            ÖRNEK: BELLEK KULLANIMI

 

            Örnek olarak belleğin kullanım oranını, toplam ve boş bellek miktarını sürekli rapor edecek bir program yazalım. Örneğimiz için form üzerine üç Label ve bir Timer yerleştirin.

void _fastcall TForml::TimerlTimer(TObject *Sender)

{

MEMORYSTATTJS m;

 

GlobalMemoryStatus (&m);

Label1->Caption="Bellek kullanımı %" + IntToStr(m.dwMemoryLoad);

LabeI2->Caption='Toplam RAM:" + FloatToStr(m.dwTota!Phys/1024.0/ 1024.0) + " MB"; Label3->Caption = " Boş RAM:" + FloatToStr(m.dwAvailPhys/1024.0/ 1024.0) + " MB";

}

 

 

 

Koaks

 

         Mikroişlemci tipini ve sayısını öğrenmek

            Mikro işlemciyi ve diğer bazı ayarlan öğrenebilmek için GetSystemInfo API'si kullanılır. Bu API'nin C formatı şöyledir:

 

            void GetSystemInfo(LPSYSTEM_INFO IpSystemInfo);

 

            Bu Apı bilgisayardaki mikro işlemcinin özelliklerini aşağıdaki SYSTEM_INFO yapısında verir.

  typedef struct _SYSTEM_INFO {

      union {

            DWORD dw0emld;

            struct {

                  WORD wPrcx:essorArchitecture;

                  WORD wReserved;

 

         };

   };

  DWORD dwPageSize;

  LPVOID IpMinimumApplicationAddress;

  LPVOID lpMaximumApplicationAddress;

  DWORD dwActiveProcessorMask;

  DWORD dwNumberOfProcessors;

  DWORD dwProcessorType;

  DWORD dvvAllocationGranularity;

  WORD wProcessorLevel;

  WORD wProcessorRevision;

} SYSTEMJNFO;

dwProcessorType                  

 

işlemcinin tipini belirten bir sayı geri döner. 386, 486, 586 (Pentium, 686-Pr) işlemcilerini tanır. Diğer işlemcileri de (Cx586,686 gibi) 486 olarak tanır. Ayrıca Windows-NT için ALPHA-21064, ALPHA-21164,IMTEL-386, INTEL-486/INTEL-PENTIUM-586, INTEL-860, MIPS-R2000, MIPS-R3000, MIPS-R4000, PovverPC-601, PowerPC-603, PowerPC-604, PowerPC-620 işlemcilerini tanır.

 

            dwNumberOfProcessors

 

            Bilgisayardaki işlemci sayısını verir. Windows-95 birden fazla işlemciyi desteklemediği için her zaman l değeri döner, NT altında ise birden fazla CPU desteklendiği için işlemci sayısı bu parametre ile öğrenilir.

 void _fastcall TForml::FormCreate(TObject *Sender)

 {

 SYSTEMJNFO s;

 

 GetSystemInfo (&s);

 Caption=IntToStr(s.dwNumberOfProcessors) + " tane " +

IntToStr(s.dwProcessorType)-f " tipi işlemci";

}

 

 

         Windows versiyonunu ve ortamını öğrenmek

 

            Windows versiyonunu ve ortamını (95, NT vb) öğrenmek için GetVersion API'si kullanılır. Bu API'nin C formatı şöyledir:

 

            DWORD GetVersion(void);

 

            Bu fonksiyondan dönen değer 4 bytelık bir sayıdır. Bu sayının düşük kısmındaki iki byte Windows versiyonunu, yüksek seviyeli kısımdaki en yüksek bit ise Windows ortamını verir. Bu bit l ise Win32s veya Windows 95, O ise Windows NT ortamıdır.

 

void __fastcall TForml::Button1Click(TObject *Sender)

{

unsigned s,maj,min,d;

s= GetVersion();

maj = (DWORD)(LOBYTE(LOWORD(s)));

min= (DWORD)(HIBYTE(LOWORD(s)));

 

If (s < 0x80000000)                 // Windows NT

    Label1->Caption=(DWORD)(HIWORD(s));

else if (maj < 4)        //Win32s

      Label1->Caption= (DWORD)(HIWORD(s) & ~0x8000);

else         // Windows 95

      Label1->Caption= 0;

 

}

 

 

         Windows’u Kapatmak

 

            BOOL ExitWindowsEx(UirvrT uFlags, DWORD dwReserved);

 

            Windows'u   kapatmak   veya   bilgisayarı   yeniden   başlatmak   için   bu   API kullanılabilir.

uFlags parametresi ile ne yapılmak istendiği bildirilir. Bu parametreye aşağıdaki değerlerden biri verilebilir.

 

EWX_LOGOFF,               0   Aktif kullanıcıyı kapatır ve yeniden başlar.

EWX_SHUTDOWN,        1   Windows’u kapatır ve Bilgisayarınızı

                                                 Kapatabilirsiniz ekranı çıkar.

EWX_REBOOT,               2   Bilgisayarı yeniden başlatır.

EWX_POWEROFF,         3   l değeri gibidir. Farklı olarak bilgisayar

                                                 destekliyorsa, bilgisayarın gücünü de keser.

 

EWX_FORCE,                   4   Sisteme cevap vermeyen uygulamalar varsa

                                                 bunların sonlandırılması için kullanıcıdan onay ister

.

                                               Geriye dönen değer true ise işlem başarılmıştır, false ise                                                         kapatılma işlemi bir program tarafından iptal edilmiştir.

void _fastcall TForml::Button1Click(TObject *Sender)

{

.int x;

 

x = Application->MessageBox("Windows Yeniden Başlatılacak. Onaylıyor musunuz ?", "ReStart", MB_YESNO);

if(x==IDYES)

 

ExitWindowsEx(EWX_SHUTDOWN, 0);

}

 

 

         Formlara Şekil Vermek

            Formlarınız klasik dikdörtgen olmak zorunda değildir. İsterseniz formlarınızı daire, elips, çokgen vb şekillerde de hazırlayabilirsiniz.

 

            ÜÇGEN FORM

            Aşağıda bir üçgen form görülmektedir:

 

Koaks

 

            Üçken forma ait kod aşağıda yer almaktadır:

void__fastcall TForml::FormClick(TObject *Sender)

{

HRGN MyRgn;

 

TPointP[3];

P[0].x = 0;

P[0].y = 0;

P[l].x = Width;

P[l].y = 0;

P[2].x = (int)Width / 2;

P[2].y = Height;

 

MyRgn = CreatePolygonRgn(P, 3, WINDING);

SetWindowRgn(Handle, MyRgn, true);

}

 

 

ELİPS FORM

Yapmanız gereken  öncelikle CreateEIlipticRgn, CreatePolyPolygonRgn,

CreateRectRgn gibi bir API ile şekli oluşturmak ve buradan elde edeceğiniz şeklin handle numarasını SetWindowRgn API'sinde kullanmanız.

 

 

 

Bu API'deki parametreler oluşturulacak elipsin içine yerleştirileceği dikdörtgenin koordinatlarını belirler. İşlem başarılmışsa oluşan şeklin handle numarası geri dönecektir.

Oluşturulan bu şekli forma uygulayan API ise SetWindowRgn'dir.

 

 

 

 

 

 

Elips forma ait kod aşağıda yer almaktadır:

 

void __fastcall TForml::FormDbICIick(TObject *Sender)

{

 

HRGN sekilHandle;

  sekilHandle = CreateEllipticRgn(0, 0, Width, Height);

  SetWindowRgn(Form1->Handle,    sekilHandle, true);

}

 

Koaks

KUMBET FORM

void _fastcall TForm1::FormCreate(TObject *Sender) {

HRGN SekilHandle; TPoint p[9];

p[l].x=100;

p[l].y=100;

p [2].x=350;

p [2].y=0;

p [3].x=350;

p [3].y=0;

p [4].x=550;

p[4].y=100;

p[5].x=550;

p[5].y=200;

p[6].x=350;

p[6].y=300;

p[7].x=250;

p[7].y=300;

p[8].x=100;

p[8].y=200;

p[9].x=İOO;

p[9].y=100;

 

Seki1Handle = CreatePolygonRgn(p,9,0);

SetWindowRgn(Form1->Handle, Seki1Handle, true);

}

 

 

 

Koaks

 

W FORM

Aşağıda W şeklinde bir form elde edilmiştir:

fastcall TForml::TForml(TComponent* Owner)

          : TForm(Owner)

{

HRGN alan ; TPoint noktalar[12];

// w şekli tanımla

noktalar[0] = Point(0 , O   );

noktalar[l] = Point(50 , O   );

noktalar[2] = Point(180, 200 );

nokta!ar[3] = Point(218, 100 );

noktalar[4] = Point(256, 200 );

noktalar[5] = Point(385, O   );

nokta!ar[6] = Point(435l O   );

nokta!ar[7] = Point(256, 300 );

noktalar[8] = Point(218, 200 );

nokta!ar[9] = Point(180, 300 );

 

// alanı tanımla

alan = CreatePolygonRgn(noktalar,// tanımlanan noktalar

                       10,// nokta sayısı

                       ALTERNATE);// pencere için kullanılan mod

//(* Yukarıda tanımlanan pencerenin handle nosunu ayarla*)

SetWindowRgn(Handle,// formun handle

                alan,//atanımlanan alnın handle si

                true);// pencerenin yeniden çizdirileceğini belirler.

 

 

Koaks

            Kontrolleri Taşıma

            Bazı kontrolleri kullanıcının ekranda istediği noktalara taşıyabilmesini kolayca sağlayabilirsiniz. Yani kullanıcı, program çalışırken de kontrollerin yerlerini kolayca değiştirebilir. Özellikle başlığı olmayan formları kullanıcının taşımasını istiyorsanız Perform metodu ile programa bir Windows mesajı gönderebilirsiniz.

            Aslında Perform metodu bir API değildir ancak Windows mesajlarını işlemek için kullanıldığı için örneği bu kışıma koyduk. Metodun yazım şekli şöyledir:

 

            Buradaki MSG parametresi hangi mesajın gönderileceğini belirler. Windows ta binlerce mesaj olduğu için bunları kitapta veremiyoruz. Ancak merak edenler  API help dosyasına bakabilirler. WParam, LParam parametreleri ise tamamen mesaj numarasına bağlıdır. Her mesaj için bu parametreler değişir.         

            Eğer aşağıdaki kodu herhangi bir kontrolün MouseDown olayına koyarsanız  kullanıcı o kontrolün yerini kolayca değiştirebilir.

void__fastcall TForml::Button1MouseDown(TObject *Sender/

      TMouseButton Button, TShiftState Shift, int X, int Y)

{

ReleaseCapture();

Button1->Perform(WM_SYSCOMMAND, Oxf012, 0);

}

 

Yukarıdaki örnekte kullanıcı Button1 kontrolünün koordinatlarını istediği gibi belirleyebilir.

 

Program Çalıştırma

Builder'de herhangi bir uygulamayı (Dos veya Windows) çalıştırmak için gerekli komut bulunmaz. Bunun yerine WinExec API'si kullanılarak bu işlem kolayca gerçekleştirilebilir.

 

UINT Winexec(

   LPCSTR IpCmdLine,         // Çalıştırılacak Program adı

   UINT uCmdShow               // Pencere stili

);

 

 

 

ÖRNEK; PRQGRAM ÇALIŞTIR

v     Örneğin hesap makinesini çalıştırmak için aşağıdaki kodu kullanırız:

 

           

void __fastcall TForml::Button1Click(TObject *Sender)

{

WinExec("c:\\Windows\\calc.exe"/ SW_SHOW);

}

v     Örneğin FileListBox kontrolünden çift tıklanan bir dosyanın çalıştırılması için;

void _fastcall TForml::FileListBox1DblClick(TObject *Sender)

{

WinExec(FileListBox1->FileName.c_str()/SW_SHOW);

 

 

 

 

            ÖRNEK; BELGE ÇALIŞTIR

 

v     Sadece   çalışan   uygulamaları   değil   de   diğer   dosyalan   çalıştırmak   için RfshellExecute API'si kullanılır.

            Bu API kullanılacaksa unitin üst kısmına    #include "ShellApi.h" ifadesi eklenmelidir.

            Örneğin   BMP   uzantılı   bir  dosyayı   tıkladığımızda   önce   paint   programını :' çalıştıracak sonra istenen resim dosyasını yükleyecek gerekli aşağıdaki gibidir:

void _fastcall TForml::Button1Click(TObject *Sender)

{

ShellExecute(0, "open", "e.\\zpx.bmp","","", SW_SHOW);

}

 

Koaks

 

          Çalışan uygulamayı görev çubuğundan gizlemek

            Normal olarak Windows altında çalıştırılan her programın adı görev çubuğunda yer alır. Görev çubuğunda yer almayacak olan ve aynı zamanda çalışan bir uygulama için SetWindowLong API sini kullanacağız. Formun OnCreate olayına aşağıdaki kodu yazmamız yeterli olacaktır.

void _fastcall TForml::FormCreate(TObject *Sender)

{

SetWindowLong(Application->Handle, GWL_EXSTYLE/ WS_EX_TOOLWINDOW);

}

 

            Bu şekilde görev çubuğunda gizlenen bir programa Alt+Tab tuşuyla ulaşabiliriz.

         CD-Kapağını Açıp Kapatma

            mciSendString apisi kullanılarak CD-Rom kapağını açıp kapatmaya yarayacak komutlar gönderilebilir.

 


Telif Hakkı © 2004 - 2008 Egze Bilişim & Hosting Hizmetlerine Aittir