Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Problem mit paralleler Schnittstelle (https://www.delphipraxis.net/118350-problem-mit-paralleler-schnittstelle.html)

mikro-ViiV 6. Aug 2008 09:20


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:
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.
Die DLL habe ich hier her. Sie befindet sich im selben Ordner, wie die Projektdateien.


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.

oki 6. Aug 2008 09:36

Re: Problem mit paralleler Schnittstelle
 
Teste doch mal mit der Funktion
Delphi-Quellcode:
function IsDriverInstalled : Boolean;
Gruß oki

mikro-ViiV 6. Aug 2008 10:40

Re: Problem mit paralleler Schnittstelle
 
Ich habe jetzt
Delphi-Quellcode:
function IsDriverInstalled : Boolean; stdcall; external 'io.dll';
hinzugefügt, sowie folgende Veränderung vorgenommen:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  if IsDriverInstalled=true then
  form1.Edit1.Text:=inttostr(Portin($378));
end;
Ich erhalte aber immer noch den selben Fehler. :(

oki 6. Aug 2008 10:59

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:
procedure TForm1.Button2Click(Sender: TObject);
var PortValue : Byte;
begin
  if IsDriverInstalled then begin
    PortValue := 0;
    PortValue := PortIn($378);
    Edit1.Text:=inttostr(PortValue);
  end;
end;
Dann noch die Fragen:
1. Welches Windows benutzt du?
2. Stimmt die Portadresse?

Gruß oki

PS:
probier auch mal PortWordIn.

mikro-ViiV 6. Aug 2008 11:23

Re: Problem mit paralleler Schnittstelle
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Probier mal dies und geh mit dem Debugger durch wo der Fehler kommt:
Leider erhalte ich auch hier die gleiche Fehlermeldung.

Zitat:

Dann noch die Fragen:
1. Welches Windows benutzt du?
2. Stimmt die Portadresse?
1. Windows XP (Mediacenter Edition)
2. Die Portadresse stimmt auf jeden Fall.

Zitat:

PS:
probier auch mal PortWordIn.
Mit PortWordIn ist es genau das selbe.

Hier noch mal die Fehlermeldung und ein Screenshot des Debuggers. Leider kann ich damit so gar nichts anfangen.

oki 6. Aug 2008 11:54

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

mikro-ViiV 6. Aug 2008 11:59

Re: Problem mit paralleler Schnittstelle
 
Zitat:

Ich such noch mal in meinen alten Projekten.
das währe echt suppi.

oki 6. Aug 2008 12:24

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

mikro-ViiV 6. Aug 2008 12:54

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.

oki 6. Aug 2008 13:03

Re: Problem mit paralleler Schnittstelle
 
Hi,

schau mal auf diesen Thread hier, vielleicht hilft dir das weiter. Imho sollte auch 'ne Menge zu diesem Thema im Forum zu finden sein.

Gruß oki

oki 6. Aug 2008 13:12

Re: Problem mit paralleler Schnittstelle
 
Hier noch mal ein Link aus dem Forum, wo das Handling beschrieben ist.
hier

Gruß oki

mikro-ViiV 6. Aug 2008 13:39

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?

oki 6. Aug 2008 13:47

Re: Problem mit paralleler Schnittstelle
 
Du musst auch die Threads richtig lesen. Steht alles da.
guggst du hier

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

oki 6. Aug 2008 13:48

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ß

mikro-ViiV 6. Aug 2008 14:27

Re: Problem mit paralleler Schnittstelle
 
Zitat:

Zu dem Thema Eingänge setzen gabs auch noch einen Link mit einer einfachen Testschaltung. Ich denke, die Eingänge sind Low-Aktiv.
Welcher Link?

Die Steuerregister und die Kontrollregister sind LOW-aktiv.

Und nach dem Schaltplan hier sollten die Datenleitungen Als Input High-aktiv. Das müsste stimmen, denn die Ausgänge sing ja auch High-aktiv. Wenn ich das Datenregister auf 255 setze und es dann auslese erhalte ich wieder 255. Muss also High-aktiv sein.

Zitat:

Benutze aber möglichst Schutzwiderstände für die Eingangsleitungen (330R) so das nicht schon auf deiner Schaltung erledigt ist (kenn ich ja nicht).
Schutzwiderstände hab ich zur Zeit noch keine (Versuchsaufbau), aber ich werde vielleicht nen 74HC244 nehmen. Das müsste ja auch gehen.

p80286 6. Aug 2008 15:47

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

mikro-ViiV 6. Aug 2008 17:14

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?

oki 7. Aug 2008 09:14

Re: Problem mit paralleler Schnittstelle
 
Zitat:

Zitat von mikro-ViiV
Mit der IO.DLL hat ja bei mir gar nichts funktioniert.

Auch nicht mit Verwendung des Offsets?

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