![]() |
Problem mit paralleler Schnittstelle
Liste der Anhänge anzeigen (Anzahl: 1)
Ich versuche momentan (bisher leider ohne Erfolg) die parallele Schnittstelle mit Delphi 7 auszulesen.
Mein Code sieht bis jetzt so aus:
Delphi-Quellcode:
Die DLL habe ich
unit uLPTTest;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; procedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll'; function Portin(Port : Word): Byte; stdcall; external 'io.dll'; type TForm1 = class(TForm) Edit1: TEdit; Label1: TLabel; Button1: TButton; Button2: TButton; procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); begin form1.Edit1.Text:=inttostr(Portin($378)); end; end. ![]() Aber irgendwie scheint das ganze nicht zu funktionieren. Ich erhalte jedesmal den selben Fehler (siehe unten). Kann mir bitte jemand einen Tipp geben, woran das liegen könnte? Ich komme da nicht weiter. |
Re: Problem mit paralleler Schnittstelle
Teste doch mal mit der Funktion
Delphi-Quellcode:
Gruß oki
function IsDriverInstalled : Boolean;
|
Re: Problem mit paralleler Schnittstelle
Ich habe jetzt
Delphi-Quellcode:
hinzugefügt, sowie folgende Veränderung vorgenommen:
function IsDriverInstalled : Boolean; stdcall; external 'io.dll';
Delphi-Quellcode:
Ich erhalte aber immer noch den selben Fehler. :(
procedure TForm1.Button2Click(Sender: TObject);
begin if IsDriverInstalled=true then form1.Edit1.Text:=inttostr(Portin($378)); end; |
Re: Problem mit paralleler Schnittstelle
Hi,
leider liegt die Zeit, in der ich am Parallel-Port programmiert habe schon etwas zurück. Kann die alten Quellen auch grad nicht finden. Probier mal dies und geh mit dem Debugger durch wo der Fehler kommt:
Delphi-Quellcode:
Dann noch die Fragen:
procedure TForm1.Button2Click(Sender: TObject);
var PortValue : Byte; begin if IsDriverInstalled then begin PortValue := 0; PortValue := PortIn($378); Edit1.Text:=inttostr(PortValue); end; end; 1. Welches Windows benutzt du? 2. Stimmt die Portadresse? Gruß oki PS: probier auch mal PortWordIn. |
Re: Problem mit paralleler Schnittstelle
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Zitat:
2. Die Portadresse stimmt auf jeden Fall. Zitat:
Hier noch mal die Fehlermeldung und ein Screenshot des Debuggers. Leider kann ich damit so gar nichts anfangen. |
Re: Problem mit paralleler Schnittstelle
Hi,
das sieht dann traurig aus. Der CPU-Screenshot sagt mir auch nichts. Ich kann mich noch duster daran erinnern, dass ich damals einen Treiber installieren musste. Ist aber ewig her. Bin mir aber recht sicher, dass es nur danach ging. Ich such noch mal in meinen alten Projekten. Gruß oki |
Re: Problem mit paralleler Schnittstelle
Zitat:
|
Re: Problem mit paralleler Schnittstelle
Sorry,
leider habe ich da nichts mehr gefunden, ist halt auch schon 10 Jahre her. Was willst du eigentlich mit der parallelen Schnittstelle machen? Die ist doch so gut wie ausgestorben. Gruß oki |
Re: Problem mit paralleler Schnittstelle
Trotzdem vielen Dank für deine Bemühungen.
Ich möchte die parallele Schnittstelle verwenden, um die Bilddaten einer Gameboy-Kamera, die ich mit einem Mikrocontroller auslese an den PC zu senden um mir dann dort das Bild anzeigen zu lassen. Mein Ziel sind mehrere (>1) Bilder pro Sekunde. Da es sich pro Bild um 16KByte handelt ist die serielle Schnittstelle leider zu langsam. Deshalb wollte ich es jetzt mal mit der parallelen Schnittstelle versuchen. |
Re: Problem mit paralleler Schnittstelle
Hi,
schau mal auf diesen Thread ![]() Gruß oki |
Re: Problem mit paralleler Schnittstelle
|
Re: Problem mit paralleler Schnittstelle
OK, mit der INPOUT32.DLL hat es jetzt funktioniert.
Ich habe mal versuchsweise meine Relaiskarte rangehängt. Die Ausgabe Über die Datenleitungen funktioniert einwandfrei. Wie muss ich es denn mit der Eingabe machen? Sind die Eingänge HIGH-aktiv oder LOW-aktiv. Muss ich also vor dem Lesen alle Datenleitungen vorher auf LOW oder auf HIGH setzen? Ich will nix kaputtmachen, deshalb frage ich lieber. Und dann noch was wie komme ich denn an die Kontrollregister SELECT, INIT, AUTLF und STROBE und die Statusregister BUSY, ACK, PAPER, ONLINE und ERROR ran? Register hab ich schon rausgefunden: Basisadresse + 0 ist das Datenregister, Basisadresse + 1 ist das Statusregister, Basisadresse + 2 ist das Kontrollregister nur welches Bit ist welcher Anschluss am Port? Welches Bit steht z.B. für SELECT oder welches für ACK. Gibts da vielleicht irgendwo ne Übersicht? |
Re: Problem mit paralleler Schnittstelle
Du musst auch die Threads richtig lesen. Steht alles da.
![]() Zu dem Thema Eingänge setzen gabs auch noch einen Link mit einer einfachen Testschaltung. Ich denke, die Eingänge sind Low-Aktiv. Benutze aber möglichst Schutzwiderstände für die Eingangsleitungen (330R) so das nicht schon auf deiner Schaltung erledigt ist (kenn ich ja nicht). Ein paar Tutorials zu diesem Thema sind sicher angeraten. Benutze auch die Suche. Mit dem Suchwort Parallelport findest du alles, was du brauchst. Gruß oki |
Re: Problem mit paralleler Schnittstelle
Nachtrag,
ich hatte es so verstanden, dass das mit der Adressierung Basisadresse + Offset für die Register auch mit der io.dll gehen sollte. Gruß |
Re: Problem mit paralleler Schnittstelle
Zitat:
Die Steuerregister und die Kontrollregister sind LOW-aktiv. Und nach dem Schaltplan ![]() Zitat:
|
Re: Problem mit paralleler Schnittstelle
Falls irgendjemand sich für echtes Papier interessiert:
Tom Hogan "Die PC Referenz für Programmierer" ISBN: 3-89390-272-4 Damals steckte Objektorientierung allerdings noch in den Kinderschuhen! darum gibts da noch interrupts und keine Klassen. Gruß K-H |
Re: Problem mit paralleler Schnittstelle
Zu früh gefreut.
Ich kann zwar jetzt ohne Probleme das Datenregister setzen. Aber ich kann das Statusregister und Kontrollregister nicht ändern. Ich muss aber Bit 5 des Kontrollregisters auf High setzen, sonst kann ich den Port nicht bidirektional betreiben. :wall: Ich habs mit der INPOUT.DLL versucht, aber damit kann ich anscheint nur die Datenregister beschreiben. Das Kontrollregister bleibt unverändert. Mit der IO.DLL hat ja bei mir gar nichts funktioniert. gibt es da vielleicht noch ne andere Möglichkeit? |
Re: Problem mit paralleler Schnittstelle
Zitat:
Gruß oki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 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