Delpi ile port kullanımı

Cansiz

New member
Delpi ile port kullanımı
Aslını isterseniz bu makaleyi yazışımın nedeni geçenlerde bu iş için bayağı bi cebelleşmiş olmamdan kaynaklanıyo. Çünkü benim NT tabanlı sistemlerde yani kısaca 98 üstü diyelim :) ilk kez böyle bir tecrübem olmamasından kaynaklanıyor.Bu kadar uğraştıktan sonra ki ceviz.net teki arkadaşların yardımlarından da destek alarak bu işi hallettim bi makale yazmazsam ayıp olur dedim :)Neyse seanslara geçelim :p


İlk olarak LPT protlar hakkında kısaca bilgi edinelim.Lpt portlardan biz tek seferde 8 bitlik veri gönderme
yapabiliriz.Bunun için 2. pinden 9. pine kadar olan giriş/çıkış lar işimizi görür.Şase olarak 18 ile 25 arası
pinler çok sevimliler :)Diğer protların da ne işe yaradıkları aşağıdaki resimde kısaca bildirilmiş.(Ben pek
kullanmadığım için ayrıntılı bilgiye sahip değilim)


Eski sistemlerde 95 , 98 felan port kullanırken port[$378]:=(Gönderilcek bilgi); kod satırıyla biz işimizi
hallediyorduk.Fakat NT tabanlı sistemler çıktıktan sonra iş zorlaştı.Protected modda çalışırken
x86 (286 ve üstü intel ailesi ve uyumlu (AMD,via vb.)) bellek adreslerine erişim kısıtlı olmaya başladı.Yani
her uygulama da biz bellek adreslerini istediğimiz gibi kullanamamaya başladık.

Şimdi Delphi ile bu sorunun nasıl üstesinden geliriz ona geçelim.
İlk olarak Inpout32.dll dosyasını indirmemiz gerekli onu
adresinden çekelim ve WINDOWS/system32 dizinine atalım.Şimdi bu dll içinde ne var, ne işe yarar, yenirmi ona geçelim.
ipout32.dll de bir driver mevcut bu driver uygulama user modda çalışırken kernel moda geçerek veriyi porta yolluyor.
Dosyada bir fonksiyon ve bir procedure bulunmakta

Out32 Procedure: Out32(wAddr:word;bOut:byte) Bu procedure ile Porta bilgi aktarıyoruz
Inp32 function: Inp32(wAddr:word) Bu fonksiyonlada porttan bilgi okuyoruz.

Her şey bu kadar.Örnek uygulamaya geçecek olursak.İçinde 2 buton ve 1 edit bulunan bir formu kafamıza göre tasarlayalım.
Daha sonra interface - implementation kod satırları arasına aşağıdaki kodları ekleyelim

procedure Out32(wAddr:word;bOut:byte); stdcall; external 'inpout32.dll'
function Inp32(wAddr:word):integer; stdcall; external 'inpout32.dll'

Bu kodlar dll yi projemizde kullanabilmek için.

Şimdi prota bilgi göndereceğimiz butona şu kodu ekleyelim


Out32($378,$53);

Bu satır biraz açıklamayı haketmiyor değil. Out32 nin porta bilgi göndereceğimiz procedure olduğunu belirttik
$378 ile hepğimizin bildiği gibi Paralel protumuzun adresini belirttik. $53 ile ise göndereceğimiz bilgiyi
hex16 olarak belirttik.Burada $ işareti kullanmadan gönderilecek bilgiyi direk ($378,255)şeklinde integer olarak
belirtirsek programımız gene başarıyla işini görecektir.

Daha sonra diğer butona aşağıdaki kodu ekleyelim.

edit1.Text:=IntToHex(Inp32($378),2);

Buradada prottan bilgiyi okuyarak edit'e hex olarak yazdırdık.

Hepsi bu kadar.Herkese kolay gelsin.
 

murat335

New member
gercekten güzel bilgiler bide c# da api konturolu bulursan kodlarıyla beraber onu atarsanda sevinirim ben biraz buldum ama hep ingilizce kaynaklı acıklama bölümü türkcesini iyi anlatımlı bulursan .gercekten güzel olur
 

can-dee

New member
Saol işte sende okuldan toplamış bildiklerini war ya!!
Bende yayınlıcam görücen sen!!:):)
 

yavuz07

New member
arkadaşım çok güzel paylaşım gerçekten..
ama ben uzun zamandır deniyorum ister pascal ister delphi olsun bi türlü başaramadım..
parelel porta bir led bağlıyorum onu yakmaya çalışıyorum ama bi türlü daha beceremedim..

acaba yapabilen arkadaşlar varsa nasıl yaptıklarını anlatabilirler mi?
teşekkürler
 

HTML

Üst