![]() |
Auslesen des Parallel Ports
Hi,
ich habe folgendes vor: Ich möchte gerne einen Draht, der aus dem Parralelport kommt wieder in den Parralel Port leiten. Nun möchte ich gerne gerne mit meinem Delphi Programm ermitteln, wann nun der Stromimpuls wieder in den Port reingeht. Mein Problem ist, an welche Pins muss ich die Drähte löten ? Und wie bemerke ich mit meinem Programm, dass die "Verbindung" hergestellt ist ? Mit der io.dll sende ich ja folgendermaßen:
Delphi-Quellcode:
Doch wie lese bzw merke ich jetzt das was in den Port "gesendet" wird ??
portout(888,16)
Danke Hibbert |
Re: Auslesen des Parallel Ports
Hi!
Ich nutze für so etwas immer die inpout32.dll von ![]() Lade sie in dein Programm wie folgt:
Delphi-Quellcode:
Mit
// inpout32.dll für LPT-Ausgang unter WinNT, Win2000 und WinXP laden
procedure Out32(PortAddress:word;Value:byte);stdcall;export; external 'inpout32.DLL'; function Inp32(PortAddress:word):byte;stdcall;export; external 'inpout32.DLL';
Delphi-Quellcode:
kannst du z.B. D0 des LPT1-Portes auf High setzen. Mit
out32(888,1);
Delphi-Quellcode:
liest du den aktuellen Status des LPT1-Portes aus. Das klappt prima. Zudem kann man jede Byteoperation anwenden, die man kennt.
Inp32(888);
Wenn du
Delphi-Quellcode:
setzt, dann schaltest du alle Register auf high, bei 127 nur das letzte, bei 64 das vorletzte, etc.
Out(888,255);
Der LPT1-Port geht dann auch noch von 888 auf 889 und 890, wo man dann jeweils neben den Data-Registern auch die Status- und Strobe-/Line-/Feed- etc. Register lesen / setzen kann. Du musst jetzt nur noch einen Timer setzen, der in bestimmten Zeitabständen den Port mit
Delphi-Quellcode:
etc. abfragt. Pass aber auf: manche Register sind negiert und müssen gesondert behandelt werden.
if not inp32(888)=0 then ShowMessage('Da ist einer auf meine Schnur getreten!');
Schöne grüße, Christian :D |
Re: Auslesen des Parallel Ports
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab hier noch ne kleine *.doc-File für dich... die habe ich genutzt, um mir das Schnittstellensystem näher zu bringen. Wenn du Sourcecode brauchst, dann kannst du z.B. in die Sources meines PC_DIMMERs schauen, da ich dort ebenfalls den Parallelport ansteuere:
![]() Die Belegung des LPT-Ports findet man ganz einfach ![]() viel Glück, Christian :) |
Re: Auslesen des Parallel Ports
cool danke, ich werde mir das morgen mal nach der schule angucken.
ich werde mich auf jedenfall nochmal melden :wink: |
Re: Auslesen des Parallel Ports
Hallo,
Zitat:
An welche Pins könnte ich zum Beispiel einen Taster anschließen, dessen drücken dann registriert wird?
Code:
----------------------
| | | | LPT-Port Taster | | | | ------------------- Zitat:
Gruß zebrafalke |
Re: Auslesen des Parallel Ports
|
Re: Auslesen des Parallel Ports
Thx, hatte es schon anders hingekriegt :wink:
Gruß zebrafalke |
Re: Auslesen des Parallel Ports
Zitat:
Hab schon im Bios auf EPP1.7 umgestellt, hat nichts genützt. Grüße, Alleinherrscher |
Re: Auslesen des Parallel Ports
Auch das Output Latch im Data Control Register konfiguriert? Im Normalfall ist der LPT nur zur Ausgabe da. Von daher hatte man früher immer den zuletzt ausgegebenen Wert beim einlesen zurück bekommen. Von daher muss man nun erstmal dieses Latch Umschalten um das Signal der Datenleitungen zu bekommen.
Aber noch was grundlegendes: Offene Datenpins sowie zu Ground geschlossene liefern immer das gleiche Signal: LOW. |
Re: Auslesen des Parallel Ports
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich habe am Anfang des Jahres ein altes Ketcar mit nem Laptop und ner Autobatterie zum Fahren gebracht. Dabei musste man natürlich auch die Radstellung überprüfen, also etwas über den LPT einlesen. dazu habe ich mir damals n kleines Testprogramm geschrieben. Es gibt Signale ab, kann aber auch welche einlesen. Ich habe das Prog mal angehangen. Kurz zum Programm: V, L, R, Z würden das Teil zum Fahren bringen. Bumber, Mittelstellung und Links/rechts sind rot oder grün bei entsprechender belegung, ist aber auch egal, war nur was für mich zum überprüfen. Wichtig dürften hier die Checkboxen an der rechten Seite sein. Ist ein Haken gesetzt, so ist die Leitung geschlossen. (Pin 10 - 13 und Pin 15) Mit dieser Methode konnte ich später im Hauptsteuerungsprogramm alle wichtigen Informationen "einlesen". Ich hoffe es hilft... (Bitte nicht über den schlechten Programmirstiel/rechtschreibfehler oder sonstiges herziehen, es war nur ein kleines Testprogramm für mich. Habe auch ein wenig in der Das005.pas rumgefummelt... also mal gucken. hibbert |
Re: Auslesen des Parallel Ports
Hi
Also, so einfach, wie du dir das vorstellst (1. Posting) wird's nix. Wenn du ein Out auf den Port gibst, wird dir ein Datenbit gesetzt (oder auch nicht..) undnun möchtest du per In dieses Bit auf einem anderen Datenbit lesen. Klar, die Hardware schaltet das gesetzte Bit aus und erwartet nun ein Signal von "außen". Eine Chance gäbe es über die Steuerleitungen. Irgendwo gibt's hier ein Tutorial von mir, aber such unter Autor den Namen Matze. Er hat es damals für nich hier reingesetzt. Übrigends, der Parallelport ist für "Spielereien" gut geeignet und wenn du einen alten PC mit Win 95 / 98 hast, kannst du direkt mit in und Out in Assemblercode die Portregister beschreiben und auslesen. Allerdings wirst du nicht so ganz ohne ein paar Ic's auskommen, um den Portbaustein nicht zu überlasten. Das witzige, er raucht nicht, aber du kannst ohne weiteres Spiegeleier drauf braten..... Gruß oldmax |
Re: Auslesen des Parallel Ports
Zitat:
|
Re: Auslesen des Parallel Ports
Zitat:
Ein Pin der Dauer High ist wird zb auf Pin 13 gelegt, dazwischen ein Schalter. Nun das Programm starten und ein wenig an dem Schalter spielen. Und siehe da... in dem Programm tut sich was. |
Re: Auslesen des Parallel Ports
Besten Dank, hibbert!
Dein Programm funktioniert wunderbar, und am Wochenende werde ich auf dieser Grundlage dann mal mein Programm schreiben! In diesem Sinne, schönes WE an alle und danke nochmal für eure Hilfe |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage, |
Re: Auslesen des Parallel Ports
Hi
Auch wenn du vielleicht dieses Thema als beendet betrachtest, möchte ich hier noch einmal eine Antwort geben und vor möglichen Trugschlüssen warnen. Also, mag sein das eine Beschaltung eines 5V führenden Pins dir komischerweise auf dem Pin 13 grad mal freundlich gesonnen ist, aber... Hier ein wenig Erklärung: Es gibt für den Parallelport 3 Register Ein Datenregister, ein Kontrollregister und ein Statusregister. Die Bits dieser Register sind auf den Parallelport geschaltet. So sind Pin 2 bis Pin 9 die Datenbits. (vollständiges Byte) Statusbits sind Pin 10, 11, 12 , 13 und 15. (nicht alle Bits des Registers ) Das Controllregister findet sich auf den Pins 1, 14, 16 und 17. ( auch nicht alle Bits des Registers) Nun hab ich grad mein schlaues Buch nicht zur Hand, aber ich glaub, das Statusregister sind Eingänge und das Controlregister sind Ausgänge. Die Datenbits sind unter bestimmten Voraussetzungen Bidirektional. Wenn du nun (durch Zufall) eine 5V Leitung auf deinem Port gefunden hast, so ist das kein Garant, das diese 5 V auch immer anstehen. Der Parallelport hat keine 5V Spannung auf dem Port. Wenn du nun dein Programm so auslegst, das du einen programmierbaren Pin das 5V Signal abforderst, nun ja, die Antwort nach der Zuverlässigkeit abgesehen von der unnötigen Gefahr durch irgendeinen dummen Kurzschluß den Port zu zersemmeln, kannst du dir da schon selbst beantworten.... Da ist es schon besser, wenn eine 4,5V Batterie genommen wird, der Minus an eines der Pins 18 bis 25 (alles GND-Leitungen) und die 5 V + auf eine der Statusleitungen, die dann unter der Adresse der Statusbits eingelesen werden kann. Wesentlich besser ist es, sich mal in ein paar Elektronikforen unzuhören, was die Experten so zum Beschalten irgendwelcher Portleitung vorschlagen. Manchmal gibt's sogar Wissen unter Leuten, die nich grad Delphi programmieren. Gruß oldmax und deinem Rechner ein möglichst langes Leben.... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:42 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