Welcome to

Sponsor Block



Robomenu
· Home
· Archive / Eski Yazılar
· Articles / Yazılar
· Chat Online / Sohbet
· Downloads / Dosyalar
· FAQ / Sorularınız
· Forums / Pano
· Links / Siteler
· Members / Üyelerimiz
· Messages / Mesajlar
· Statistics / İstatistikler
· Submit News / Yazı yaz
· Surveys / Araştırmalar
· Top 10
· Topics / Konular
· Tutorials / Dersler
· Your Account / Hesabınız

Visitors / Ziyaretçiler
There are currently, 1 guest(s) and 0 member(s) that are online.

You are Anonymous user. You can register for free by clicking here

  
Your Bugs/Sizinkiler: Visual C ile paralel port kontrolü
Posted on Thursday, November 03 @ 04:09:32 EST
Topic: Tasarımcılarımız
Yazan: Technoshaman



Visual C++ MFC kullanılarak nasıl bir program yazılır onu burda anlatamayacağım. Askerdeyken “Sam’s Teach Yourself VC++ in 21Days” kitabından bana yetecek kadar öğrendim ben de, PDF’si her yerde var :) En basit olarak Pin2 ’yi ilk basışta açacak bir dahaki basıştada kapatacak butonun fonksiyonunu anlatayım (devrede Pin 1 strobe olduğu için kullanılmıyor). Mantığı anladıktan sonra her dilde uygulayabilirsiniz. Fonksiyonda önemli olan ilk iki satırdır, gerisi bilgilerin pencerede gösterimi vs. içindir.

……………………
int Pin;
unsigned short Port;
.
.
……………………
Pin=0;
Port=888;
.
.
…………………….
void CParallelPortControlDlg::OnButton1()
{
Pin = Pin ^ 1;
Out32(Port,Pin);
.
.
.
}
……………………..



İlk başta Pin değerini (LPT1’e gidecek olan değer) 0 yapıyoruz (program açılışında port reset için). Ve 888 değerini Port değişkenine atıyoruz (LPT1’in adresi). Pin= Pin ^ 1; komutuyla Pin değişkeninin o anki değerini 1 ile XOR’luyoruz (program akışı sırasında Pin değeri 0 olmayabilir) ve Out32(Port,Pin); komutuyla 888 adresine gönderiyoruz. Bu sayede eğer 2 numaralı pin (2,3,4,5,6,7,8,9 numaralı pinler için 1,2,4,8,16,32,64,128 değerleri) açıksa kapanıyor, kapalıysa açılıyor. Açıklamak gerekirse; 8 bitlik Pin’in (LPT1’de 8 tane çıkış pinimiz var) binary değeri 00010001 olsun (onluk olarak 1+16=17). Yani 2 ve 6 numaralı pinler açık durumda. Biz de bu komutla 00010001 XOR 00000001 yaparak 00010000 sonucunu elde ediyoruz. XOR yapılmış iki değer de 1 ise sonuç sıfır olur, değerler 1,0 veya 0,0 ise sonuç değişmez. Exe dosyası Debug klasöründedir.

VC++’da kendiniz bir program yazacaksanız, resimdeki gösterilen gerekli satırları ve inpout32.lib dosyasını projenize eklemeniz (lib dosyası da proje klasöründe olmalıdır) gerekmektedir. Link ayarlarında lib ismini girip OK’e bastığınız zaman, lib dosyası project options’a eklenecektir. Programın çalışması için (XP’de paralel porta direk erişim sağlayabilmek için) inpout32.dll dosyası da gereklidir.

Örnek devreye gelince. Sadece portun durumunu göstermek için LED’ler kullandım. Ama istenirse 2N2222 gibi bir NPN transistörle (E ve C arasında koruma için 1N4001 kullanılarak) veya TIP120 gibi kendinden koruma diyotlu bir darlington transistörle sürülen (kendisinden akım sink edilen) bir röle sayesinde daha büyük yükler kontrol edilebilir. Ek şemada bunlar görülmektedir. Proje dosyaları aşağıdadır. Daha detaylı bilgi için yazıya yorum yazabilirsiniz :)




TÜM DOSYALARI İNDİR

 
Login
Nickname

Password

Don't have an account yet? You can create one. As a registered user you have some advantages like theme manager, comments configuration and post comments with your name.

Related Links
· TÜM DOSYALARI İNDİR
· More about Tasarımcılarımız
· News by ozkal


Most read story about Tasarımcılarımız:
Remote access and control via RS232


Related Links

Article Rating
Average Score: 3.75
Votes: 4


Please take a second and vote for this article:

Bad
Regular
Good
Very Good
Excellent



Options

Printer Friendly Page  Printer Friendly Page

Send to a Friend  Send to a Friend




Web site engine's code is Copyright © 2002 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Page Generation: 0.044 Seconds