Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi USB-Schnittstelle K8055 in Delphi ansteuern? (https://www.delphipraxis.net/79439-usb-schnittstelle-k8055-delphi-ansteuern.html)

TH3LL 22. Okt 2006 19:24


USB-Schnittstelle K8055 in Delphi ansteuern?
 
Hallo,
Ich habe eine "K8055 USB Interface Board" von Velleman erhalten und versuche, diese in Delphi anzusteuern.
Das Usermanual gibt ein Beispielprogramm (http://www.velleman.be/downloads/0/u...8055_dll_d.pdf), welches eigentlich funktionieren sollte. Aber auf der Seite von Velleman existiert nur die DLL "K8055D.dll" und die "Third party Visual #csharp dotNET driver for K8055".

Nun habe ich versucht die Befehle in Delphi entsprechend des Handbuchs einfach aufzurufen:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, STdCtrls, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
     //usw...
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function Opendevice(CardAdress:Longint):Longint; stdcall; external 'K8055d.dll';
procedure CloseDevice; stdcall; external 'K8055d.dll';

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   CloseDevice;
end;

procedure TForm1.Button1Click(Sender: TObject);
var h:longint;
begin
    //Zugriff auf die einzige angeschlossene Karte
    h:=OpenDevice(0);
    case h of
        0..3: label1.caption:='Karte '+inttostr(h)+' angeschlossen';
          -1: label1.Caption:='Karte 0 nicht gefunden';
        end;
end;

end.
Allerdings bricht das Progamm schon bei dem ersten Druck auf F7, also beim "begin" der Projektdatei ab..
Kann es sein, dass die DLL nicht gefunden wurde? Wenn ja, wo muss ich diese unterbringen?

Ich habe leider keine Ahnung, wie DLLs überhaupt funktionieren. :?
Ich habe Stunden nach etwas hilfreichem im Netz gesucht, aber ich weiss noch nicht mal genau warum es bei mir nicht funktioniert ;)

mkinzler 22. Okt 2006 19:51

Re: USB-Schnittstelle K8055 in Delphi ansteuern?
 
Die Dll muß im Systempfad liegen. d.H in einem Pfad der in der variable PATH eingetragen ist oder im Verzeichnis der Anwendung.

TH3LL 22. Okt 2006 20:07

Re: USB-Schnittstelle K8055 in Delphi ansteuern?
 
Aha.. ok.. Ich weiss zwar nicht, wo diese Variable PATH zu finden ist, aber wenn die DLL im Ordner der Projektdatei liegt tut sich immerhin mal was.
Das Programm bricht zwar noch immmer an der gleichen Stelle ab, aber wenn ich eine EXE erstelle und diese zu starten versuche erhalte ich immer eine Fehlermeldung mit der man was anfangen kann:
"Der Prozedureinzugspunkt 'Opendevice' wurde in der DLL 'K8055d.dll' nicht gefunden."

Soll heissen die DLL ist nicht korrekt?
Wie kann ich die DLL einlesen?
Wenn ich versuche die DLL mit Delphi zu öffnen gibts eine Fehlermeldung "Error loading type Library"...

mkinzler 22. Okt 2006 20:21

Re: USB-Schnittstelle K8055 in Delphi ansteuern?
 
Delphi-Quellcode:
function OpenDevice(CardAdress:Longint):Longint; stdcall; external 'K8055d.dll' name 'OpenDevice';
procedure CloseDevice; stdcall; external 'K8055d.dll' name 'CloseDevice';

TH3LL 22. Okt 2006 20:33

Re: USB-Schnittstelle K8055 in Delphi ansteuern?
 
Wie soll man auch mit Dingen experimentieren, die einem von einem mitgelieferten Beispielprogramm nicht richtig vorgestellt werden ;)

Vielen dank!
Es funktioniert! Die Karte wurde gefunden :D

mkinzler 22. Okt 2006 20:38

Re: USB-Schnittstelle K8055 in Delphi ansteuern?
 
Möglicherweise hast du dich nur beim Eingeben vertippt 'Opendevice' satt 'OpenDevice'. Im Gegensatz zu Delphi sind nämlich Dll-Funktionen case-sensitiv, da es sich ja um c-Funktionen handelt. die Angabe mit name ist eigentlich optional, ich verwede dies aber zur Sicherheit trotzdem immer.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14: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 by Thomas Breitkreuz