Seite 3 von 4
Re: Logitech G15 u. G19 EasyAccess
Verfasst: 25.02.2011 18:50
von Bisonte
dann schau dir die "G15_G19_Devel.pbi" nochmal genau an, da stehts drin...
Re: Logitech G15 u. G19 EasyAccess
Verfasst: 26.02.2011 05:40
von KeyKon
Um dich nich zu lang auf die Folter zu spannen, so stehts drin:
Man soll eine Prozedur in diesem Stil erstellen:
Code: Alles auswählen
Procedure OnSoftButtonsCallBack(device.l, dwButtons.l, *pContext)
Debug device
Debug dwButtons
Debug "----"
EndProcedure
Und dann die Verbindung zum Display wie folgt aufbauen:
Code: Alles auswählen
Logi\Connect(ProgramName, 0, 0, @OnSoftButtonsCallBack())
Und schon wirst du sehen, was bei den einzelnen Buttons für Debugs rauskommen, und wie du diese Daten verarbeiten kannst. Is eigentlich mit jedem anderen Callback zu vergleichen, du musst eben nur eine Prozedur mit entsprechenden Parametern erstellen...
(Steht übrigens alles so wunderbar erklärt im Code^^, ein bisschen probieren wirkt da wunder

Re: Logitech G15 u. G19 EasyAccess
Verfasst: 26.02.2011 12:07
von Andreas21
Das hatte ich gestern auch raus bekommen
Aber danke.
Ich hatte mir die G15_G19_Devel.pbi nicht angeschaut.
Kanns ja direct auf dem LCD anzeigen lassen.
Re: Logitech G15 u. G19 EasyAccess
Verfasst: 26.02.2011 17:49
von KeyKon
Naja, das steht übrigens auch wunderbar als Kommentar in der G15_G19.pbi bei dem Connect()-Befehlt dabei, da hatte ich es damals entdeckt^^
Re: Logitech G15 u. G19 EasyAccess
Verfasst: 30.03.2011 19:01
von lassma-asma
ganz doofe Frage :
Wenn ich den Code vom ersten Post ( dieses Include) ausführe bekomme ich
#LGLCD_NOTIFICATION_CLOSE_CONNECTION
Konstante bereits mit anderem Wert deklariert
obwohl sie im Code darüber ja gar nicht vorkommt ...
wie kann das sein und was kann ich machen um das Include laufen zu lassen ?
danke schonma
Re: Logitech G15 u. G19 EasyAccess
Verfasst: 30.03.2011 19:49
von HeX0R
Ich schätze, du hast noch die alte User-Lib von mir.
Da war auch eine Resident-Datei dabei (ich schätze mal G15.res, weiss es aber nicht mehr), die musst du löschen und PB neustarten.
Am besten auch gleich die alte Lib aus PureLibraries\UserLibraries mitlöschen.
Re: Logitech G15 u. G19 EasyAccess
Verfasst: 06.12.2013 05:13
von Bisonte
Ich wollte das ganze mal für das neue SDK (1.x) anpassen, das seit Treiberversion 8.x nur noch existiert, und stosse da auf ein paar Probleme.
1. Ich kann die .Lib Datei nicht nutzen, git laufend POLINK Errors (undefined symbol), aber da nehm ich wohl die falsche Bezeichnung...
dann schwenke ich also zur DLL Nutzung.
Wenn ich die DLL per Openlibrary() aufrufe und die Funktionen per Prototype initialisiere, klappt alles, allerdings nur, wenn man die Funktionen
NICHT in einer Prozedur aufruft !
Also wenn ich z.B. das LogiLcdInit() in einer Prozedure benutze gibt es nen IMA.
Was mache ich da falsch ?
Kurz angerissen :
Code: Alles auswählen
#LOGI_LCD_TYPE_MONO = $00000001
#LOGI_LCD_TYPE_COLOR = $00000002
Lib = OpenLibrary(#PB_Any, "x86/LogitechLcd.dll")
Prototype.b _LogiLcdInit(friendlyName.p-Unicode, lcdType.l);
Prototype.b _LogiLcdIsConnected(lcdType)
; Prototype.b
If lib
Global LogiLcdInit._LogiLcdInit = GetFunction(Lib, "LogiLcdInit")
Global LogiLcdIsConnected._LogiLcdIsConnected = GetFunction(Lib, "LogiLcdIsConnected")
EndIf
Procedure LCDInit2(AppName.s, lcdType)
If LogiLcdInit
ProcedureReturn LogiLcdInit(AppName, lcdType)
EndIf
EndProcedure
If LCDInit2("Hello", #LOGI_LCD_TYPE_COLOR) ; IMA
; If LogiLcdInit("Hello", #LOGI_LCD_TYPE_COLOR) ; <-- Kein IMA,
If LogiLcdIsConnected
Debug LogiLcdIsConnected(#LOGI_LCD_TYPE_COLOR)
EndIf
EndIf
Ist hierbei egal, ob G15 oder G19 angebaut ist (also der LCDType)
Weiss jemand Rat ?
Re: Logitech G15 u. G19 EasyAccess
Verfasst: 08.12.2013 18:09
von SoS
Ich wollte schon fragen wo Du die dll her hast, aber nach einem Update per Hand
habe ich die nun auch.(da sieht man mal wieder wie gut automatische Udates laufen..

)
Code: Alles auswählen
#LOGI_LCD_TYPE_MONO = $00000001
#LOGI_LCD_TYPE_COLOR = $00000002
Lib = OpenLibrary(#PB_Any, "x64/logitechLcd.dll")
Debug Lib
Prototype.b _LogiLcdInit(friendlyName.p-Unicode, lcdType.l);
Prototype.b _LogiLcdIsConnected(lcdType)
; Prototype.b
If lib
Global LogiLcdInit._LogiLcdInit = GetFunction(Lib, "LogiLcdInit")
Global LogiLcdIsConnected._LogiLcdIsConnected = GetFunction(Lib, "LogiLcdIsConnected")
EndIf
Procedure LCDInit2(AppName.s, lcdType)
If LogiLcdInit
ProcedureReturn LogiLcdInit(AppName, lcdType)
EndIf
EndProcedure
If LCDInit2("Hello", #LOGI_LCD_TYPE_COLOR) ; IMA
; If LogiLcdInit("Hello", #LOGI_LCD_TYPE_COLOR) ; <-- Kein IMA,
If LogiLcdIsConnected
Debug LogiLcdIsConnected(#LOGI_LCD_TYPE_COLOR)
EndIf
EndIf
Um sicher zu sein das die dll auch geladen ist habe ich ein "Debug Lib" eingefügt.
Der Debugoutput
2497360
1
Hier gibts keinen IMA,liegts an der 64bit Version ?
Edit
Mit der 32bit dll unter Windows7 64 bit bekomme ich auch den IMA
Re: Logitech G15 u. G19 EasyAccess
Verfasst: 09.12.2013 00:45
von Bisonte
Nunja ich hab mit PBx86 angenommen, auch die x86 DLL nutzen zu müssen, egal ob es auf x64 Win läuft oder nicht.
Aber jetzt wo du das erwähnst klingt es wohl logisch, weil ja nur ein Treiber installiert wird.... hmmm...
Edit:
1. PBx86 und x86.dll auf Win7 x64 = IMA
2. PBx86 und x64.dll = IMA
3. PBx64 und x86.dll = Sinnfrei...
4. PBx64 und x64.dll = ok
Wobei ich das 1. nicht ganz so verstehe, da es nun mit anderen DLL's auch so funktioniert.
Unter anderem gibt es ja 32Bit-G19 Apps die auch auf Win7 x64 problemlos laufen...
Also müsste ich mir dann ein 32 Bit Windows installieren und darauf die Apps basteln ? Klingt merkwürdig.
Re: Logitech G15 u. G19 EasyAccess
Verfasst: 09.12.2013 16:59
von Chimorin
Ähm, ich weiß nicht, ob das dazu passt, aber was ich festgestellt habe ist, dass eine mit PB kompilierte DLL (x86) NUR unter x86 funktioniert. Genauso verhält es sich mit den x64-DLLs. Weiß ja nicht, ich habe das auch schon bei einigen anderen DLLs bemerkt, ich glaube das ist einfach so.
Von dem her wäre:
2. PBx86 und x64.dll = IMA ;Doppelt Sinnfrei, warum sollte x86 mit x64 Sachen umgehen können? + Nr.3
3. PBx64 und x86.dll = Sinnfrei... ;An sich logisch, da x64 mit x86 umgehen kann, ABER eben nicht die richtige DLL ist.
Zusatz:
Mit unserer Engine3D.dll ist es genauso. x64 Programm braucht x64 DLL und x86 braucht x86 DLL. Anders kann die Umgebung nicht initialisiert werden.