arkadaşlar elimde bir (lambayı yaktığımız gibi anahtar) buton var ve bu butonun içine siyah ve kırmızı renkte iki tane kablo giriyor.ben butona bastığımda bu iki kablonun ucu birbirine temas ediyor ve kısa devre yaparak, bu iki kablonun bağlı bulundukları diğer uçtaki bir kapıyı otomatik olarak açıyor.ben bunu elimle, duvarda olan bir butona basmak yerine bilgisayarda yazdığım bir programdaki bir butona basarak kapıyı otomatik olarak açmak istiyorum.
Bunun içinde duvara gelen bu iki kabloyu çıkarıp temin ettiğim LPT portundan pc ye bağladığım bir röleye, uçları bağladım.Fakat ben bu iki uca nasıl olurda elektrik akımı gönderirim de , duvarda bağlı oldukları gibi kısa devre yaptırıp kapıyı otomatik olarak açtırırım acaba?????
en azından bu devre üzerindeki ledleri nasıl yakıp söndürebilirim???
not:devreyi aldığım yerden verilen dll lerle ve netten araştırdığım kadarı ile şu kodları yaptım fakat hiçbirşey olmadı..hatta butona tıkladığımda "privileged instruction" şeklinde hata veriyor...;
procedure Out32(PortAddress:smallint;Value:smallint);stdcall ;export;
var
ByteValue:Byte;
begin
ByteValue:=Byte(Value);
asm
push dx
mov dx,PortAddress
mov al, ByteValue
out dx,al
pop dx
end;
end;
function Inp32(PortAddress:smallint):smallint;stdcall;expor t;
var
ByteValue:byte;
begin
asm
push dx
mov dx, PortAddress
in al,dx
mov ByteValue,al
pop dx
end;
Inp32:=smallint(ByteValue) and $00FF;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
try
Out32($378,$53); // Out32
except
end;
end;
LPT1 ile röle den elektrik akımı göndermek...
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
LPT1 ile röle den elektrik akımı göndermek...
- Dosya ekleri
-
- role.jpg (20.59 KiB) 3763 kere görüntülendi
-
- Üye
- Mesajlar: 163
- Kayıt: 11 Eki 2005 10:44
- İletişim:
Re: LPT1 ile röle den elektrik akımı göndermek...
Benim bildiğim xp ve sonrasında assembler ile port lara değer gönderemezsiniz.
Bunun için windows apilerini kullanmanız lazım. Ayrıca LPT kabloların 2m uzunluk sınırı var diye biliyorum.
Comport kullanman daha sağlıklı olabilir.
Bunun için windows apilerini kullanmanız lazım. Ayrıca LPT kabloların 2m uzunluk sınırı var diye biliyorum.
Comport kullanman daha sağlıklı olabilir.
http://ibrahimcoban.com/
Lazarus, Kol-Ce,Delphi ve C#
Lazarus, Kol-Ce,Delphi ve C#
Re: LPT1 ile röle den elektrik akımı göndermek...
Eğer profesyönel bir uygulama yapacaksan, bunua benzer işler için özel I/O Card'lar var yada PLC kullanman gerekir. PLC ile istediğim bir röleyi bir komutla çektirebilir yada bıraktırabilirsin.
Re: LPT1 ile röle den elektrik akımı göndermek...
"privileged instruction" hatasını verme sebebi dll dosyanın sisteme kayıt edilmemesinden veya kaydetme yetkiniz olmamasından kaynaklanıyordur bence.
komut satırından dll dosyasının bulunduğu dizine girip "regsrv32 io.dll" komutunu vermeyi deneyin.
komut satırından dll dosyasının bulunduğu dizine girip "regsrv32 io.dll" komutunu vermeyi deneyin.
Re: LPT1 ile röle den elektrik akımı göndermek...
dll'leri kaydettikten sonra uyumluluk ayarlaması da yapmanız gerekebilir.
Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
Nice elbiseler gördüm içinde insan yok.
Re: LPT1 ile röle den elektrik akımı göndermek...
bende bi ara LPT (DB 25) kullanark portan elektrik alıp vermeye çalışıordum araştırdım ama xp de bi kaç ayarla oluormuş xp önceki işletim sistemlerinde çalışıor sana sölediklerimi yaparsan rahatca portdan elektrik alıp röleye veya nereye istersen kullanabilirsin öncelikler;
1) Delphi ile yeni bir proje oluşturun.
2) .Dll sini çekin ve
proje klasörüne bu dll i yerleştirin.
3) Kodunuzu şu şekilde düzenleyin:
4) Formunuza bir Standart sekmeden bir buton ekleyin ve onclick eventine şu kodu geçin:
*Buradaki önemli noktalar; paralel port adresinin 888 olması ve io.dll in PROJENİN EXE DOSYASI İLE AYNI KLASÖRDE OLMASI GEREKTİĞİ. Herkese kolay gelsin, iyi çalışmalar.
Pinlere elektrik verme yolarıda belki bilmeyen kardeşlerim vardır;
burdaki 2 değerini;
0 -> tüm pinler söner.
1 -> sadece 1.Pin
2 -> sadece 2.Pin
4 -> sadece 3.Pin
8 -> sadece 4.Pin
16 -> sadece 5.Pin
32 -> sadece 6.Pin
64 -> sadece 7.Pin
eğer 1 den fazla pine elektrik vermek istiyorsan ;
örn : 5. ve 3. pinler olsun bunların port numaralaralarını toplamalısın şöyle : 5. Pin = 16 , 3.Pin = 4 ---> 5. ve 3.Pin 16+4 = 20
PARALEL PORT PİN ŞEMASIDA ŞÖYLE ARKADAŞLAR ;
1-14-16-17 :Kontrol uçlari.
2-3-4-5-6-7-8-9 :Veri uçlari.
10-11-12-13-15 :Giris uçlari.
sağlıcakla...d4erth
1) Delphi ile yeni bir proje oluşturun.
2)
Kod: Tümünü seç
http://geekhideout.com/downloads/io.dll
proje klasörüne bu dll i yerleştirin.
3) Kodunuzu şu şekilde düzenleyin:
Kod: Tümünü seç
implementation {$R *.dfm} procedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll'; function PortIn(Port:Word):Byte; stdcall; external 'io.dll';
Kod: Tümünü seç
PortOut(888,2); // Burda 2 değeriyle portun hangi pinlerine elektrik vereceğinizi seçebilirsiniz.
label1.Caption:=inttostr(PortIn(888));
end;
Pinlere elektrik verme yolarıda belki bilmeyen kardeşlerim vardır;
Kod: Tümünü seç
PortOut(888,2);
0 -> tüm pinler söner.
1 -> sadece 1.Pin
2 -> sadece 2.Pin
4 -> sadece 3.Pin
8 -> sadece 4.Pin
16 -> sadece 5.Pin
32 -> sadece 6.Pin
64 -> sadece 7.Pin
eğer 1 den fazla pine elektrik vermek istiyorsan ;
örn : 5. ve 3. pinler olsun bunların port numaralaralarını toplamalısın şöyle : 5. Pin = 16 , 3.Pin = 4 ---> 5. ve 3.Pin 16+4 = 20
PARALEL PORT PİN ŞEMASIDA ŞÖYLE ARKADAŞLAR ;
1-14-16-17 :Kontrol uçlari.
2-3-4-5-6-7-8-9 :Veri uçlari.
10-11-12-13-15 :Giris uçlari.
sağlıcakla...d4erth