Bu site emekli olmuştur. Arşiv amaçlı olarak
BT AKADEMİ
sponsorluğunda yayın hayatına devam etmektedir.
Ana Sayfa
.net TV
Makaleler
Kaynak Kod
Haberler
Serbest Köşe
Canlı Köşe
Forum
C#nedir?
Ekibimiz
RSS
ADO.NET/SQL
C / Sys Prog.
Genel
Mono ve .NET
Silverlight
XML / Web Serv.
X86 Assembly
C++ / C++.NET
J#.NET / Java
.NET 3.x
UML / Analiz
Yazılım Müh.
ASP.NET
C# / VC#/.NET
Mobil Prog.
PHP 5
YAZAR HAKKINDA
Caner Şahan
http://www.csharpnedir.com/
İletişme geçmek için
tıklayın
.
24
Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için
tıklayın
.
Yayınlanan diğer makaleleri için
tıklayın
.
İlgili etiketler:
C# / VC#/.NET
Caner Şahan
YAZI HAKKINDA
Türü
:
Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi
:
İleri
Kategori
:
C# / VC#/.NET
Yayınlanma Tarihi
:
26.3.2004
Okunma Sayısı
:
57174
Yorum Sayısı
:
13
yorum yaz
SİTE İÇİ ARAMA
Üye
GİRİŞİ
Üye girişi için
tıklayın
.
Kullanıcı Adı
Şifre
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
Şifremi / Kullanıcı Adımı unuttum.
C#nedir? hesabınız yok mu?
Üye olabilmek için
tıklayın
.
Serbest KÖŞE
(?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
Bende Yazmak İstiyorum
Blogroll
Turhal Temizer
Conda install environment.yml Package
8.4.2025
Turhal Temizer
Mac OS/X Removing CUDA
8.4.2025
Burak Selim Şenyurt
Bellek Yönetiminde Verimlilik için İpuçları (Rust Odaklı)
8.4.2025
Burak Selim Şenyurt
Rust ve Güvenli Bellek Yönetimi Hakkında
8.4.2025
Diğer Herşey
»
Makaleler RSS
»
Video Gönder
»
Makale Gönder
»
Serbest Köşeye Yazı Gönder
»
Yazar Başvurusu
»
C#nedir? Ekibinde Olmalıyım!
Sponsorlar
Ana Sayfa
/
Makaleler
/
C# / VC#/.NET
/
C# ile Paralel Port Kontrolü
C# ile Paralel Port Kontrolü
Favorilerime Ekle
Gönderiliyor lütfen bekleyin...
arkadaşıma gönder
Arkadaşınızın email adresi:
*
Mesajınız:
Arkadaşlar bu makalemiz tamamen olmasada kısmen elektronik üzerine programlamaya temel olacağına inanıyorum.Elektronik programlama ile kastetdiğim paralel porta veri yollamakla ilgili.Programa başlamadan önce genel paralel port özellikleri ile ilgili bilgi vermek istiyorum.
PARALEL PORT:
Bilgisayarımızda genellikle yazıcılar için kullandığımız LPT portu olarakta hatırlayabilirsiniz.Paralel port üzerinde 25 adet pin bulunur.Bu pinlerin ne işe yaradığına gelirsek;
Bu şekilde görüldüğü gibi S0,S1,S2 konnektörleri gözükmüyor.Bu konnektörlerden S0 timeout bitini temsil eder.10,11.12.13.15 numaralı S bitleri ise paralel portun aldığı hexadecimal sayı olan port adresini belirtir.Yani portumuzun adres bitleri buradan gelir.Bu adres her bilgisayarda farklı olabilir fakat istisnalar harici aynıdır ve bu adres DATA+1 olarak tanımlanır.DATA adresi ise bilgisayarımızda kayıtlı olan adrestir.Bu adrese windows XP veya windows 2000’de bakmak için Settings > Control Panel > System > Hardware > Device Manager > Ports (COM & LPT) > Printer Port(LPT1) > Properties = in Resources > Resource yoluyla ulaşabiliriz.Benim bilgisayarımda bu adres resimdede görüldüğü gibi 0378-037F yazıyor buradaki DATA adresi 0x378 dir.Bu sayı hexadesimal(16 lıktabanda)dır.Bu DATA adresinin decimal(10 luk )karşılığı ise 888 dir.Biz daha çok decimal sayıyı kullanacağız.
Paralel portta bizi en fazla ilgilendiren yer D0-D7 bitleridir.Görüldüğü gibi 8 bitimizin geleceği yerler buralarıdır.Paralel portumuza veri gelip gelmediğini kontrol etmek için ise portumuzun önüne 8 adet led yerleştirerek bu kontrolü gerçekleyebiliriz.Tabiki ledlerin önüne direnç koymalıyız ki ani gerilim değişmesinden etkilenmesin.Ledlerin önüne 47K’lık direnç işimizi görecektir.Her devrenin mutlaka bir toprağı olmalıdır bizim devremizin toprağını ise G7 bitini kullanarak alacağız. Bilgisayarı ilk açtığımızda portlara 11111111(decimal=255) gidicektir.Bunun anlamı yani her 1’in anlamı +5 volttur.0 olduğu zaman ise 0 voltla ledimiz sönük durumda olacaktır.Zaten yapacağımız şeyde porta veri yollayıp istediğimiz ledi bilgisayar aracılığı ile yakmaktan başka bir şey olmayacak.
Programımız:
Amaç:
Yapacağımız programla port kontrolüne bir giriş yapacağız.8 biti işaret eden 8 pictureBoxımız olacak.Yanan bit olduğu zaman bu resimler yanan resim olarak değişecek.Ve birde girdiğimiz decimal sayıyı binary olarak ledlerde görebileceğiz.Son olarak bütün ledleri söndüren bir söndür buttonu yapacağız.Programın tasarımı şekildeki gibidir.
Programımıza verileri yollarken port numarasını decimal formatta yollarız.Benim paralel portumun decimal karşılığı 888 olduğu için ben program içinde 888 yazacağım.Verileri porta yollamak için ise inpout32.dll dosyasını kullanacağız.Bu dll dosyasını programımıza dahil ederek işe başlayalım. using System.Runtime.InteropServices; // ile dll dosyası kullanacağımızı gösterdik.
Daha sonra bu dll’yi işleteceğimiz bir class yaratıp bu classa dll’yi ekledik.
public class gonder
{
[[DllImport("inpout32.dll", EntryPoint="Out32")]
public static extern void verigonder(int portno,int sayi);
}
Son olarak ledlerin yanık olup olmadığının program içinde yanıklığını veya sönüklüğünü göstermek için pictureBoxları kullandık.Ve girilen sayımızı bitlerine ayırıp bu bitleri bir diziye aktardık.Aktardığımız bu dizinin 0.elemanı bir ise 1.biti yak gibi bir olayı if-else ile kontrol ettik.Tabiki burda yakma olayı sadece resim değiştirme.
private void button1_Click(object sender, System.EventArgs e)
{
byte bit,and;
byte[]donusum=new byte[8];//0-255 arası girilen sayımızın bitler ayırdığımız zaman aktaracağımız dizi
if(textBox1.Text=="")
{
MessageBox.Show("Sayı girmeniz gerekiyor");
return;
}
long degeregec=Convert.ToInt64(textBox1.Text);
if(degeregec>255)
{
MessageBox.Show("0-255 arası veri giriniz");
if(textBox1.CanFocus)
{
textBox1.Focus();
}
return;
}
byte deger=Convert.ToByte(textBox1.Text);
for(byte k=8;k>=1;k--)
{
and=1;
for(int l=1;l<=k-1;l++)
{
and*=2;
}
bit=(byte)((deger&and)>>k-1);
donusum[k-1]=bit;
}
if(donusum[7]==1)
{
sekiz.Image=yanık.Image;
}
else if(donusum[7]==0)
{
sekiz.Image=sonuk.Image;
}
if(donusum[6]==1)
{
yedi.Image=yanık.Image;
}
else if(donusum[6]==0)
{
yedi.Image=sonuk.Image;
}
if(donusum[5]==1)
{
altı.Image=yanık.Image;
}
else if(donusum[5]==0)
{
altı.Image=sonuk.Image;
}
if(donusum[4]==1)
{
bes.Image=yanık.Image;
}
else if(donusum[4]==0)
{
bes.Image=sonuk.Image;
}
if(donusum[3]==1)
{
dort.Image=yanık.Image;
}
else if(donusum[3]==0)
{
dort.Image=sonuk.Image;
}
if(donusum[2]==1)
{
uc.Image=yanık.Image;
}
else if(donusum[2]==0)
{
uc.Image=sonuk.Image;
}
if(donusum[1]==1)
{
iki.Image=yanık.Image;
}
else if(donusum[1]==0)
{
iki.Image=sonuk.Image;
}
if(donusum[0]==1)
{
bir.Image=yanık.Image;
}
else
{
bir.Image=sonuk.Image;
}
try
{
gonder.verigonder(888,deger);
label1.Text="Veri başarıyla gönderildi";
textBox1.ResetText();
}
catch(Exception hata)
{
string error=hata.Message;
MessageBox.Show("Veri gönderilirken hata oluştu","hata",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
private void button2_Click(object sender, System.EventArgs e)
{
gonder.verigonder(888,0); sekiz.Image=sonuk.Image;
yedi.Image=sonuk.Image;
altı.Image=sonuk.Image;
bes.Image=sonuk.Image;
dort.Image=sonuk.Image;
uc.Image=sonuk.Image;
iki.Image=sonuk.Image;
bir.Image=sonuk.Image;
}
private void Form1_Load(object sender, System.EventArgs e)
{
gonder.verigonder(888,0);
}
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
gonder.verigonder(888,0);
}
Arkadaşlar bu programla temel bir gösterim yaptık.Bundan sonra timerları kullanarak ledleri haraket ettirebilir yada bazı bitleri 1 göndererek bir step motor kontrol edebiliriz.Yani bitlerle hayal edebileceğiniz herşeyi yapabilirsiniz. Kolay gelsin. Umarım port kullanımı hakkında yardımcı olmuşumdur.
Örnek uygulamayı indirmek için tıklayın.
CANER ŞAHAN
canersahan@hotmail.com
University of Istanbul Dept.of Electronics Engineering 3.
KAYNAK:
Bu makalede adı geçen paralel port ile haberleşme örneği ilk olarak codeproject sitesinde Levent S. tarafından gerçeklenmiştir.Ve dll’ dosyasının referansı
http://www.logix4u.net/
sitesinden alımıştır.
dll’:::
http://www.logix4u.net/
codeproject::
http://www.codeproject.com/csharp/csppleds.asp
Makale:
C# ile Paralel Port Kontrolü C#, Visual C# ve .NET Caner Şahan
Yazılan Yorumlar
Yorum Yaz
MAR
9
2010
fuat açıkgöz
/
üye hakkında
bu benim yıllık ödevim lütfen bana yardımcı olun nasıl indircem ben bunu veya başka bi şekilde açıklayın bu programı...
AĞU
2
2005
Eray Dogan
/
üye hakkında
guzel bir yazı olmus tesekkurler ben bir sey soracagım ben bu port numarasını kodun icinden ogrene biliyormuyum. yani sen gonder(888,deger) demisssin ben yollarken her bilgisayarda 888 nolu porta yolluyabilirmiyim
OCA
27
2005
caner şahan
/
üye hakkında
sorununuzu canersahan@yahoo.com adresine mail olarak atarsanız önümüzdeki günler içinde ilgilennicem.
OCA
26
2005
hamza bilgen
/
üye hakkında
gerekli olan maksimum hızdaki devri ölçecek bir yazılım bana visual bir dil lazım çünkü ben görsel sonuçlar almak istiyorum ve c de bu sıkıntı birde dataequation kartı mı kullanıyım paralel portmu daha iyi olur teşekkür ederim
OCA
26
2005
hamza bilgen
/
üye hakkında
gerekli olan dakikada 5000 maksimum 5000 devir yapan bir motorun bir sensörle devrini ölçmek.1 peryodunu bulmak ve 360 derecedeki süreden 1 derecedeki süreyi bulmak
OCA
26
2005
caner şahan
/
üye hakkında
çok fazla hızdan kastınız gerçek ile sanallık arasında ise araya virtual makina sokmayınız.Yani bu iş için C# uygun bir değildir.C programlama dilini kullanınız. Saygılar.
OCA
25
2005
hamza bilgen
/
üye hakkında
bu programda kullanılan sınıfı kendiniz yazmışsınız peki bir kumanda devresinde sinyal almak için hız yeterlimi ,birde ben paralel porta sinyal geldiği yada değiştigi zaman aktif olan bir program yazmak istiyorum. ayni döngüde sürekli veri kontrolü programı çok hantallaştırıyo(ben tezimde motor ateşleme sistemi (araç motoru) yapmak istiyorum çok fazla hıza ihtiyacım var teşekkür ederim
TEM
28
2004
caner şahan
/
üye hakkında
using System.Text; class stringconv; { public void stringTobyte(string data) { byte[]b_veri=Encoding.ASCII.GetBytes(data); for(int i=0;i
TEM
28
2004
Erkal Hascan
/
üye hakkında
bu örnek çok güzel ama lpt1 e string nasıl göndereceğiz? onu bilen var mı?
MAR
29
2004
Sefer Algan
/
üye hakkında
hata düzeltildi.uyarı için teşekkürler
MAR
29
2004
Cem Louis
/
üye hakkında
dll linki çalışıyo codeproject linki çalışmıyo?
MAR
25
2004
Levent S.
/
üye hakkında
Caner merhaba, Yazın güzel, Sefer e ben söz verdiydim benim yazıyı türkçeye çeviricem diye fakat sonrasında iş güç vakit olmadı neyse sen açığı kapamışsın. Bu arada referans olayına da saygından dolayı seni kutlarım. Arada eleştri işin tuzudur diye düşünürsek, keşke yazıyı biraz daha ileriye götürüp porttan okumada yapsaydın. Örn: /* Senin gonder sınıfını biraz degistiriyorum */ public class PortErisim { /* Porta Sinyal Göndermek için */ [DllImport("inpout32.dll", EntryPoint="Out32")] public static extern void verigonder(int adres,int deger); /* Porttan Sinyal Almak için */ [DllImport("inpout32.dll", EntryPoint="Inp32")] public static extern int Input(int adres); } Yani ileriye götürmek derken ne biliim bi klasik buton-switch ile makinayı başlatıp kapatmak veya bi buton set ile çeşitli windows uygulamalarını kontrol gibi... Ginede güzel yazı... Bi öneri: Benim yazıya bazı tepkiler geldi fakat zamansızlıktan yazıyı update edemedim. Tepki şöyle eski anakartlarda bazı devreler şimdiki anakartlardaki gibi olmadığından kısadevreye karşı önlemini kendin almalısın Cypress in bufferları (7425 serisi veya Philips inde o ayarda bufferları var...) bu işi gayet güzel görüyor (Ben öyle önlemimi aldım. Detaylı bilgi için benim yazının forumlarına bakabilirsin.) Sana da belki tepkiler gelir diye diyorum, çünkü işin sonunda anakartı duman etmek var. Saygılar, Levent S.
MAR
25
2004
Sefer Algan
/
üye hakkında
bir çok kişinin merak ettiği bir konu bu..faydalı bir yazı olmuş..tebrikler.
Sayfalar :
1
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için
tıklayın
.
Üye değilseniz
Üyel Ol
linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
Bu Konuda Son 10
Eklenen Son 10
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
Dizayn ve Kodlama
bt
akademi
. Tüm Hakları Saklıdır © Copyright 2002-2009 c#nedir?com
Makaleler
Serbest Köşe
Makale Gönder
.Net TV
Video Gönder
Canlı Köşe
Kaynak Kod
Forum
Haberler
Röportajlar
Anketler
C# Nedir?
İletişim
Site Haritası
RSS
Favorilere Ekle
Üyelik
Hesap Aktivasyon
Ekibimiz
Ekibe Katıl