Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Auslesen der Pins 10-13 des LPT Anschlusses mit io.dll?? (https://www.delphipraxis.net/45694-auslesen-der-pins-10-13-des-lpt-anschlusses-mit-io-dll.html)

Chris4712 10. Mai 2005 21:52


Auslesen der Pins 10-13 des LPT Anschlusses mit io.dll??
 
Hallo!

Ich würde gerne eine Rückmeldung von der LPT (parallelen) Schnittstelle einlesen.
Die Ansteuerung mache ich per io.dll

Ich habe mir aus diesem Post das Programm runter geladen um zu schauen ob die Ansteuerung an sich schon mal geht. Das tut sie auch.

Mit PortWordIN oder PortDWordIn kann ich was auslesen. Die Werte ändern sich auch je nach angesteuertem Port.

Aber wie kann ich nun genau auslesen ob am Port 10 bis Port 13 eine Spannung anliegt??

Gruß

Christian

Boombuler 11. Mai 2005 06:59

Re: Auslesen der Pins 10-13 des LPT Anschlusses mit io.dll??
 
Also ich würde tippen das dir das Byte das du zurück bekommst per Binärcode aufschluss geben wird...
Also würd ich das mal mit Bitshiften versuchen

zB:

Delphi-Quellcode:
function GetBit(BitNr:byte):boolean;
var InByte:Integer;
begin
  InByte := PortDWordIn({evtl Parameter});
  result := ((InByte shr (BitNr-1)) mod 2) = 1;
end;
Also ich kenn die io.dll nich aber sowas in der richtung sollte das werden denk ich mal

Greetz
Boombuler

Chris4712 14. Mai 2005 14:49

Re: Auslesen der Pins 10-13 des LPT Anschlusses mit io.dll??
 
Hallo!

Sorry, bin erst heute dazu gekommen es zu testen.
Ich weiß nicht warum, aber es geht!

Schon mal Danke!

Nur ich verstehe nicht so ganz warum es funktioniert.
Hab durch Zufall herausgefunden dass ich der Funktion den Wert 13 übergeben muss um den PIN 13 abzufragen. Um PIN 12 abzufragen muss ich aber den Wert 14 übergeben.

Hier mal die Rechnung der Funktion (falls einer nicht wissen sollte was diese macht):

PIN deaktiviert:
PIN 13: 32767 : 4096 = 7.9997 mod 2 = 3 Rest 1,999 <> 1
PIN 12: 32767 : 8192 = 3,9998 mod 2 = 1 Rest 1,999 <> 1

PIN aktiviert:
PIN 13: 28671 : 4096 = 6,9997 mod 2 = 3 Rest 0,999755859 ~ 1 = 1 (Rundung aufgrund von Integer!)
PIN 12: 24575 : 8192 = 2,9998 mod 2 = 1 Rest 0,99987793 ~ 1 = 1 (Rundung aufgrund von Integer!)

Komischerweise funktioniert es immer. Auch wenn noch andere PIN aktiv sind usw.
Aber wie um Himmelswillen kommt da ein normalsterblicher Mensch drauf :gruebel: ??

OK, werde nicht weiter drüber nachdenken. Die beiden Pins die ich abfragen möchte kann ich abfragen. Dass ist die Hauptsache.
Nochmals Danke!

Gruß

Christian

Muetze1 14. Mai 2005 15:46

Re: Auslesen der Pins 10-13 des LPT Anschlusses mit io.dll??
 
Moin!

Warum der Umweg darüber, ein Bit weniger zu shiften und dann das ganze mit Modulo abzufragen? Warum nicht direkt das Bit?

Delphi-Quellcode:
function GetBit(Const ABitNr : Byte): Boolean;
var InByte:Integer;
begin
  InByte := PortDWordIn({evtl Parameter});
  result := ( ((InByte Shr ABitNr) And 1) = 1);
end;
ABitNr im Bereich 0..31, wenn es denn wirklich als DWord abgefragt wird. Im Normalfall hat das Statusregister am Parallelport nur ein Byte und daher sollte nur ein Byte eingelesen werden und dann ist ABitNr auch nur im Bereich 0..7.

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz