Autor Beitrag
Jan K.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP
D6
BeitragVerfasst: Mo 28.04.03 15:19 
Hi, ich weiß, wie ich auf WinME oder 98 auf den LTP Port zugreifen kann, doch wie geht das mit Windows XP?
Adrian
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 314



BeitragVerfasst: Di 29.04.03 08:48 
Titel: LPT bei XP
Hallo,

google mal nach IO.DLL.
Du brauchst nur die DLL einbinden und entsprechend ansteuern - funktioniert prächtig.

Gruß,

Adrian
Jan K. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP
D6
BeitragVerfasst: Mi 30.04.03 14:06 
Titel: geht nicht
Sorry, aber unter Win XP geht das bei mir nicht, das Programm bricht immer mit der Fehlermeldung "Privilegierte Aktion" oder so ab. Unter Win ME geht das, aber ich will es halt auf Win XP machen.
trotzdem Danke
BungeeBug
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 901



BeitragVerfasst: Mi 30.04.03 14:31 
Hi,
dann guck mal daaa -> www.torry.net/printers.htm

MfG BungeeBug
Adrian
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 314



BeitragVerfasst: Mi 30.04.03 22:03 
Titel: LPT und XP
Hallo Jan,

wenn Du die Antwort "Privilegierte Anweisung" bekommst, paßt wohl was bei der DLL-Einbindung nicht. Der folgende Code (Ausschnitt) hat bei mir funktioniert.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
implementation

{$R *.DFM}

procedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll';
function PortIn(Port:Word):Byte; stdcall; external 'io.dll';

procedure TForm1.Button1Click(Sender: TObject);
begin
  PortOut($378, $AA);
end;


Mit PortIn kannst Du über $379 die Eingänge einlesen, die schon bei der SPP-Einstellung vorhanden waren.

Servus,

Adrian
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 30.04.03 22:18 
Titel: Re: geht nicht
Jan K. hat folgendes geschrieben:
Sorry, aber unter Win XP geht das bei mir nicht, das Programm bricht immer mit der Fehlermeldung "Privilegierte Aktion" oder so ab. Unter Win ME geht das, aber ich will es halt auf Win XP machen.
trotzdem Danke

Genau deswegen sollst du über die DLL die Ports ansteuern, weil unter NT-basierenden System das OS den direkten Hardwarezugriff unterbindet. Dies geht nur über einen Treiber. Und diese DLL stellt einen Treiber dar.
Jan K. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP
D6
BeitragVerfasst: Fr 02.05.03 14:09 
danke, werds nochmal ausprobieren
Jan K. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP
D6
BeitragVerfasst: Fr 02.05.03 15:17 
Titel: sorry
Ich bin glaub ich einfach zu blöd, jetzt kommt eine Fehlermeldung, dass die procedur portout nicht in der dll ist ????
Ex0rzist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: Fr 02.05.03 19:07 
Hast du auf Groß- und Kleinschreibung geachtet?

_________________
If accidentally read, induce vomitting.
Jan K. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP
D6
BeitragVerfasst: Sa 03.05.03 15:57 
Tut mir Leid, aber ich krieg das einfach nicht hin, es bricht immer wieder mit der gleichen Fehlermeldung ab: Privilegiere Anweisung... .
könnt ihr mir nicht ein (einfaches,funktionierendes) Beispiel schicken??
RFZ
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137

WinME, WinXP, Win2k*, Win98*, Win95*, Win3.11*, DOS* (*VMware)
D4 Prof
BeitragVerfasst: So 18.05.03 18:39 
Moin, da ich lange das selbe Problem hatte, wollt ich jetzt mal die Lösung posten :)
Es scheint mehrere io.dlls zu geben, ein paar mit und ein paar ohne PortOut.
Die richtige hab ich z.B. hier gefunden: www.geekhideout.com/iodll.shtml (Direktlink io.dll)
Einfach mit in den Programmordner kopieren, und dann sollte es wirklich funktionieren :)

cu RFZ
Jan K. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP
D6
BeitragVerfasst: So 18.05.03 19:41 
´Danke, hatte aber auch schon eine funktionierende Version gefunden... :roll:
GIGI
Hält's aus hier
Beiträge: 8

Win2003 Server Enterprise, Suse Linux 9.1
D6 Prof, D7 Enterprise, Kylix 3 Enterprise/Open Edition
BeitragVerfasst: Di 25.11.03 21:12 
Titel: Problem mit MBM5 und CpuIdle
Hi also bei mir funktioniert die Ausgabe mit der IO.dll. Aber wenn ich das Prog. Motherboard Monitor 5 oder CpuIdle gestartet habe und dann mein Programm starte bekomme ich eine Fehlermeldung mit dem Inhalt: MBM5 Core: Priviliged Instruction. bzw CpuIdle: Priviliged Instruction.

Nach der Fehlermeldung funktionieren beide Programme (MBM5 und CpuIdle) nicht mehr, aber mein Programm funktioniert weiterhin.
Moonbiker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Mi 05.10.05 23:53 
Ist zwar schon ne weile her, aber vielleicht könnt ihr mir dennoch helfen...

Ich verwende die io.dll für meinen parallelen port, und habe folgende fragen:

1. welche Adresse des Ports ist günstiger: $378, $379, 888, bzw mit den ergänzungen '+1' oder '+2'?
2. sind da unterschiede beim einlesenund ausgeben bei unterschiedlichen adressen (habe was von $379 gelesen)?
3. bei mir wird immer Pin3, als0 ausgabewert 4 aktiviert, wenn ich wild auf meinen eingabestatern rumdrücke (bzw meine hardware dies tut)---warum und wie kannich es umgehen?

ok, naja, mal sehn ob hier noch jmd ist,
als denn,
cya
drstar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 79
Erhaltene Danke: 2

Windows 8.1/x64
Delphi 10.1
BeitragVerfasst: Do 06.10.05 21:42 
Wie meinst Du das, welche Adresse ist "günstiger"?
Darum geht es nicht. Die Ports haben eine bestimmte Bedeutung. Müßte jetzt lügen, wie es beim LPT war, aber wenns genauso wie beim IDE-Controller ist, sind diese PORTS prinzipiell mit Registern verknüpft (ich meine nicht die Register der CPU, sondern im Chipsatz bzw. im LPT-Controller, der ja via ISA-Bridge am PCI-Bus hängt).
Folglich gibt es Befehlsregister, Statusregister und Datenregister. Jedes hat seine spezifische Aufgaben. Ich denke mal, da kann ein alter DOS-Hase mit Hardwareerfahrung mehr zu sagen.
Auf jeden Fall ist es nicht egal, welchen Port Du ansprichst.
___________________________________
Bearbeitet.........................
___________________________________

So, hab mich mal schlau gemacht.

Zunächt schematisch zur Hardware (Connector), guckst Du hier:
www.tarigon.de/tramp/epp-ecp.html

...
So, hab mal ein wenig gegoogelt und ein klein wenig Infos zusammengetragen:
LPT1 -> 0x0378 - 0x037F (in Delphi $0378 - $037F)
LPT2 -> 0x0278 - 0x027F (in Delphi $0278 - $027F)

So, und wie schon zuvor zu lesen, gibt es diese drei Registerarten: Status- , Befehls- und Datenregister.

Zunächst zum Befehlsregister: es ist beschreibbar, und übernimmt den Befehl (lesen, schreiben, initialisieren, etc.)
Das Datenregsietr kann sowohl beschreiebn als auch gelesen werden, abhängig davon, ob man Daten über den LPT ausgeben (= beschreiben) oder einlesen (= lesen) möchte.
Das Statusregister kann nur gelesen werden und enthält den Statsu der letzten Operation (Ready, Error, Busy...). Dieses Register ist nach JEDER Operation auszulesen, egal, ob Init, Datenausgabe oder einlesen. Sollte das Statusregister nach einem Lesebefehl nämlich einen Fehler melden, sind die daten im Datenregister nur einen Müll wert. Für weitere Fragen mal im Delphi-Forum, bei Delphi-Praxis oder bei Google suchen.


So. Hoffe, das hilft weiter...


Zuletzt bearbeitet von drstar am Do 06.10.05 22:10, insgesamt 1-mal bearbeitet
Moonbiker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Do 06.10.05 21:49 
ok, danke!
werde es sicher irgendwie hinbekommen, habe diverse literatur vor mir, dachte nur es würde so schneller gehen...

thx
Mann_aus_Delphi
Hält's aus hier
Beiträge: 15



BeitragVerfasst: So 01.03.09 17:09 
Hallo,
dieses Thema ist zwar schon ziemlich alt, ich probiers trotzdem mal!

Ich möchte eine selbstgebaute Hardware über den Parallelport ansteuern. Jedoch will ich nur Daten schreiben, keine lesen.
Die Daten, die ich senden möchte liegen als Dezimalzahl vor. Nun wandele ich sie ins Dualsystem (8 Bit) um und schreibe sie in den Parallelport. Wahrscheinlich muss man jedem Pin einzeln eine 1 oder eine 0 zuweisen, oder?

Da ich mich noch nie mit Hardware-Ansteurung beschäftigt habe, wäre es sehr nett, wenn jemand ein kleines Beispiel bringen könnte, wie ich nun, mit Hilfe der IO.dll, eine acht-stellige Zahl im Dualsystem über den Parallerport versende.

(Ich benutze Delphi 7 und Turbo Delphi 2006. Das Programm sollte später unter XP laufen.)

Vielen Dank schon mal,
Mann aus Delphi!
Mann_aus_Delphi
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 02.03.09 20:54 
So,
hab's jetzt hier mit hinbekommen!

www.franksteinberg.de/win32bit.htm