Dersizle Forumları

Full Versiyon: visual basic 6.0 da paralel port kontrolü
Şu anda tam olmayan bir veriyonu görüntülüyorsunuz. Tam versiyonu görmek için, buraya tıklayın
uzgun2Arkadaşlar bana visual basic 6.0 da paralel port kontrolü ile ilgili geniş kapsamlı dökümanlar bulursanız sevinirim şimdiden herkese teşekkürleruzgun2
Paralel port bilgisayarinizin en kolay programlanabilir portudur. 25 pinden olusmaktadir. Bu pinler üzerinde DATA, STATUS, CONTROL adinda 3 tane port vardir. Bu pinlerden her hangi bir tanesinin "1" yani YÜKSEK olmasi durumu, o pinden okunacak voltajin +5 Volt olmasi anlamina gelir. "0" olmasi ise DÜSÜK durumunu yani 0 Volt olmasini gösteriyor. Buradan da neden ikilik sayi sistemini kullandigimizi bir daha anliyoruz.

Bilgisayariniz paralel portunuza ulasabilmeniz için bir porta adres atamistir. Bu adresi bulmak için Denetim Masasindan Sisteme, oradanda aygit yöneticisine girin. Portlara (Baglanti Noktalari) gelin. LPT portunun Kaynaklarindan Giris-Çikis araligindaki degerin ilk kismindaki deger yazici portunuzun adresidir.

Örneğin 0378 adresi için bu deger alt portlara asagidaki sekilde dagilir,

DATA portu h0378
STATUS portu h0378 + 1 yani h0379
CONTROL portu ise h0378 +2 yani h037A olur.

Paralel port temel olarak printer baglantisi için yaratilmistir. Her pinin bilgisayarin yazici ile anlasmasini saglayan bir görevi vardir. Bizim gerçeklestirecegimiz uygulamalarda çok gerekli olmayacak fakat yinede bilmekte fayda var. Asagidaki tabloada paralel port pinlerindeki sinyalleri ve giris çikis yönlerini görüyorsunuz.



DATA Portu:

Paralel port üzerinde DATA portuna ait 8 adet (D0-D7) pin vardir. Bu port paralel portunuzun taban adresini kullanir. 8 tane DATA pini oldugundan 8 Bitlik veri çikisi almak mümkündür. Yani bu 8 tane pinin "1" yada "0" degerlerini almasi ile veri akisi saglanmis oluyor. DATA portu normalde veri çikisi için kullanilmaktadir. Fakat bazi özel ayarlar yaparak, eger bilgisayariniz da destekliyorsa veri girisi yapmanizda mümkün olabilir.

Dedigimi sekilde DATA portundan 8 bitlik veri çikisi alabiliyoruz. DATA portuna hiçbir veri göndermedigimiz zaman ki degeri "00000000" dir. Dikkat ederseniz 8 tane "0" var. Örnegin data portuna 25 degerini gönderelim. 25 degerinin ikilik sayi sisteminde karsiligi "00011001" dir. Bu durumda D4, D3 ve D0 pinlerine karsilik gelen lojik degerler "1" oldugundan o pinler +5 Volt olacaktir. Asagida DATA pinine gönderdiginiz bazi degerler ile hangi pinlerin "1" olacagini gösteren örnek bir tablo görüyorsunuz.



DATA pinine istedigimiz degerleri Visual Basic yada QBASIC altindaki OUT komudunu kullanarak göndermeniz mümkün. Komudun kullanim sekli asagidaki gibidir.

OUT Adres, Veri

Adres degiskeni DATA portunuzun adresidir.Örnegin (&h0378). Veri degiskeni ise göndereceginiz verinin 10 tabanina göre sayisal degerini içermelidir. Örnegin tüm data pinlerini +5 Volt yapmak için porta "11111111" degerine karsilik gelen 128 degerini göndermeniz yeterli olacaktir. Bu komudu Visual Basic altinda kullanabilmeniz için inpout32.dll dosyasinin projeniz ile ayni klasörde bulunmasi gerekmektedir. Bu dosyayi buradan indirebilirsiniz.

STATUS PORTU

STATUS portu sayesinde, 15 - 13 - 12 - 11- 10 numarali pinlerden, 5 bit sayisal giris yapabiliriz. STATUS portu paralel portunuzun taban adresinin +1 fazlasinda bulunmaktadir. Örnegin paralel portunuzun taban adresi h378 ise STATUS portu h379 da bulunacaktir. Veriyi paralel portun seklinde gözüktügü gibi S7, S6, S5, S4, S3 pinlerinden yapacagiz. Bu 5 pinlerden herhangi bir müdahale bulunmadan okuyacaginiz lojik deger "1" olacaktir. Eger voltmetrenizle bu pinlerdeki voltaji ölçerseniz +5 Volt oldugunu göreceksiniz. Bu pinlere baglayacagimiz butonlar ile pinleri topraklayarak lojik degerlerini "0" yapip bir nevi veri girisi gerçeklestirmeniz mümkün. Fakat bu pinlerden S7, donanim tarafindan tersindirilmistir. Bunun anlami o pinin topraga çektigimiz zamanki degerinin "1" olacagidir. STATUS portunun kullanimini daha iyi anlayabilmeniz için Paralel Port ile Veri Girisi uygulamasini incelemenizi öneriyorum.

STATUS portundaki veriyi okumak için Visual Basic ve QBASIC 'teki INP komudunun kullanim sekli,

inp(taban_adres+1) seklindedir.

CONTROL PORTU

CONTROL portunu hem giris hem de çikis için kullanmak mümkündür. Paralel port üzerinde CONTROL portununa ait 4 tane pin vardir. Bu pinlerden C0,C1,C3 pinleri tersinmistir. Yani tersinmis olan bu pinlere veri göndermedigimiz zaman durumu "1" dir. Bu pinlerden bir tanesine veri gönderdigimizde o pinin degeri "0" olacaktir. DATA ve STATUS pinlerinin yetmedigi zamanda CONTROL portlari ile çikis yada giris almak mümkündür. Programlama sekli STATUS ve DATA portlari ile aynidir.

Paralel porttan veri girişi



Paralel porttan veri girişi STATUS yada CONTROL portuna ait pinlerden gerçekleştirilebilir. Hatta bazı ayarlamalar yaparak, eğer bilgisayarınız da destekliyorsa, DATA pinlerinden giriş yapmamız da mümkün olabilir. Biz STATUS portundan veri girişini inceleyeceğiz.

STATUS portu sayesinde, 15 - 13 - 12 - 11- 10 numaralı pinlerden, 5 bit sayısal giriş yapabiliriz. STATUS portu paralel portunuzun taban adresinin +1 fazlasında bulunmaktadır. Örneğin paralel portunuzun taban adresi h378 ise STATUS portu h379 da bulunacaktır. Veriyi paralel portun şeklinde gözüktüğü gibi S7, S6, S5, S4, S3 pinlerinden yapacağız. Bu 5 pinlerden herhangi bir müdahale bulunmadan okuyacağınız lojik değer "1" olacaktır. Eğer voltmetrenizle bu pinlerdeki voltajı ölçerseniz +5 Volt olduğunu göreceksiniz. Bu pinlere bağlayacağımız butonlar ile pinleri topraklayarak lojik değerlerini "0" yapıp bir nevi veri girişi gerçekleştirmiş olacağız.

STATUS portundaki veriyi okumak için INP komudunu kullanacağız. Kullanım şekli,

inp(taban_adres+1) şeklindedir.



Paralel porta veri giriş işlemi, temel olarak aynı olsa da veri çıkışından biraz daha karışıktır. Bunun sebebi STATUS portunda bulunan sinyallerden birinin donanım tarafından terslenmiş olmasıdır. Şimdi veriyi 8 bit olarak okuduğumuzu varsayalım. Bu durumda STATUS portundaki binary (ikilik sisteme karşılık gelen) değer, "11111111" olacaktır. Bu da 10 tabanında 255 'e denk gelmektedir. Fakat gelin görün ki, bu porttan veriyi okuduğumuz da bambaşka bir değer olan 127 ' ye rastlayacağız. Dikkat ederseniz 127 değerini binary olarak okursak "01111111" değerini elde edeceğiz. İşte buradaki 127 değerinin okunmasının sebebi pinlerden bir tanesi olan S7 nin terslenmiş olmasıdır. Yani S7 ye karşılık gelen pine veri yolladığımızda o pinin değeri "1" olacaktır. Diğerlerine veri yolladığımızda ise değerleri "0" olacaktır. Veriyi 8 bit olarak okuduğumuzu varsaymıştık. İşte okuduğumuz değerin son 3 bitini esasında okuyamıyoruz. Yani 127 değerinin okunabilir karşılığı "01111xxx" olacaktır. Buradaki x lerin bir değeri yoktur. İptal edilmiş bitleri göstermek için kullandım. Gerçekte okunan değer "01111" olacaktır. Bu da STATUS portuna veri girişinin 5 bit olduğunu bize bir daha gösterecektir.

Daha rahat işlem yapabilmek için tersinmiş olan S7 bitini bizim yazılım olarak tekrar tersindirmemiz gerekmektedir. Yani porta hiç bir müdahalede bulunmadan okumak istediğimiz değer "11111xxx" olmalıdır. Bu durumda en baştaki biti tersindirmemiz gerekecektir. Bu işlemi yapmanın en kolay yolu Xor kullanmaktır.

Xor, Exclusive-Or operatörü bir byte içerisindeki bir veya daha fazla biti tersindirmek için kullanılabilecek bir metodtur. XOR operatörünün BASIC 'te kullanımı aşağıdaki gibidir.

(okunan_byte) XOR (maske_byte)

Burada maske değerinde tersindirmek istediğimiz bitler için "1" , dokunmayacağımız bitler için "0" yazmalıyız. Örneğin "11100111" değerini "11111110" maskesi ile XOR larsak, elde ettiğimiz değer, "00011001" olacaktır. Biz paralel porta göndereceğimiz byte verisini "10000000" değerinin onluk tabanındaki karşılığı olan "128" ile XOR layacağız. Böylece okuduğumuz verinin en başta bulunan S7 den gelen kısmı "1" ise "0", "0" ise de "1" olacaktır. Sonuçta taban adresi h378 olan paralel porttan veri okumak için yazmamız gereken satır aşağıdaki gibi olacaktır.

Deger = inp(&h379) XOR 128

Aşağıdaki tabloda hangi butonlara bastığımızda, yukarıdaki komutla hangi veriyi okuyabileceğimizi gösteriyor.



Kullanmadığımız S0,S1 ve S2 değerleri genelde "1" olarak gelmektedir fakat bazen bu değişebiliyor. Eğer portunuzdaki bu değerler değişik ise farklı bir sonuç elde edebilirsiniz. Benim denediğim diğer bir bilgisayarda XOR kullanmadan ilk okuduğum değer 120 idi. Bu da ikilik sistemde "01111000" değerine karşılık geliyordu. Bu durumda kullanılmayan S2,S1 ve S0 değerlerinin "0" olarak geldiğini gördüm. Bu değeri yukarıda anlattığım şekilde S7 ye ve S3, S2, S1 pinlerine yönelik "1000111" maskesi ile XOR layıp, ilk okunan değeri "11111111" yani 255 olarak alabildim. Şimdi bu kadar uğraşmaya ne gerek var diye düşünebilirsiniz. Yani altı üstü veriyi evirip çevirip 255 değerini elde ettik. Esasında bu tamamen size kalmış veriyi XOR lamak zorunda değilsiniz. Bu sadece hesaplamalarda ve mantıkta biraz kolaylık sağlayacaktır. Önemli olan okunan verinin siz butona bastıkça değişmesi.

Örnek program dosyalarını indirmek için burayı tıklayınız.

(Alıntıdır)
Çooook sağol fatihgk ama verdiği input32.dll dosyasını verdiğin siteden indirmeyi beceremedim lütfen açıklar mısın???
Lİnke tıklayınca sitenin sayfası açılıyor.
Sayfanın ortasında bir resim çıkıyor.
Bu resmin altında "Lütfen Bekleyiniz.. " diye yazı
kaybolana kadar bekleyip, "Download" yazısı çıkınca
tıklayıp indiriyoruz....
emeğine sağlık çok güzel olmuş tekrardan teşekkür ederim
İşine yaradıysa sevindim, teşekkürler...
Umarım sende böyle paylaşımlar yaparak
diğer arkadaşlarına da yardımcı olursun...
http://www.dersizle.com/forum/showthread.php?tid=7753

buradaki kod bankta istedigğin herşey var.paralel port diye aratırsan istediklerine ulaşıcağına eminim..kolay gelsin
Referans URL