![]() |
[ASSEMBLER] Druckerport unter WinXP
Hi Leutz 8),
bin gerade dabei ein kleines Programm zu schreiben, mit dem man High- und Lowsignale an den Druckerport senden kann. Unter WinXP gibt es ja das Problem der "Privilegierten Anwendung". Mein Lehrer hat gemeint, dass man das Problem mit einer einfachen Dll-Datei lösen könnte. Kann mir jemand sagen wie diese heisst? Mit den Befehlen hab ich kein Problem, nur mit der eigentlichen Ansteuerung des Ports bzw. der einzelnen Pins. Gruß Yheeky |
|
Okay, thx...hat mir geholfen!
Gruß Yheeky |
Ich muss doch nochmal nachhaken...also irgendwie bekomme ich es ohne diese besagte Dll auf diese Weise nicht hin. Ich habe jetzt mal eine Komponente ausgetestet bzw. eine Unit, das funktioniert nun zwar, aber sie ist extrem langsam. Sie benötigt knapp 1 Sekunde um einen Zustand zu setzen und da ich bei meinem Programm 8^8 Möglichkeiten durchgehen muss, ist das unmöglich zu realisieren. Kennt da jemand ne schnellere und bessere Möglichkeit?
Gruß Yheeky |
Unter Windows XP und 2000 braucht man zum Ansprechen der Ports einen Treiber (eine DLL reicht nicht!). Es gibt diese mittlerweile auch kostenlos zb. unter:
![]() Ich habe mit diesem Treiber schon gearbeitet und er funktioniert. Wenn man Administratorrechte hat, kann man alle Ports wie früher unter Turbo Pascal auslesen und setzen. Ich würde es mal damit versuchen... Die Paperout-Leitung kann man z.B. so auslesen: REPEAT UNTIL (DLPortIO.PortW[Portadr] AND 32)=32; |
Okay danke. Aber was dies hier betrifft:
Zitat:
Gruß Yheeky |
Als erstes ganz oben in der Unit: USES PortIO
Dann Treiber aktivieren, etwa so:
Delphi-Quellcode:
Und dann kannst Du mit der obigen Anweisung arbeiten.
PROCEDURE TForm1.Treiberaktivieren;
BEGIN DLPortIO.DriverPath:=ExtractFileDir(ParamStr(0)); // ShowMessage(DLPortIO.DriverPath); if (DLPortIO.ActiveHW) then BEGIN Label1.Color:=CLgreen; Label1.caption:='Treiber aktiv!'; END else BEGIN Label1.Color:=CLred; Label1.caption:='Treiber nicht aktiv!'; END; DLPortIO.OpenDriver(); if (not DLPortIO.ActiveHW) then begin MessageBeep(0); Application.MessageBox('Driver not found', ' Warning! ',mb_OK or mb_ICONHAND); end; // HWCtrl.HardAccess:=true; if DLPortIO.ActiveHW then BEGIN Label1.Color:=CLgreen; Label1.caption:='Treiber aktiv!'; END else BEGIN Label1.Color:=CLred; Label1.caption:='Treiber nicht aktiv!'; END; END; REPEAT UNTIL (DLPortIO.PortW[Portadr] AND 32)=32; liest den Port aus. Man kann aber auch hineinschreiben. Der Treiber enhält übrigens eine umfangreiche Dokumentation. Wichtig ist noch, dass der Treiber und DLL (DLPORTIO.SYS, DLPORTIO.DLL) entweder im Programmverzeichnis direkt stehen oder im WINXP\system32\Driver Verzeichnis! [edit=Christian Seehase] Delphi-Tags gesetzt. Mfg, Christian Seehase[/edit] |
Okay, danke erstmal, aber die Datei PortIO.dcu ist nicht auf meinem PC. Sie ist bei dem "Treiber-Set" nicht dabei, dort sind nur C++/Visual Basic Komponenten vorhanden oder sehe ich da was falsch?
Gruß Yheeky |
Liste der Anhänge anzeigen (Anzahl: 1)
Hier kommt die entsprechende ZIP-Datei. Man muss dann noch eine Komponente installieren und diese auf dem Formular ablegen!
|
Okay danke, ich teste das mal.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:48 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