Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Die 8 Pins des Parallel Port ansprechen ? (https://www.delphipraxis.net/3099-die-8-pins-des-parallel-port-ansprechen.html)

Darty 23. Feb 2003 11:44


Die 8 Pins des Parallel Port ansprechen ?
 
Hi Delphianer,

ich suche eine einfache Lösung die ersten 8 Pins am Parallel-Port anzusprechen. Ich möchte mit meinen Programm zum Beispiel einen Signal an Pin 3 und Pin 5 senden. Damit wird eine Relais Karte angesteuert. Wenn es geht sollte es generell auf jeden OS laufen. Wüsste da einer wie dass funktioniert, da ich leider noch nie eine Hardware Steuerung programmiert habe.
Danke schon mal für euer Mühe ..

MadMason 23. Feb 2003 12:58

Das Problem hatte ich auch schon einmal.
Dafür gibt es Komponenten, hab die die ich damals verwendet hab leider nicht mehr gefunden, hab sie aber auf jeden fall von Torry
musst einfach mal dort suchen.

Meld dich bei weiteren fragen

cu

flomei 23. Feb 2003 15:29

Kommt mir bekannt vor das Thema.
Parallelport Ansteuerung
Da hab ich auch mehrere Dateien angehängt. Irgendwo ist das Prog mit sämtlichem Code... und weiter unten ist ne dll. Die musst du nach C:\Windows\System\ kopieren. Dann läuft das Prog eigentlich fehlerfrei unter 95, 98, 98SE und ME. Nicht unter 2000 und XP.
(Du kannst meinen Code ruhig benutzen aber schick mir mal das Ergebnis, bitte!)

In meinem Prog wird übrigens der erste Pin angesteuert.

MfG Florian

Darty 23. Feb 2003 16:24

Unter Win2000 geht es nicht ? Ich gucks mir jetzt mal an ..

Darty 23. Feb 2003 17:16

@Mad Mason: Ich habe leider nix passendes beim Torry gefunden ..

@flomei: Da das Code von Dir ist, könntest DU oder ein anderer mir mal diesen Bereich näher erklären ?

Code:
procedure port(x:byte);
begin
asm
mov dx,378h
mov al,x
out dx,al
end;
end;
so wie Du gesagt hast wird nur Pin1 angesprochen ? dass heisst Port(1) ist an, Port(0) ist aus ?
Code:
procedure TSteuerung.rbtnleftClick(Sender: TObject); assembler;
begin
port(1);
end;

procedure TSteuerung.rbtnrightClick(Sender: TObject); assembler;
begin
port(0);
end;
Was wäre wenn ich jetzt Pin 3 und 5 ansprechen möchte ?


Nachtrag: Oder könnte sein dass bei port(5) dann Pin 1 und 3 angesprochen wird wenn man an das Dualsystem denkt ?

Christian Seehase 23. Feb 2003 17:33

Moin M.Knebel,

Port 378Hex ist der Standardport für die parallele Schnittstelle.

Delphi-Quellcode:
mov dx,378h // Port laden
mov al,x    // auszugebenden Werte laden
out dx,al   // Byte ausgeben
Zu Deinem Nachtrag:
Da ja ein Byte (also 8 Bit) auf dem Port ausgegeben werden, würde ich mal sagen ja, aber ohne Gewähr.

Da mittels OUT eigentlich direkt die Hardware angesprochen wird, ist es recht unwahrscheinlich, dass eine Anwendung unter NT/W2K/XP diesen Befehl korrekt ausführen kann. Da sollte der Hardwarezugriff den Treibern vorbehalten sein.

@Flomei:
Zu Deiner Signatur kann ich nur sagen:

yIDoghQo'

;-)

Darty 23. Feb 2003 23:04

Also mein Kollege hatte es mit seiner RTA1000 Relay Card getestet. Und konnte kein Signal bemerken. Eventuell ist dass so kurz dass es nicht sichtbar ist. Wollte nur noch ein kleiner Listing in Basic (habe es nicht) posten damit man sieht dass es normal simpel wäre ..

Code:
10 INPUT "RTA1000 BOARD DATA";A
20 IF A>255 THEN END
30 LPRINT CHR$(A);
40 GOTO 10
Nun gibt es bei Delphi sowas ähnliches wie ein LPRINT ?

Luckie 24. Feb 2003 03:11

So was:
Delphi-Quellcode:
uses
  Printers;

procedure TForm1.Button1Click(Sender: TObject);
var
  F: TextFile;
begin
  AssignPrn(F);
  Rewrite(F);
  Writeln(F, 'Hello paper.');
  System.CloseFile(F);
end;

Darty 24. Feb 2003 09:39

@Christian: Hatte mich zwar schon per PM bedankt, mache es aber an dieser Stelle nochmals ;)

@Luckie: Danke für den Code. Man kann wohl keine Steuerzeichen wie chr$(4) senden. Da der Chr Befehl in Delphi nur den Ascii Code zurückgibt dass in den Klammer steht.

Suche aber trotzdem mal ob ich doch etwas in Torry finde ..

Sharky 24. Feb 2003 10:01

Hai,


da die Frage ja immer wieder kommt habe ich mal bei Tante Google gesucht:

Hier ist ein Ergebniss müsste man mal testen.

Darty 24. Feb 2003 10:59

hmmpff hatte 2 Tage mit der Tante unterhalten. Aber sowas hatte sie nicht ausgespuckt. Sieht gut aus .. Werde ich ausprobieren und das Ergebnis hier posten .. Danke schon mal ..

Darty 24. Feb 2003 13:38

Naja ok ... Wohl wieder ein Fehlschlag. Hatte mit dem Portio.exe (Demo) beim Freund antesten lassen ob die karte überhaupt angesprochen wird. Es macht nicht mal einen Muckser .. Entweder spreche ich die falschen Daten an oder es werden ganz andere sachen gebraucht.

Es hat jetzt vielleicht weniger damit zu tun, aber bekam dass noch vor die Nase
Code:
Mit der Software digiTrace können je LPT-Port acht Ausgänge und fünf Eingänge ange- gesprochen werden: die Datenausgänge D0..D7, die Eingänge ACK, BUSY, PE, SLCT und ERROR. Für die Ansteuerung des Relaiskarte fehlt aber der wichtige Datenausgang für die STROBE-Ansteuerung auf Pin 1 der Centronics-Schnittstelle. Das Interface übernimmt die an den Datenausgängen des Parallelports stehenden Daten erst mit fallender Flanke am Strobeeingang, anderenfalls funktioniert es nicht.
Aber unabhängig davon würde es mit dem Z-Paraswitch die es auf der Seite http://www.point2click.de/ gut funktionieren. Werde dann mal mit dem Autor dieses Programm kontaktieren. Eventuell komme ich dann weiter, oder jemand von euch kennt das Programm.

MadMason 24. Feb 2003 19:09

zu torry: ich erhalte bei suche nach "parallel port" so neun ergebnisse, von denen einige ziemlich vielversprechend klingen.

--> du musst bei der suche "description" einstellen

flomei 26. Feb 2003 14:36

Zitat:

Zitat von M.Knebel
so wie Du gesagt hast wird nur Pin1 angesprochen ? dass heisst Port(1) ist an, Port(0) ist aus ?
Code:
procedure TSteuerung.rbtnleftClick(Sender: TObject); assembler;
begin
port(1);
end;

procedure TSteuerung.rbtnrightClick(Sender: TObject); assembler;
begin
port(0);
end;
Was wäre wenn ich jetzt Pin 3 und 5 ansprechen möchte ?


Nachtrag: Oder könnte sein dass bei port(5) dann Pin 1 und 3 angesprochen wird wenn man an das Dualsystem denkt ?

hm...

Ich bin mir nicht ganz sicher was den Befehl Port(0) betrifft, aber es funktioniert. Bei dir wäre es:
Code:
procedure TSteuerung.rbtnleftClick(Sender: TObject); assembler;
begin
port(3);
port(5);
end;
Ich hab mir gedacht das man durch port(0) die dinger einfach auf masse (pin 26) legt.

Das was Christian gesagt hat ist richtig.

MfG Florian

flomei 26. Feb 2003 14:43

Zitat:

Zitat von Christian Seehase
@Flomei:
Zu Deiner Signatur kann ich nur sagen:

yIDoghQo'

;-)


yIHoH!

:wink:

Darty 3. Mär 2003 18:38

Man kann diesen Thread closen ..

Da das Projekt gestorben ist. Mein Kollege bekam es nicht hin, und der Autor dessen Programm stammt antwortet mir auch nicht. Daher habe ich es auf Eis gelegt. Da ich die Hardware selber nicht habe zum testen.

Trotzdem Danke für die Hilfen ..

Delphianer 4. Mär 2003 09:43

Hallo,

das Problem läßt sich unter allen Win95-Abkömmlingen mit Port-Zugriff lösen. Ich habe die beiden nachfolgenden Prozeduren jetzt nicht aktuell ausprobiert, aber sie sollten funktionieren (und vielleicht hat sie schon jemand angegeben, ich habe nicht alles gelesen).

procedure PortOut(const Value: Byte; const Add: Word); assembler; register;
asm
out dx,al
end;

function PortIn(const Add: Word): Byte; assembler; register;
asm
mov dx,ax
in al,dx
end;

Unter allen NT-Abkömmlingen geht der Zugriff auf den Parallelport zu anderen Zwecken als zum Drucken (dazu zähle ich den Zugriff auf einzelne Portpins), nach allem, was ich im Internet gelesen habe, nicht so ohne weiteres. Da Windows dazu keine API-Funktionen bereitstellt und den direkten Zugriff auf die Hardware sperrt, benötigt man einen Kernel-Treiber, den es allerdings an verschiedenen Stellen auch gibt. Falls jemand unter NT auf eine einfachere Lösung kommt, wäre ich auch dankbar.

Viele Grüße

HagenG 27. Dez 2004 16:19

Re: Die 8 Pins des Parallel Port ansprechen ?
 
Hallo,

habe über Google erfahren das hier jemand die 8fach Relaiskarte RTA1000 hat.
Ich bräuchte dringend den Schaltplan oder einen Anschlussplan zu dieser Karte.
Möchte diese Karte unter VisualBasic ansteuern.
Wenn jemand eine Adresse oder den Schaltplan oder sonstige Info hat der kann mir Mailen.
Danke
Gruss
Hagen

supermuckl 27. Dez 2004 16:59

Re: Die 8 Pins des Parallel Port ansprechen ?
 
http://www.delphipraxis.net/search.p...50010&start=0&

//edit
sorry :) dachte dp wär so schlau und macht das für mich :roll:

Hier im Forum suchenzlportio

damit sollte ALLES abgedeckt sein ! der erste thread ist schon genug

Muetze1 27. Dez 2004 19:08

Re: Die 8 Pins des Parallel Port ansprechen ?
 
Moin!

Lol. Supermuckl: bitte den gesamten Suchstring posten, eine leere Suchliste nützt nix...

@other: Zu dem Hardwarezugriff hat Assarbad hier schon genug geschrieben. Zum einen gehen euro Assembler Out Gehacke nur unter Win9x und eine io.dll braucht man nicht nutzen, das das Assarbad hier schon gepostet.

@HagenG: meines Wissens sind die DatenLeitungen D0 bis D7 direkt mit einem Treibertransistor an den jeweiligen Relais und daher braucht man eigentlich keinen Schaltplan.

MfG
Muetze1


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