ERLEDIGT
NEIN
NEIN
ANTWORTEN
1
1
ZUGRIFFE
2485
2485
EMPFEHLEN
-
21.02.09 17:25 #1
- Registriert seit
- Feb 2009
- Beiträge
- 1
Hallo!
Ich gehe davon aus, dass hier schon einige User bezüglich der Einbindung von DLLs in Delphi gefragt haben, aber ich bin seit über 2 Stunden am Ausprobieren und das Internet am Durchforsten, weshalb ich mich jetzt an euch wende:
Ich bin fast Neuling in Delphi, nutze Delphi 2005 und habe bisher noch nie etwas anderes gemacht, als einfache VCL-Formularanwendungen im Rahmen meines Informatikunterrichts in der Schule zu schreiben.
Allerdings bin ich begeisterter Elektroniker und habe gerade anhand einer Anleitung aus dem Internet mein erstes USB-Gerät gebaut. Der Anleitung lag eine DLL bei, mit dessen Hilfe man die Hardware ansteuern kann. Mit DLLs habe ich bisher nie bewusst gearbeitet, und bin entsprechend hilflos.
Folgende Info-Datei beschreibt, wie man die DLL verwenden soll:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
usbdmx.dll - Schnittstelle: ----------- Funktionen: ----------- GetAllConnectedInterfaces: TSERIALLIST; GetAllOpenedInterfaces: TSERIALLIST; SetInterfaceMode(Serial: TSERIAL; Mode: byte): DWORD; OpenLink(Serial: TSERIAL; DMXOutArray: PDMXArray; DMXInArray: PDMXArray): DWORD; CloseLink(Serial: TSERIAL): DWORD; CloseAllLinks: DWORD; RegisterInterfaceChangeNotification(Proc: THOSTDEVICECHANGEPROC): DWORD; UnregisterInterfaceChangeNotification: DWORD; RegisterInputChangeNotification(Proc: THOSTINPUTCHANGEPROC): DWORD; UnregisterInputChangeNotification: DWORD; GetDeviceVersion(Serial: TSERIAL): DWORD; SetInterfaceAdvTxConfig(Serial: TSERIAL; Control: Byte; Breaktime: word; Marktime: word; Interbytetime: word; Interframetime: word; Channelcount: word; Startbyte: byte): DWORD; stdcall; // >= v1.1 StoreInterfaceAdvTxConfig(Serial: TSERIAL): DWORD; stdcall; // >= v1.1 RegisterInputChangeBlockNotification(Proc: THOSTINPUTCHANGEPROCBLOCK): DWORD; // >= v1.1 UnregisterInputChangeBlockNotification: DWORD; // >= v1.1 ------------------------------------- Object-Pascal Deklarationsvorschläge: ------------------------------------- function GetAllConnectedInterfaces: TSERIALLIST; stdcall external 'usbdmx.dll'; function GetAllOpenedInterfaces: TSERIALLIST; stdcall external 'usbdmx.dll'; function SetInterfaceMode(Serial: TSERIAL; Mode: byte): DWORD; stdcall external 'usbdmx.dll'; function OpenLink(Serial: TSERIAL; DMXOutArray: PDMXArray; DMXInArray: PDMXArray): DWORD; stdcall external 'usbdmx.dll'; function CloseLink(Serial: TSERIAL): DWORD; stdcall external 'usbdmx.dll'; function CloseAllLinks: DWORD; stdcall external 'usbdmx.dll'; function RegisterInterfaceChangeNotification(Proc: THOSTDEVICECHANGEPROC): DWORD; stdcall external 'usbdmx.dll'; function UnregisterInterfaceChangeNotification: DWORD; stdcall external 'usbdmx.dll'; function RegisterInputChangeNotification(Proc: THOSTDEVICECHANGEPROC): DWORD; stdcall external 'usbdmx.dll'; function UnregisterInputChangeNotification: DWORD; stdcall external 'usbdmx.dll'; function GetDeviceVersion(Serial: TSERIAL): DWORD; stdcall external 'usbdmx.dll'; function SetInterfaceAdvTxConfig(Serial: TSERIAL; Control: Byte; Breaktime: word; Marktime: word; Interbytetime: word; Interframetime: word; Channelcount: word; Startbyte: byte): DWORD; stdcall; stdcall external 'usbdmx.dll'; function StoreInterfaceAdvTxConfig(Serial: TSERIAL): DWORD; stdcall; stdcall external 'usbdmx.dll'; function RegisterInputChangeBlockNotification(Proc: THOSTINPUTCHANGEPROCBLOCK): DWORD; stdcall external 'usbdmx.dll'; function UnregisterInputChangeBlockNotification: DWORD; stdcall external 'usbdmx.dll'; ------ Werte: ------ Mode: 0 - Standby; 1 - DMX In -> DMX Out; 2 - PC Out -> DMX Out; 3 - DMX In + PC Out -> DMX Out; 4 - DMX In -> PC In; 5 - DMX In -> DMX Out & DMX In -> PC In; 6 - PC Out -> DMX Out & DMX In -> PC In; 7 - DMX In + PC Out -> DMX Out & DMX In -> PC In; Version: 0x0100 = v1.00, 0x0110 = v1.10 usw. ConfigControl: Bit 0: Enable Interbytedelay, Bit 1: Enable Interframedelay, Default = 0 Breaktime: Zeit des Resetpulses, 5,333us Schrittweite, Default = 17 Marktime: Zeit zwischen Resetpuls und Startbyte, 0.666us Schrittweite, Default = 13 Interbytetime: Zeit zwischen zwei Datenbytes (8N2), 0.666us Schrittweite, Default = 0 Interframetime: Zeit zwischen dem letzten Datenbyte und dem Resetpuls, 21,333us Schrittweite, Default = 0 Channelcount: Default = 512 Startbyte: Default = 0 ------------------------------ Object-Pascal Typenvorschläge: ------------------------------ PDMXArray = ^TDMXArray; TDMXArray = array[0..511] of byte; TSERIAL = array[0..15] of Char; TSERIALLIST = array[0..31] of TSERIAL; THOSTDEVICECHANGEPROC = procedure; stdcall; THOSTINPUTCHANGEPROC = procedure; stdcall; THOSTINPUTCHANGEPROCBLOCK = procedure(blocknumber: byte); stdcall; // >= v1.1 ------------------------ Hilfsroutinenvorschläge: ------------------------ function SerialToSerialstring(Serial: TSERIAL): string; var i: byte; begin Result := ''; for i := 0 to 15 do Result := Result + Serial[i]; end; function SerialstringToSerial(Serialstr: string): TSERIAL; var i: byte; len: byte; begin len := length(Serialstr); if len > 16 then len := 16; for i := 0 to 15 do Result[i] := '0'; for i := 1 to len do Result[i + 15 - len] := Serialstr[i]; end;
Ich hab schon alles Mögliche rumprobiert, konnte aber aufgrund meiner mangelnden Vorkenntnisse eigentlich nur raten.
Daher wäre meine Bitte: Wenn sich irgendjemand die Zeit nehmen würde, mir eine Schritt-für-Schritt-Anleitung zu schicken oder besser noch: ein gezipptes Delphi-Projekt, in dem die in der DLL enthaltenen Befehle schon "integriert" sind, wäre ich sehr dankbar...
Im Anhang sind nochmal die oben bereits eingefügte "Anleitung" und das DLL-File.
Ein riesiges Dankeschön schonmal im Voraus und ich freue mich über jede Hilfe,
mit freundlichen Grüßen
der Delphi-(fast)-Newbie (nutze WinXP SP3)
kampfnudel@quantentunnel.de
-
06.04.09 19:33 #2
Hallo,
also, deine Aufgaben wird dir hier keine erledigen, helfen werden wir aber gerne!
Im Endeffekt hast du ja schon alles was du brauchst!! Die in deiner Textdatei angebenen "Object-Pascal Deklarationsvorschläge" sind genau das was du brauchst!!
Einfaches vorgehen:
- Erstell dir eine neue Klasse (am besten in einer neuen Unit)
- Kopiere die Funktions-Prototypen (das "function..."-Zeug) in den public-Bereich der neuen Klasse.
- Kopier die anderen Sachen (Typdefinitonen usw. oberhalb der Klasse in die Unit).
- Kopier die Hilfsmethode unter die Klasse.
- Die "Werte" würden sich durchaus als Konstanten eignen. Aber hier kannste schaffen wie du willst..
Damit das klappt muss die DLL im selben Verzeichnis wie die spätere Exe-Datei liegen.
Hoffe das hilft!
Gruß, KangaxxAhh, the Internet! Where men are men, women are men and little girls are FBI agents.
Ähnliche Themen
-
Von einer WebCam das Video einbinden.
Von FoolMoon im Forum Videoschnitt, Videotechnik & -produktionAntworten: 4Letzter Beitrag: 07.09.09, 19:20 -
Einbinden einer css-Datei
Von peter333 im Forum CSSAntworten: 3Letzter Beitrag: 29.12.06, 23:31 -
php-Quelltext aus einer Stringvariable einbinden
Von Franky_B52 im Forum PHPAntworten: 2Letzter Beitrag: 29.10.06, 22:52 -
Rss einbinden in einer Tabelle
Von SoltanDemoriel im Forum PHPAntworten: 2Letzter Beitrag: 25.06.04, 17:16 -
Problem: das einbinden einer Klasse
Von xyzPainter im Forum Borland CBuilder und VCLAntworten: 1Letzter Beitrag: 23.01.04, 23:11





Zitieren
Login





