![]() |
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 ![]() 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 |
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:
Also ich kenn die io.dll nich aber sowas in der richtung sollte das werden denk ich mal
function GetBit(BitNr:byte):boolean;
var InByte:Integer; begin InByte := PortDWordIn({evtl Parameter}); result := ((InByte shr (BitNr-1)) mod 2) = 1; end; Greetz Boombuler |
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 |
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:
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.
function GetBit(Const ABitNr : Byte): Boolean;
var InByte:Integer; begin InByte := PortDWordIn({evtl Parameter}); result := ( ((InByte Shr ABitNr) And 1) = 1); end; 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