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 Logitech G19 LCD DLL (https://www.delphipraxis.net/174264-logitech-g19-lcd-dll.html)

Delphi-Narr 12. Apr 2013 19:51

Logitech G19 LCD DLL
 
Hallo,

ich möchte gerne mit Delphi ein Applet für die Logitech G19 erstellen, welches zum Steuern von iTunes dient.
Die Steuerung von iTunes klappt weitestgehend gut, jetzt muss das Ganze nur noch über die G19 gesteuert werden können und
vorallem ein grafisches Output auf dem LCD erzeugen.
Das SDK von Logitech erzählt mir etwas von einer LogitechLCD.dll und einer LogitechLCD.h Datei, welche ich verwenden kann/soll/muss.
Beide Dateien liegen jetzt erstmal in meinem Projektordner.

Aus dem SDK:
Zitat:

LogiLcdInit
The LogiLcdInit () function makes necessary initializations. You must call this function prior to any other function in the library.
bool LogiLcdInit(wchar_t* friendlyName, int lcdType);
Ich hab mit TDump geprüft und die Funktion ist in der DLL vorhanden.
Also Deklaration habe ich
Delphi-Quellcode:
function LogiLCDInit(friendlyName:string; lcdType:integer):Boolean; external 'LogitechLCD.dll'; stdcall;

angegeben, das wird aber vermutlich nicht richtig sein?!
Auf jeden Fall erhalte ich den Fehler, die Deklaration unterscheide sich von vorheriger Deklaration.
Und was muss ich mit der LogitechLCD.h machen?

Viele Grüße!

turboPASCAL 12. Apr 2013 19:54

AW: Logitech G19 LCD DLL
 
Delphi-Quellcode:
function LogiLCDInit(friendlyName: PWChar; lcdType:integer):Bool; external 'LogitechLCD.dll'; stdcall;
...

Delphi-Quellcode:
if LogiLCDInit(PWChar(MeinDingsString), 0815) then ...

Delphi-Narr 12. Apr 2013 20:01

AW: Logitech G19 LCD DLL
 
Danke für die schnelle Reaktion,
leider erhalte ich aber immer noch den gleichen Fehler.

Nochmal zum Vergleich:
Delphi-Quellcode:
implementation
// LCD
function LogiLCDInit(friendlyName:PWChar; lcdType:integer):Boolean; external 'LogitechLCD.dll'; stdcall;
Zitat:

[DCC Fehler] Unit1.pas(65): E2037 Deklaration von 'LogiLCDInit' unterscheidet sich von vorheriger Deklaration
Edit:
Fehler gefunden (zumindest einen):
Delphi-Quellcode:
function LogiLCDInit(friendlyName:PWChar; lcdType:integer):Boolean; stdcall; external 'LogitechLCD.dll';

ist richtig.
Solange nun kein Funktionsaufruf eingetragen ist, kann ich das Ganze kompilieren.
Nun habe ich den Aufruf in ein OnClick eingefügt:
Delphi-Quellcode:

procedure TForm1.Button2Click(Sender: TObject);
begin
  if LogiLCDInit(('MeinTitel'), 2) then      
   begin
     // ...
   end
  else
    showmessage('Initialisierung fehlgeschlagen');

end;

Beim / bzw. direkt nach dem Kompilieren erhalte ich nun den Fehler, dass der Einsprungpunkt nicht gefunden wurde:
Zitat:

Der Prodedureinsprungpunkt "LogiLCDInit" wurde in der DLL "[...]\MeinProjekt.exe" nicht gefunden.
Viele Grüße

Christian Seehase 13. Apr 2013 10:18

AW: Logitech G19 LCD DLL
 
Moin,

wenn Du eine Funktion aus einer C-DLL heraus importieren willst, so musst Du die Schreibweise genau einhalten (LogiLcdInit ist nicht das gleiche wie LogiLCDInit) oder Du gibst bei der Deklaration noch den Namen an.

Wenn die Funktion in der DLL nun also LogiLcdInit heisst kannst Du sie so

Delphi-Quellcode:
function LogiLcdInit(friendlyName:PWChar; lcdType:integer):Boolean; stdcall; external 'LogitechLCD.dll';
deklarieren, oder so

Delphi-Quellcode:
function LogiLCDInit(friendlyName:PWChar; lcdType:integer):Boolean; stdcall; external 'LogitechLCD.dll' name 'LogiLcdInit;

Delphi-Narr 13. Apr 2013 12:28

AW: Logitech G19 LCD DLL
 
Vielen Dank, jetzt funktioniert es endlich :)
Noch eine generelle Frage:
Auf der G19 sind ja Tasten zum steuern der Applets vorhanden und es werden Ereignisse ausgelöst, wenn eine gedrückt wird.
Im Debugger sieht das so aus:
Zitat:

Debug-Ausgabe: **Client Received SoftButtonNotification = 00000100 for device -2147483646 Prozess iTunesG19.exe (6100)

Wie kann ich diese Events in Delphi abfangen? Ich möchte eigentlich keinen Timer darauf ansetzen, den Status der Tasten immer über die DLL Funktion abzufragen.

Viele Grüße!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz