Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [ASSEMBLER] Druckerport unter WinXP (https://www.delphipraxis.net/3462-%5Bassembler%5D-druckerport-unter-winxp.html)

Yheeky 14. Mär 2003 10:58


[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

janjan 14. Mär 2003 11:07

Kuck mal da:

http://www.delphipraxis.net/viewtopic.php?t=2968

und da:

http://www.delphipraxis.net/viewtopic.php?t=3418

Yheeky 14. Mär 2003 16:50

Okay, thx...hat mir geholfen!

Gruß Yheeky

Yheeky 16. Mär 2003 13:07

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

dochilli 17. Mär 2003 16:09

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:
http://www.driverlinx.com/DownLoad/DlPortIO.htm
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;

Yheeky 17. Mär 2003 17:53

Okay danke. Aber was dies hier betrifft:
Zitat:

REPEAT UNTIL (DLPortIO.PortW[Portadr] AND 32)=32;
Wie kann ich die DLPortIO.DLL einbinden?

Gruß Yheeky

dochilli 18. Mär 2003 08:54

Als erstes ganz oben in der Unit: USES PortIO
Dann Treiber aktivieren, etwa so:

Delphi-Quellcode:
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;
Und dann kannst Du mit der obigen Anweisung arbeiten.
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]

Yheeky 18. Mär 2003 09:44

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

dochilli 18. Mär 2003 10:34

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!

Yheeky 18. Mär 2003 12:31

Okay danke, ich teste das mal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 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