AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi Steuerung jedes Pines des Parallelports mit Win95 bis WinXP
Tutorial durchsuchen
Ansicht
Themen-Optionen

Steuerung jedes Pines des Parallelports mit Win95 bis WinXP

Ein Tutorial von pmc · begonnen am 11. Sep 2003 · letzter Beitrag vom 6. Mär 2009
Antwort Antwort
Seite 6 von 9   « Erste     456 78     Letzte »    
pmc
Registriert seit: 9. Sep 2003
1. Aufbau der Schnittstelle :

Der Parallelport ist in drei Register engeteilt,
Datenregister(output), Kontrollregister(Input/Output) und
StatusRegister(Input).

Datenregister :
Das Datenregister stellt 8 leitungen zur verfügung,
worüber die zu druckenden Daten an den Drucker geleitet werden.
  • D0 bis D7 -> Pin 2 bis Pin 9 am PC-Stecker.
Kontrollregister :
Das Kontrollregister stellt 4 leitungen zur verfügung,
worüber der Drucker gesteuert wird.
  • Strobe -> Pin 1 am PC-Stecker.
    AutoLF -> Pin 14 am PC-Stecker.
    Init -> Pin 16 am PC-Stecker.
    Select -> Pin 17 am PC-Stecker.
Statusregister :
Das Statusregister stellt 5 Leitungen zur Verfügung,
worüber der Drucker seinen Status an den Pc übermittelt.
  1. Error -> Pin 15 am PC-Stecker.
    Online -> Pin 13 am PC-Stecker.
    Paper -> Pin 12 am PC-Stecker.
    Busy -> Pin 11 am PC-Stecker.
    ACK -> Pin 10 am PC-Stecker.

2. Verwendung :

Wichtig : Die Unit habe ich nur unter Win2K getestet, aber unter winXP
müsste es auch funktionieren!!!


Die Unit ParaPrcs stellt folgende Funktionen und Prozeduren zur Verfügung :

Function ReadCtrlLines : TCLines; ---> Liest die Leitungen des Kontroll-Registers der Parallelen Schnittstelle (Select - Init - AutoLF - Strobe)
Function ReadStateLines : TSLines; ---> Liest die Leitungen des Status-Registers der Parallelen Schnittstelle (Busy - ACK - Paper - Online - Error)

Procedure WriteDataLines(bits : TDBits); ---> Schreibt die Leitungen des Daten-Registers der Parallelen Schnittstelle (D0 bis D7)
Procedure WriteCtrlLines(cl : TCLines); ---> Schreibt die Leitungen des Kontroll-Registers der Parallelen Schnittstelle (Select - Init - AutoLF - Strobe)

Function PortReset : Boolean; ---> Setzt alle Leitungen auf LOW - Gibt True zurück wenn der Treiber geladen ist.


Hinweis zu den verwendeten Variablen-Typen :
  1. TSLines = record
    Busy : boolean;
    Ack : boolean;
    Paper : boolean;
    Online : boolean;
    Error : boolean;
    end;

    TCLines = record
    Select : boolean;
    Init : boolean;
    AutoLF : boolean;
    Strobe : boolean;
    end;

    TDBits = array[0..7] of boolean;

Was man nun damit ansteuern will ist einem selbst überlassen.
Bei Fragen, Eamil an mich.

MFG PMC

[edit=sakura] Archiv als ZIP beigefügt. Mfg, sakura[/edit]
Angehängte Dateien
Dateityp: exe port_access.exe (235,1 KB, 897x aufgerufen)
Dateityp: zip archiv.zip (214,2 KB, 738x aufgerufen)
Woher soll ich wissen was ich denke,
wenn ich noch nicht gehört habe was ich sage?
 
pmc

 
Delphi 6 Personal
 
#51
  Alt 26. Okt 2003, 20:51
Also nochmal :

Die DataLines sind die ausgänge der schnittstelle d0 bis d7...darüber werden die daten an den drucker gesendet!!!

Die CtrlLines sind die ausgänge der schnitstelle init - strobe - AutoLF - Select...darüber wird der drucker gesteuert!!!

Die StateLines sind die eingänge der schnittstelle Busy- Online - Paper - ACK - Error....darüber sendet der drucker seinen status zum PC ... damit da entsprechend gehandelt wird!!!


DataLines :
willst du do auf Hi setzen dann machst du datenleitungen[0]:=True; {Oder False für Low *} willst du dx auf Hi setzen dann machst du Datenleitungen[x]:=True; {Oder False für Low *} zum schluss schreibst du dann die leitungen : WriteDataLines(Datenleitungen); *DatenLeitungen steht hier für eine Variable des Typs TDBits;
TDBits = Array[0..7] of Boolean;
CtrlLines :
willst du Init auf Hi setzen dann machst du CtrlLeitungen.Init:=True; {oder False für Low *} willst du Select,Strobe oder AutoLF auf Hi setzen dann machst du
Delphi-Quellcode:
CtrlLeitungen.Select:=True; {oder False für Low*}
CtrlLeitungen.Strobe:=True; {oder False für Low*}
CtrlLeitungen.AutoLF:=True; {oder False für Low*}
Zum schluss schreibst du dann die Leitungen : WriteCtrlLines(CtrlLeitungen); *CtrlLeitungen steht hier für eine Variable des Typs TCLines
Delphi-Quellcode:
TCLines = Record
  Init : Boolean;
  Strobe : Boolean;
  Select : Boolean;
  AutoLF : Boolean;
end;

StateLines :
Willst du wissen ob Busy auf Hi oder Low steht dann machst du das so :
Delphi-Quellcode:
ReadStateLines(StatusLeitungen);*
if Statusleitungen.Busy=True then label1.caption:='Hielse Label1.caption:='Low';*
Genauso macht man das auch mit ACK,Online,Paper und Error!!!

*StatusLeitungen steht hier für eine Variable des Typs TSLines!!!
Delphi-Quellcode:
TSLines = Record
  Busy : Boolean;
  ACK : Boolean;
  Paper : Boolean;
  Online : Boolean;
  Error : Boolean;
end;

Jetzt verstanden????
  Mit Zitat antworten Zitat
Der Gitarrist

 
Delphi 3 Professional
 
#52
  Alt 27. Okt 2003, 08:52

Tach auch. Vielen Dank! Jetzt hab auch ich es kapiert und werd mich da jetzt mal dran machen! Wünsche einen angenehmen Tag und Sorry, dass ich mit einer so niveaulosen Frage gekommen bin, aber manchmal hat man halt ein Brett vorm Kopf oder (wie ich) keine bzw. noch nicht genug Ahnung! THX
  Mit Zitat antworten Zitat
Niels
 
#53
  Alt 27. Okt 2003, 11:59
Moin
Der will bei mir die ParaPrcs.pas im Verzeichnis ...\delphi7\Rave5\Lib (=> hab Delphi 7)
Ich hab schon versucht die dcu reinzukopieren...die will er aber net.
Wär net schlecht, wenn du mir irgendwie die .pas geben könntest.

Niels
  Mit Zitat antworten Zitat
Fox007

 
Delphi 7 Enterprise
 
#54
  Alt 4. Nov 2003, 14:16
Ja bei mir ist das selbe Problem auch unter Delphi 7

Bitte sei so lieb und poste uns eine dcu die auch unter Delphi 7 funktioniert, das wäre eine super sache.

Oder weis wer eine Alternative??

Dankeschööön =)
  Mit Zitat antworten Zitat
Borti
 
#55
  Alt 4. Nov 2003, 14:27
Hi!
(Ich muss mich auch mal hier zu Wort melden)
Die dcu, an der du am arbeiten bist, pmc, kann die auch Interrupt-Befehle erkennen? (Hab mal ein bisschen gelesen *grins*)
Tschu,
Borti
  Mit Zitat antworten Zitat
pmc

 
Delphi 6 Personal
 
#56
  Alt 4. Nov 2003, 15:32
Nein sie kann keine Interrupt befehle erkennen....
  Mit Zitat antworten Zitat
Tyrael Y.

 
Delphi 2007 Professional
 
#57
  Alt 4. Nov 2003, 15:47
Hi,

ich möchte bitte auch eine in D5 kompilierte Version,
wenns geht.

Gruß

Tyrael
Levent Yildirim
  Mit Zitat antworten Zitat
finch
 
#58
  Alt 6. Nov 2003, 18:15
Hi
ich habe einen sehr interessanten Beitrag zu diesem Thema gefunden
http://www.delphi-forum.de/viewtopic...arallel+ltp+xp
Dort wird der zugriff durch eine dll geregelt, die als Treiber funktioniert.

Es funktioniert sehr gut und ist einfach.

Die DLL und eine Beschreibung bekommt man unter http://www.geekhideout.com/iodll.shtml
  Mit Zitat antworten Zitat
Der Gitarrist

 
Delphi 3 Professional
 
#59
  Alt 22. Nov 2003, 15:34
Hey da draußen!
Ich hab mal wieder ein Problem: Wenn ich in meinem Programm die Function PortReset nutzen will, so wie es in dem Beispielprogramm (PortAcces) ist (und zwar exakt so!), dann wird der Else-Befehl aufgerufen (also der Treiber konnte nicht geladen werden). Woran könnte das liegen? Ich nutze XP, Delphi 6 (und hab Delphi 3 auch noch drauf). Das Beispielprogramm funktioniert ohne Probleme! Wäre cool, wenn mir jemand (pmc) antworten könnte, bis dahin wünsch ich ein schönes Wochenende...
Der Gitarrist
  Mit Zitat antworten Zitat
pmc

 
Delphi 6 Personal
 
#60
  Alt 22. Nov 2003, 19:28
Du musst folgende dinge beachten....

1. Die Datei muss vor dem Test gespeichert werden ... es darf keine temporäre datei sein(.pas)
2. Treiber und Programm müssen im selben DIR sein....
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 9   « Erste     456 78     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz