![]() |
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 .. |
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 ![]() musst einfach mal dort suchen. Meld dich bei weiteren fragen cu |
Kommt mir bekannt vor das Thema.
![]() 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 |
Unter Win2000 geht es nicht ? Ich gucks mir jetzt mal an ..
|
@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:
so wie Du gesagt hast wird nur Pin1 angesprochen ? dass heisst Port(1) ist an, Port(0) ist aus ?
procedure port(x:byte);
begin asm mov dx,378h mov al,x out dx,al end; end;
Code:
Was wäre wenn ich jetzt Pin 3 und 5 ansprechen möchte ?
procedure TSteuerung.rbtnleftClick(Sender: TObject); assembler;
begin port(1); end; procedure TSteuerung.rbtnrightClick(Sender: TObject); assembler; begin port(0); end; Nachtrag: Oder könnte sein dass bei port(5) dann Pin 1 und 3 angesprochen wird wenn man an das Dualsystem denkt ? |
Moin M.Knebel,
Port 378Hex ist der Standardport für die parallele Schnittstelle.
Delphi-Quellcode:
Zu Deinem Nachtrag:
mov dx,378h // Port laden
mov al,x // auszugebenden Werte laden out dx,al // Byte ausgeben 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' ;-) |
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:
Nun gibt es bei Delphi sowas ähnliches wie ein LPRINT ?
10 INPUT "RTA1000 BOARD DATA";A
20 IF A>255 THEN END 30 LPRINT CHR$(A); 40 GOTO 10 |
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; |
@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 .. |
Hai,
da die Frage ja immer wieder kommt habe ich mal bei Tante Google gesucht: Hier ist ein ![]() |
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 ..
|
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:
Aber unabhängig davon würde es mit dem Z-Paraswitch die es auf der Seite
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.
![]() |
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 |
Zitat:
Ich bin mir nicht ganz sicher was den Befehl Port(0) betrifft, aber es funktioniert. Bei dir wäre es:
Code:
Ich hab mir gedacht das man durch port(0) die dinger einfach auf masse (pin 26) legt.
procedure TSteuerung.rbtnleftClick(Sender: TObject); assembler;
begin port(3); port(5); end; Das was Christian gesagt hat ist richtig. MfG Florian |
Zitat:
yIHoH! :wink: |
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 .. |
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 |
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 |
Re: Die 8 Pins des Parallel Port ansprechen ?
![]() //edit sorry :) dachte dp wär so schlau und macht das für mich :roll: ![]() damit sollte ALLES abgedeckt sein ! der erste thread ist schon genug |
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