Hallo,
ich möchte die ersten 4 Bit des des LPT auf 1 setzen und Taster dazwischen schalten um die die anderen 4 Bit des LPT abzufragen.
Wenn der Taster gedrückt wird soll also eine Aktion ausgeführt werden.
Setzen Datenleitung mit der DLL und dem Befehl Out(%00000001) ist kein Problem aber wie frage ich ab? Mit INP() bekomme ich immer eine 0 .
Ist das so überhaupt möglich ? Die Ausgangsspannung ist ca. 3,8 Volt ist das vielleicht nicht genug um als 1 erkannt zu werden?
Darf man die Datenkanäle so überhaupt kurzschliessen?
Für anworten wäre ich euch wie immer dankbar.
Viele Grüße Iron2006
Input mit inpout32.dll abfragen!
Input mit inpout32.dll abfragen!
PB 4.02
Input mit inpout32.dll abfragen!
Ist die LPT Adresse bekannt? Wie ist der Port im BIOS definiert, als Standard, als ECP oder als EPP? Der Standard Port kann von den Daten nicht lesen, aber es geht über Error, SelectIn, PE, ACK und Busy.
Code: Alles auswählen
; Centronics Schnittstelle
;
; Signalname | LPT-Pin | BitNr | Portname
; --------------------------------------------
; Data0 | 2 | 0 | DatenPort
; Data1 | 3 | 1 | DatenPort
; Data2 | 4 | 2 | DatenPort
; Data3 | 5 | 3 | DatenPort
; Data4 | 6 | 4 | DatenPort
; Data5 | 7 | 5 | DatenPort
; Data6 | 8 | 6 | DatenPort
; Data7 | 9 | 7 | DatenPort
; --------------------------------------------
; Err | 15 | 3 | -InputPort
; SelectIn | 13 | 4 | InputPort
; PE | 12 | 5 | InputPort
; Ack | 10 | 6 | -InputPort
; Busy | 11 | 7 | InputPort
; --------------------------------------------
; Strobe | 1 | 0 | -KontrollPort
; AutoFed | 14 | 1 | -KontrollPort
; InitPrnt | 16 | 2 | -KontrollPort
; Select | 17 | 3 | -KontrollPort
; OutEnable | | 5 | +KontrollPort
; --------------------------------------------
; GND | 18-25 | - | Masse
; --------------------------------------------
;
; Basisadressen (default): LPT1=$378, LPT2=$278, LPT3=$3BC
; Die Adresse des InputPort ist immer Basisadresse + 1
; Die Adresse die KontrollPort ist immer Basisadresse + 2
; Signale mit vorgestelltem - Minuszeichen sind invertiert
; OutEnable ist optional (+). Falls vorhanden, muss dieses
; Bit auf 0 gesetzt werden, um Signale auszugeben.
Global port=$378 ; $378, $278, $3BC
If OpenLibrary(0, "inpout32.dll") = 0
MessageRequester("Fehler","Die inpout32.dll konnte nicht geladen werden")
End
EndIf
kon = 1
CallFunction(0, "Out32", port+2, kon) ; Druckerport aktivieren
dat = $1F ; Die untersten 5 Bits auf 1
CallFunction(0, "Out32", port, dat) ; Daten Ausgeben
; von D0 ... D4 jeweils einen Widerstand 1,2k auf Err ... Busy
; dann jeweils von Err ... Busy einen Taster oder ähnliches auf GND schalten
If OpenConsole()
Repeat
; Exor, da manche Bits invertiert sind
Ergebnis = CallFunction(0, "Inp32", port+1) ! $16
PrintN(Str(Ergebnis))
Delay(200)
a$ = Inkey()
Until a$ = Chr(27) ; Warten bis Escape gedrückt
CloseConsole()
EndIf
Re: Input mit inpout32.dll abfragen!
Könntest du vielleicht nochmal erläutern wie genau du das realisiert hast?
Ich habe gerade mit dem sehr interessanten Thema Steuerung über LPT Port angefangen, und schon erste Erfolge mit Pure Basic und LED's erzielt, jetzt will ich aber mehr
Wie bekomme ich es hin, dass mir der Rechner nen Data Port abfragt, und augibt ob der nun high oder low is? So das ich aufgrund dessen, irgendeine if bedingung (gibts doch bestimmt auch bei pure basic, wenns das auch in basic gab ^^) schreiben kann.
Vielen Dank schonmal im vorraus
Ich habe gerade mit dem sehr interessanten Thema Steuerung über LPT Port angefangen, und schon erste Erfolge mit Pure Basic und LED's erzielt, jetzt will ich aber mehr
Wie bekomme ich es hin, dass mir der Rechner nen Data Port abfragt, und augibt ob der nun high oder low is? So das ich aufgrund dessen, irgendeine if bedingung (gibts doch bestimmt auch bei pure basic, wenns das auch in basic gab ^^) schreiben kann.
Vielen Dank schonmal im vorraus