![]() |
Re: Ansteuern des Parallelports
guten tag allerseits,
ich hab den alten thread hier mal ausgegraben, da ich noch einige fragen habe. manche werden euch wahrscheinlich etwas eigenartig vorkommen, aber das liegt daran, dass ich gerade erst in der schule delphi lerne und noch nicht so der spezialist bin. also es geht los: --------------------------------------------------- 1. Frage
Code:
wieso wird hier zwei mal dx verwendet?
procedure PortOut(x:byte);
begin asm //erklärt dem Compiler, dass Assembler Code anfängt mov [b]dx[/b],378h //378h ist die Adresse von LPT 1 mov al,x //x müssen wir noch einen Wert zuweisen out [b]dx[/b],al end; end; hier hingegen nicht
Code:
// Werte holen aus dem Register des Ports (NUR UNTER WINDOWS 9X)
asm mov dx, Port in al, dx Mov Value, AL end; 2. Frage
Code:
muss hier nicht hinter das port ein Out?
procedure TEureForm.ZBButtonClick(Sender: TObject); assembler;
begin [b]port[/b](1); //hier weisen wir x einen Wert zu (siehe Tabelle unten) end; 3. Frage
Code:
wird hier port nicht zwei mal deklariert, bzw. der integer zugeordnet? (delphi meint: redeclaration...)
Function LesePort( [b]Port : Word[/b] ) : Byte;
Const LPT_DataRegister = $378; LPT_StatusRegister = $379; LPT_KontrollRegister = $37A; Var Value: Byte; [b]Port: Word;[/b] 4. Frage bedeutet $378 das gleiche wie 378h ? 5. Frage muss ich bei LPT2 einfach die drei jeweils durch die 2 austauschen? also, 378 --> 278 379 --> 279 37A --> 27A 6. Frage wie kann ich den Wert der Variable Port aus word in einen string umwandeln und in einer showmessage darstellen? 7. Frage
Code:
wieso heißt es nicht in dx,al
// Werte holen aus dem Register des Ports (NUR UNTER WINDOWS 9X)
asm mov dx, Port [b]in al, dx[/b] Mov Value, AL end; 8. Frage wie binde ich den Einlese-Code in mein Form ein? anders gefragt: wird die funktion automatisch beim öffnen ausgeführt oder muss ich sie noch durch ein ereignis (onclick) mit (z.B.) einem Button ausführen? wieso verwendet man eine funktion und keine prozedur? ----------------------------------------- ich weiß, das war viel. allerdings brauche ich im moment eure hilfe, da ich allein nicht weiter komme. schön, dass es hier menschen gibt, die ihr wissen gerne teilen und sich um nachkömmlinge kümmern. danke! Capable |
Re: Frage zum Parallelport-Tutorial
Hallo Capable und herzlich willkommen in der DP. :dp:
Aufgrund der Masse Deiner Fragen habe ich einen neuen Thread daraus gemacht. Üblicherweise gilt hier die Regel: Eine Frage pro Thread. Nur so können wir ein Mindestmaß an Übersicht gewährleisten. ;-) Wäre super, wenn Du dies künftig beherzigen könntest. :thumb: Die Fragen von Capable beziehen sich auf das folgende Tutorial: ![]() |
Re: Frage zum Parallelport-Tutorial
Moin!
Zitat:
Zitat:
Zitat:
Zitat:
h = hexadezimal d = dezimal o = oktal b = binär Dies wird z.B. direkt so vom Turbo Assembler von Borland verwendet. Zitat:
3BCh, 378h, 278h und PCI Portadressen (also Portadressen > 1000h) Bei den meisten Rechnern wo ein 2. Parallelport mit einer ISA Karte nachgerüstet ist, da wird es 278h sein. Bei solchen wo eine MDA Karte mit drinne steckt, da wird es 3BCh sein. Zitat:
Delphi-Quellcode:
Begin
ShowMessage('Portadresse: ' + IntToHex(Port, 3) + ' hexadezimal' + #13#10 + 'Portadresse: ' + IntToStr(Port) + ' dezimal'); End; Zitat:
Code:
Genauso bei Move:
In Ziel, Quelle einlesen, also ins Ziel schreiben und vom Port lesen
Out Ziel, Quelle schreiben, also in den Port schreiben.
Code:
mov Ziel, Quelle
mov dx, $378 Zitat:
Den anderen Teil der 8. Frage kann dir ein anderer erklären - war genug erstmal für mich. @flomei: Erklär mal bitte auch, das es eine Basisadresse gibt und dann die Register immer nur ein fester Offset von dieser Basisadresse ist. MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 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