Seite 1 von 2

LPT-Port (erweitert)

Verfasst: 10.08.2006 10:46
von m0
Hallo!

Ist es möglich mit der "InpOut32.dll" ausser der 8 dataports des Parallelports auch noch einen weiteren Ausgang zu Steuern? oder hat der LPT gar nicht mehr ausgänge? sind die Busy, usw. Pins alles Eingänge?

Danke Schonmal!
Bis dann
m0

Verfasst: 10.08.2006 11:09
von Falko
Das richtet sich danach, welche Basisadresse (LPT-Adresse) du nimmst.


Basisadressen der LPT wären $378 (LPT1), $278 (LPT2) oder $3BC (LPT1 (Herculesskarte). Aber man kann die auch zu den jeweiligen LPT's vertauschen ;)

Beispiel Basis=$378 +0 ; Datenregister
Basis =$378+1 ; Statusregister
Basis =$378+1 ; Steuerregister



Basisadresse + 0 = Datenregister (D0...D7, ausgeben)
Basisadresse + 1 = Statusregisert ( nur lesen)
Basisadresse + 2 ausgeben und lesen

Beim Statusregister nur lesen
Bit 3: Error
Bit 4: Select
Bit 5: PE
Bit 6: ACK
Bit 7: Busy (invertiert)

Beim Steuerregister ausgeben bzw. gelesen
Bit 0: Strobe (invertiert)
Bit 1: Auto Feed
Bit 2: Init (invertiert)
Bit 3: SLKT IN (invertiert)

Da dieses schon in die Hardware geht, mach das nächste Mal den Eintrag
in die Hardwareecke.

Ich verschiebe es jetzt mal dort hin

MfG Falko

Verfasst: 10.08.2006 11:25
von m0
Vielen Dank für Deine Antwort das war genau die info die ich gesucht habe!
Das nächste mal werde ich in die harware sektion posten, sorry.

m0

Verfasst: 10.08.2006 19:50
von RAaBe
Eine Frage mal an FALKO, hast du schon mal ein LCD-Display (4*20) am LPT betrieben? Vielleicht kannst du mir auch zeigen, wie man das am besten mit PN ansteuert?

MfG

RA@Be

Verfasst: 10.08.2006 22:34
von SoS
@RAabe

Hättest Du mir in der PN geschrieben was für ein lcd Du hast hätte ich.............
Aber egal ;)
http://people.freenet.de/n83u13/L2432.zip

Ist zwar nich in PB geschrieben aber mit den Informationen wirst Du das sicher Portieren können.

Viel Spass

Verfasst: 10.08.2006 22:52
von Falko
@RAaBe

Ich komme gerade, von der Spätschicht. Ich habe noch ein grünes
4X20 - Zeichen Punktmatrix-Display was man über LPT ansteuern kann.
Dieses hat einen eigenen Controller, den man leicht nach der Beschreibung
ansprechen kann. Zwar hatte ich das damals zum LinuxPC, welches eine passende Software dazu hatte zusammengebastelt, aber in PB sollte es kein
Problem sein.

Vielleicht könntest du uns ein paar Daten über dein Display hier angeben.

@SoS
Wenn ich das richtig sehe, ist es nicht so ein schönes Grafikdisplay, was du angesteuert hast, sondern einfach nur 4 Zeilen mit 20 einzelnen Matrix-Buchstaben, die auch selbst definiert werden können.
Was übrigens interessant ist, Reichelt hat jetzt neue Grafikdisplays
herausgebracht, welche die Pixel organisch erzeugen. Zudem sind sie
für 29,90€ superünstig, aber nicht sehr groß ;)

Nennen tuen die sich OSRAM Organische Pictiva-LED.
Beschreibung dazu:
klare Farben, hoher Kontrast
sehr gute Videofähigkeit
Blickwinkel: 160°
active Fläche: 20,1x13,4mm

Nur ist die Frage, ob die einen externen Controller brauchen.
Bei Reichelt steht dazu noch ein Adapter mit Programmierumgebung
und dann ist der Preis nicht gerade sehr günstig, wenn das erforderlich
ist :mrgreen:

Gruß Falko

Verfasst: 11.08.2006 09:48
von RAaBe
@Falko

Hallo, ich habe nur ein einfaches 4*20 Display. Programme gibt es dafür viele, aber ich wollte es mal mit PB versuchen.

@SoS

Danke für den Link. Ich werde es mal damit versuchen.

Verfasst: 11.08.2006 11:50
von Falko
@RAaBe

Dann könnte es wie folgt, ähnlich wie meins aussehen:



BildBild

Hierzu eine andere Seite und die Beschreibung als PDF:
http://www.crystalfontz.com/products/20 ... YYHJPE.pdf

Und eine deutsche Seite:
http://elmicro.com/de/lcd.html

http://www.sprut.de/electronic/lcd/index.htm#stecker
http://www.sprut.de/electronic/lcd/index.htm#init
http://www.sprut.de/electronic/lcd/index.htm#befehle

Ich hatte es mir damals zum flie4 - LinuxRouter mal gekauft und zusammen gelötet.
In PB habe ich das noch nicht angesteuert, aber es sollte mit PB
und InpOut32 als auch anderen DLL's kein Problem sein.

Ich muss das mal aus meiner Bastelkiste rausholen und kann für PB
gerne ein SourceBeispiel machen. Es sei, denn SoS hat dazu was
Passendes? :)

Gruß Falko

Verfasst: 11.08.2006 12:15
von RAaBe
@Falko

Hallo, ja genau so sieht meins auch aus. Folgendes habe ich schon herausgefunden. Die Pinbelegung bei mir und dem Beispiel von @SoS (Pollin) unterscheiden sich bei den Pins R/W und RS.

Ich habe mein Display nach dem folgenden Bild angeschlossen:

http://jalcds.de/images/4x20wobacklight.gif

Nun werde ich versuchen den Code dahingehend anzupassen.

Verfasst: 11.08.2006 12:16
von SoS
RAaBe hat geschrieben: Ich werde es mal damit versuchen.
Ich habe hier auch noch 5 8x24 Text-Lcds rumliegen (1€ pro stk. bei ebay :) ),bin aber noch nicht dazu gekommen.

/edit
Ich werde aber winio nutzen.

code aus dem engl. Forum

Code: Alles auswählen

; Purebasic Interface for WinIO DLL 
; I/O Library Wrapper 

Global IO_Status 
#IO_Driver = 1 

Procedure I_Init() 
  CallDebugger 
  IO_Status = OpenLibrary(#IO_Driver, "WinIO.Dll") 
  If IO_Status 
    IO_Status = CallFunction(#IO_Driver, "InitializeWinIo") 
    Debug Str(IO_Status) 
  Else 
    MessageRequester("Error", "File not found or corrupt (WinIO)",#PB_MessageRequester_Ok) 
  EndIf 
  ProcedureReturn IO_Status 
EndProcedure 

Procedure I_Send(PortAddr.w, PortVal.w) 
  Size_to_Write = 1 
  ProcedureReturn CallFunction(#IO_Driver, "SetPortVal", PortAddr, PortVal, Size_to_Write) 
EndProcedure 

Procedure I_Recv(PortAddr) 
  Size_to_Read = 1 
  PortVal = 0 
  ProcedureReturn CallFunction(#IO_Driver, "GetPortVal", PortAddr, @PortVal, Size_to_Read) 
EndProcedure 

Procedure I_Close() 
  IO_Status = CallFunction(#IO_Driver, "ShutdownWinIo") 
  CloseLibrary(#IO_Driver) 
  ProcedureReturn IO_Status 
EndProcedure 

If I_Init() 
 PortAddr=$278 
 myval=I_Recv(PortAddr) 
 MessageRequester("Info",Str(myval),0) 
 I_Close() 
Else 
 MessageRequester("Info","whats that ?",0) 
EndIf