![]() |
LPT - Mehrere Pins ansprechen!?
Hallo! Jetzt schreib ich mal wieder ein Prog für die Schule. Dieses Programm soll eine "Flaschenabfüllanlage" steuern. Bevor mich jetzt jeder fragt, wie die aussieht und wie die was abfüllt bleiben wir bei Delphi. Bei meinem ersten Steuerprogramm habe ich nach langem Googlen (so bin ich auch hier hingekommen! :D) ein paar Teile Assembler gefunden mit denen das unter Win9X und ME ohne Treiber funktioniert. Das nächste Programm soll auch wieder unter Win98 laufen muss aber mehrere Ports einlesen und ausgeben.
Ich hatte folgenden Code zum Ansteuern des Parallelports:
Delphi-Quellcode:
Geht auch. Wenn ich nun den ersten Datenpin auf High setzen will hab ich das so gemacht:
procedure port(x:byte);
begin asm mov dx,378h mov al,x out dx,al end; end;
Delphi-Quellcode:
Nun frage ich mich:
procedure TSteuerung.Pin1HighClick(Sender: TObject); assembler;
begin port(1); //setzt ersten Datenpin high end;
Thx im Voraus. MfG Florian :hi: P.S.: Ich würde gerne nach Schluss des Projektes das Programm und ein paar Infos über die Anlage hochladen für alle Interessierten. Wenn ich darf! |
|
port
Hallo,
du liegst schon ganz richtig
Delphi-Quellcode:
damit kannst du auf dem port lesen und schreiben.Const PortNum = $378; function PortIn( PortNum: word): byte; Var a : byte; Begin asm mov DX, PortNum; in AL, DX; mov a, AL; end; {asm} PortIn := a; end; procedure PortOut( PortNum: word; a: byte); Begin asm mov DX, PortNum; mov AL, a; out DX, AL; end; {asm} end; Mehrere pins setzt du indem du das byte erhöhst Wert Pins 1 1 2 2 3 1 & 2 ... wenn ich nicht ganz falsch liege, ist schon länger her das ich sowas gemacht habe. |
Zitat:
Zitat:
Danke! MfG Florian :hi: |
Pins
Hallo Florian,
Das ist ganz einfach Die pins (1-8) sind gleichzusetzen mit den Bits in einem Byte Pin 1 ist = Bit 0 ist = 1 Pin 2 ist = Bit 1 ist = 2 Pin 3 ist = Bit 2 ist = 4 Pin 4 ist = Bit 3 ist = 8 Pin 5 ist = Bit 4 ist = 16 Pin 6 ist = Bit 5 ist = 32 Pin 7 ist = Bit 6 ist = 64 Pin 8 ist = Bit 7 ist = 128 So kann man jeden Pin EINZELN schalten, man muss nur den Wert in den Port schreiben. Wenn man MEHRERE Pins schalten will muss man addieren! Also Pin 1 und 3 schalten = 1 + 4 (wie oben beschrieben) also 5 wenn man den wert 5 schickt gehen die beiden Pins an. Alle Pins schalten ergibt 255 (Summe aller Wert) Pin 3 und 7 ist 4 + 64 = 68, wenn du 68 auf den Port schreibst dann gehen Pin 3 und 7 an. |
Mika. Hast du dieses Programm gefunden von dem du mir erzählt hast? Das würde mir vielleicht doch noch etwas helfen. Morgen wird erstmal Assembler geschrieben in der Schule. Das wird eine entspannte Technik Stunde mit Delphi 6 Personal und meinem Multimeter! :mrgreen:
MfG Florian :hi: |
Hi Flomei,
ja das Programm hab ich wiedergefunden, ich poste das morgen mal hier hoch, jetzt muss ich erst mal ne runde schlafen :) bye |
Hei Flomei,
ich hab das Programm wiedergefunden, aber das ist wirklich tierisch unverständlich :) das war nur so n test für mich. Ich glaub ich kann das besser mal überarbeiten damit das auch verständlich ist. mfg, Michael |
Ich hab Probleme beim Einlesen der Pins. Bitte poste mal den Code mit dem ich ganz sicher die Pins einlesen kann.
Und noch ne technische Frage dazu :mrgreen:: Wie setzt man die Statuspins am Besten auf High? Wir haben da rum probiert aber er wollte nicht. Kann aber auch am Code liegen. :roll: DANKE!!! MfG Florian :hi: |
Hallo,
![]() Wenn Du damit nicht weiter kommst, kann ich Dir auch nicht helfen. ;) Grüsse, Daniel :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 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