PureBoard
http://forums.purebasic.com/german/

Input mit inpout32.dll abfragen!
http://forums.purebasic.com/german/viewtopic.php?f=17&t=19178
Seite 1 von 1

Autor:  iron2006 [ 17.02.2009 12:05 ]
Betreff des Beitrags:  Input mit inpout32.dll abfragen!

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

Autor:  iron2006 [ 18.02.2009 15:20 ]
Betreff des Beitrags: 

Ups, das ist wohl doch bei der Hardware besser aufgehoben. Vielleicht kann das ja noch jemand verschieben.

Gruß Iron 2006

Autor:  smiley46 [ 26.02.2009 03:08 ]
Betreff des Beitrags:  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:
; 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

Autor:  iron2006 [ 26.02.2009 19:12 ]
Betreff des Beitrags: 

Hallo smiley46,

vielen Dank für die Antwort mit den Input-Port´s klappt das Schalten sehr gut! :allright:
Mein Fehler war das ich immer versuchen wollte D5 bis D7 einen Input einzulesen.

Viele Grüße Iron2006

Autor:  Atomius [ 05.11.2010 20:20 ]
Betreff des Beitrags:  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 :D

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

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/