AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [ASSEMBLER] Druckerport unter WinXP
Thema durchsuchen
Ansicht
Themen-Optionen

[ASSEMBLER] Druckerport unter WinXP

Ein Thema von Yheeky · begonnen am 14. Mär 2003 · letzter Beitrag vom 18. Mär 2003
Antwort Antwort
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#1

[ASSEMBLER] Druckerport unter WinXP

  Alt 14. Mär 2003, 10:58
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
  Mit Zitat antworten Zitat
janjan

Registriert seit: 16. Jan 2003
Ort: Bonn ("links über Königswinter ")
240 Beiträge
 
Delphi 4 Standard
 
#2
  Alt 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
Die Wichtigkeit eines Postings im Forum ist reziprok zur Anzahl der enthaltenenen, kumulierten Ausrufungszeichen!!!
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#3
  Alt 14. Mär 2003, 16:50
Okay, thx...hat mir geholfen!

Gruß Yheeky
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#4
  Alt 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
  Mit Zitat antworten Zitat
dochilli

Registriert seit: 17. Mär 2003
5 Beiträge
 
#5
  Alt 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;
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#6
  Alt 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
  Mit Zitat antworten Zitat
dochilli

Registriert seit: 17. Mär 2003
5 Beiträge
 
#7
  Alt 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]
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#8
  Alt 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
  Mit Zitat antworten Zitat
dochilli

Registriert seit: 17. Mär 2003
5 Beiträge
 
#9
  Alt 18. Mär 2003, 10:34
Hier kommt die entsprechende ZIP-Datei. Man muss dann noch eine Komponente installieren und diese auf dem Formular ablegen!
Angehängte Dateien
Dateityp: zip dlportio.zip (852,0 KB, 68x aufgerufen)
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#10
  Alt 18. Mär 2003, 12:31
Okay danke, ich teste das mal.
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:54 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