1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. ZwergleAUT

Beiträge von ZwergleAUT

  • LogiLcdColorSetBackground

    • ZwergleAUT
    • 20. Dezember 2015 um 17:02

    Hallo CentuCore.

    Danke für deinen Tipp mit bisschen Rumprobieren habe ich es nun hinbekommen musste noch Width und Height umdrehen das zuerst Height und dann Width in der Schleife kommt da es sonst die Farben zusammengewürfelt hatte...

    Ob Mono funktioniert kann ich leider nicht sagen da ich keine Tastatur zum Testen habe.

    Spoiler anzeigen
    AutoIt
    ; ###################################################################################################################################
    ; Beschreibung .................:	_LogitechGaming_LCD_SetBackground
    ; ###################################################################################################################################
    ; Parameters ...................:	$LCDSetBackground_LCDOpen		=	[REQ]	Rückgabewert von _LogitechGaming_LCD_Open.
    ;									$LCDSetBackground_BitmapFile	=	[REQ]	Pfad zu der Bilddatei.
    ;									$LCDSetBackground_LCDType		=	[OPT]	Der Typ des Displays ($_LGLCD_TypeColor | $_LGLCD_TypeMono).
    ; ###################################################################################################################################
    ; Rückgabewerte ................:	1		=	Der Befehl zum ändern der Hintergrundfarbe wurde erfolgreich ausgeführt.
    ;									0		=	Der Befehl zum ändern der Hintergrundfarbe wurde nicht erfolgreich ausgeführt.
    ;									-1		=	Die dll wurde bereits geschlossen oder nicht geladen.
    ;									-2		=	Es wurde kein gültiger LCD Display Type angegeben.
    ;									-3		=	Das Bild konnte nicht in GDIPlus geladen werden.
    ;									-4		=	Die Dimensionen des Bildes stimmen nicht.
    ; ###################################################################################################################################
    
    
    Func _LogitechGaming_LCD_SetBackground ($LCDSetBackground_LCDOpen, $LCDSetBackground_BitmapFile, $LCDSetBackground_LCDType = $_LGLCD_TypeColor)
    	If $LCDSetBackground_LCDOpen = "" Or $LCDSetBackground_LCDOpen = "-1" Or $LCDSetBackground_LCDOpen = "-2" Then Return "-1"
    	If $LCDSetBackground_LCDType = $_LGLCD_TypeColor Then
    		_GDIPlus_Startup ()
    		$LCDSetBackground_GDIPBCFF = _GDIPlus_BitmapCreateFromFile ($LCDSetBackground_BitmapFile)
    		If $LCDSetBackground_GDIPBCFF = 0 Then Return "-3"
    		$LCDSetBackground_GDIPIGW = _GDIPlus_ImageGetWidth ($LCDSetBackground_GDIPBCFF)
    		$LCDSetBackground_GDIPIGH = _GDIPlus_ImageGetHeight ($LCDSetBackground_GDIPBCFF)
    		If Not ($LCDSetBackground_GDIPIGW = $_LGLCD_TypeColorWidth) Or Not ($LCDSetBackground_GDIPIGH = $_LGLCD_TypeColorHeight) Then Return "-4"
    		$LCDSetBackground_Number = 1
    		$LCDSetBackground_DllStructCreate = DllStructCreate ('DWORD pixels[' & $_LGLCD_TypeColorWidth * $_LGLCD_TypeColorHeight & ']')
    		For $LCDSetBackground_ForNextH = 1 To $_LGLCD_TypeColorHeight Step 1
    			For $LCDSetBackground_ForNextW = 1 To $_LGLCD_TypeColorWidth Step 1
    				DllStructSetData ($LCDSetBackground_DllStructCreate, "pixels", _GDIPlus_BitmapGetPixel ($LCDSetBackground_GDIPBCFF, $LCDSetBackground_ForNextW, $LCDSetBackground_ForNextH), $LCDSetBackground_Number)
    				$LCDSetBackground_Number += 1
    			Next
    		Next
    		$LCDSetBackground_DllCall = DllCall ($LCDSetBackground_LCDOpen, "bool:cdecl", "LogiLcdColorSetBackground", "STRUCT*", DllStructGetPtr ($LCDSetBackground_DllStructCreate, "pixels"))
    		$LCDSetBackground_DllStructCreate = ""
    		_GDIPlus_Shutdown ()
    	ElseIf $LCDSetBackground_LCDType = $_LGLCD_TypeMono Then
    		_GDIPlus_Startup ()
    		$LCDSetBackground_GDIPBCFF = _GDIPlus_BitmapCreateFromFile ($LCDSetBackground_BitmapFile)
    		If $LCDSetBackground_GDIPBCFF = 0 Then Return "-3"
    		$LCDSetBackground_GDIPIGW = _GDIPlus_ImageGetWidth ($LCDSetBackground_GDIPBCFF)
    		$LCDSetBackground_GDIPIGH = _GDIPlus_ImageGetHeight ($LCDSetBackground_GDIPBCFF)
    		If Not ($LCDSetBackground_GDIPIGW = $_LGLCD_TypeMonoWidth) Or Not ($LCDSetBackground_GDIPIGH = $_LGLCD_TypeMonoHeight) Then Return "-4"
    		$LCDSetBackground_Number = 1
    		$LCDSetBackground_DllStructCreate = DllStructCreate ('DWORD pixels[' & $LCDSetBackground_GDIPIGH * $_LGLCD_TypeMonoHeight & ']')
    		For $LCDSetBackground_ForNextH = 1 To $_LGLCD_TypeMonoHeight Step 1
    			For $LCDSetBackground_ForNextW = 1 To $LCDSetBackground_GDIPIGH Step 1
    				DllStructSetData ($LCDSetBackground_DllStructCreate, "pixels", _GDIPlus_BitmapGetPixel ($LCDSetBackground_GDIPBCFF, $LCDSetBackground_ForNextW, $LCDSetBackground_ForNextH), $LCDSetBackground_Number)
    				$LCDSetBackground_Number += 1
    			Next
    		Next
    		$LCDSetBackground_DllCall = DllCall ($LCDSetBackground_LCDOpen, "bool:cdecl", "LogiLcdMonoSetBackground", "STRUCT*", DllStructGetPtr ($LCDSetBackground_DllStructCreate, "pixels"))
    		$LCDSetBackground_DllStructCreate = ""
    		_GDIPlus_Shutdown ()
    	Else
    		Return "-2"
    	EndIf
    	If IsArray ($LCDSetBackground_DllCall) Then Return $LCDSetBackground_DllCall[0]
    	Return $LCDSetBackground_DllCall
    EndFunc
    Alles anzeigen


    Ich sage mal Danke für die schnelle und nette Hilfe ( @CentuCore)

  • LogiLcdColorSetBackground

    • ZwergleAUT
    • 20. Dezember 2015 um 13:06

    Guten Morgen.

    Macht doch nichts hätte ja sein können.


    Die Farben Auslesen und übernehmen funktioniert jedoch das LCD hat ein komplett anderes Bild.
    Bei Alpha kommt der Return -1, sollte da nicht auch 0 - 255 als Return kommen wie bei RGB?

    Habe es mit jpg und mit bmp wie in der Hilfe versucht jedoch beides erstellt das selbe LCD Bild.


    Habe gerade gesehen das von Gestern noch eine Änderung beim DllCall Aufruf war.

    Spoiler anzeigen
    AutoIt
    DllCall ($LCDOpen, "bool:cdecl", "LogiLcdColorSetBackground", "BYTE", DllStructGetPtr ($DllStructCreate))

    bei BYTE war PTR wann ich da BYTE stehen habe stürzt mir das Script ab mit Folgendem Consolen Eintrag:

    Spoiler anzeigen

    --> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
    !>12:42:19 AutoIt3.exe ended.rc:-1073741819
    +>12:42:19 AutoIt3Wrapper Finished.
    >Exit code: 3221225477 Time: 3.147

    Mit STR und WSTR bekomme ich wieder ein anderes Bild auf dem LCD angezeigt alles schwarz nur in der Mitte farbige Punkte.

    Mit PTR bekomme ich das Bild wo angehängt wurde <IMAG0249[1].jpg>.

    Verwende ich STRUCT bekomme ich als Return beim Bild ändern 0 (False) und das LCD bleibt schwarz.


    Spoiler anzeigen
    AutoIt
    Func _LogitechGaming_LCD_SetBackground ($LCDOpen, $BitmapFile, $LCDType = $_LGLCD_TypeColor)
    If $LCDOpen = "" Or $LCDOpen = "-1" Or $LCDOpen = "-2" Then Return "-1"
    If $LCDType = $_LGLCD_TypeColor Then
    	_GDIPlus_Startup ()
    	$GDIPBCFF = _GDIPlus_BitmapCreateFromFile ($BitmapFile)
    	$GDIPIGW = _GDIPlus_ImageGetWidth ($GDIPBCFF)
    	$GDIPIGH = _GDIPlus_ImageGetHeight ($GDIPBCFF)
    	If Not ($GDIPIGW = $_LGLCD_TypeColorWidth) Or Not ($GDIPIGH = $_LGLCD_TypeColorHeight) Then Return "-4"
    	$DllStructCreate = DllStructCreate ('dword Format;' & 'byte Pixels[' & $_LGLCD_TypeColorWidth * $_LGLCD_TypeColorHeight * 4 & '];')
    	$Number = 0
    	For $LCDSetBackground_ForNextW = 0 To $LCDSetBackground_GDIPIGW - 1 Step 1
    		For $LCDSetBackground_ForNextH = 0 To $LCDSetBackground_GDIPIGH - 1 Step 1
    			$LCDSetBackground_GDIPBLB = _GDIPlus_BitmapGetPixel ($LCDSetBackground_GDIPBCFF, $LCDSetBackground_ForNextW, $LCDSetBackground_ForNextH)
    			DllStructSetData ($LCDSetBackground_DllStructCreate, 'Pixels', BitShift (BitAnd ($LCDSetBackground_GDIPBLB, 0x000000ff), 0), $LCDSetBackground_Number)
    			DllStructSetData ($LCDSetBackground_DllStructCreate, 'Pixels', BitShift (BitAnd ($LCDSetBackground_GDIPBLB, 0x0000ff00), 8), $LCDSetBackground_Number + 1)
    			DllStructSetData ($LCDSetBackground_DllStructCreate, 'Pixels', BitShift (BitAnd ($LCDSetBackground_GDIPBLB, 0x00ff0000), 16), $LCDSetBackground_Number + 2)
    			DllStructSetData ($LCDSetBackground_DllStructCreate, 'Pixels', BitShift (BitAnd ($LCDSetBackground_GDIPBLB, 0xff000000), 24), $LCDSetBackground_Number + 3)
    			$LCDSetBackground_Number += 4
    		Next
    	Next
    	$DllCall = DllCall ($LCDOpen, "bool:cdecl", "LogiLcdColorSetBackground", "BYTE", DllStructGetPtr ($DllStructCreate))
    	_GDIPlus_Shutdown ()
    ElseIf $LCDType = $_LGLCD_TypeMono Then
    Else
    	Return "-2"
    EndIf
    If IsArray ($DllCall) Then Return $DllCall[0]
    Return $DllCall
    EndFunc
    Alles anzeigen
    Spoiler anzeigen

    So sollte das LCD aussehen:
    So sieht das LCD aus: IMAG0249[1].jpg

  • LogiLcdColorSetBackground

    • ZwergleAUT
    • 20. Dezember 2015 um 03:28
    Überarbeitet (Hat sich Erledigt)


    Hallo.

    Schön wäre der Fehler ;)

    Rufe die Funcs in folgender Reihenfolge auf jedoch wird der Hintergrund nicht geändert.
    Title und Text schreiben ist kein Problem also Initialisieren, Update, ... funktioniert.


    Spoiler anzeigen
    AutoIt: Aufruf-Reihenfolge
    _LogitechGaming_LCD_Open
    _LogitechGaming_LCD_Initialize
    _LogitechGaming_LCD_SetBackground
    _LogitechGaming_LCD_Update
    Code
    Func _LogitechGaming_LCD_Open ($LCDOpen_File = @ScriptDir & "\dll\x86\LogitechLcdEnginesWrapper.dll")
    	If FileExists ($LCDOpen_File) = 0 Then Return "-1"
    	$LCDOpen_DllOpen = DllOpen ($LCDOpen_File)
    	If $LCDOpen_DllOpen = -1 Then Return "-2"
    	Return $LCDOpen_DllOpen
    EndFunc
    AutoIt: _LogitechGaming_LCD_Initialize
    Func _LogitechGaming_LCD_Initialize ($LCDInitialize_LCDOpen, $LCDInitialize_AppletName, $LCDInitialize_LCDType = $_LGLCD_TypeColor)
    	If $LCDInitialize_LCDOpen = "" Or $LCDInitialize_LCDOpen = "-1" Or $LCDInitialize_LCDOpen = "-2" Then Return "-1"
    	$LCDInitialize_DllCall = DllCall ($LCDInitialize_LCDOpen, "bool:cdecl", "LogiLcdInit", "wstr", $LCDInitialize_AppletName, "int", $LCDInitialize_LCDType)
    	If IsArray ($LCDInitialize_DllCall) = 1 Then Return $LCDInitialize_DllCall[0]
    	Return $LCDInitialize_DllCall
    EndFunc
    AutoIt: _LogitechGaming_LCD_Update
    Func _LogitechGaming_LCD_Update ($LCDUpdate_LCDOpen)
    	If $LCDUpdate_LCDOpen = "" Or $LCDUpdate_LCDOpen = "-1" Or $LCDUpdate_LCDOpen = "-2" Then Return "-1"
    	$LCDInitialize_DllCall = DllCall ($LCDUpdate_LCDOpen, "int:cdecl", "LogiLcdUpdate")
    	If IsArray ($LCDInitialize_DllCall) Then Return $LCDInitialize_DllCall[0]
    	Return $LCDInitialize_DllCall
    EndFunc

    EDIT ----------------------------------

    Ok habe es nun hinbekommen, bei AutoIt wird eine DllStruct benötigt...
    Jedoch hänge ich hier gerade an den nächsten Problemen...

    1.) Ich Lade ein Bild mit GDIPlus in den Speicher und Prüfe die Width und Height auf die Pixel Länge/Höhe. (-> Funktioniert)
    2.) Danach lese ich die ganzen Farben aus und wollte diese in BGRA umwandeln jedoch funktioniert das nicht so wie ich wollte nun bekomme ich nur ein Weißes Display statt Bunt wie das Bild.
    3.) Dieser Vorgang ist ebenfalls SEHR langsam da er die Farben erst ein ein String Speichert und dann nochmals durchgeht... (eventuell liegt es am Alk das ich gerade nicht auf eine schnellere Lösung komme ^^)
    4.) Wie kann man am einfachsten ein Bild Pixel für Pixel <Blue, Green, Red, "Alpha Channel"> einzeln auslesen damit ich diese in die DllStruct übernehmen kann?

    Spoiler anzeigen
    AutoIt
    $LCDSetBackground_GDIPBCFF = _GDIPlus_BitmapCreateFromFile ($LCDSetBackground_BitmapFile)
    	$LCDSetBackground_GDIPIGW = _GDIPlus_ImageGetWidth ($LCDSetBackground_GDIPBCFF)
    	$LCDSetBackground_GDIPIGH = _GDIPlus_ImageGetHeight ($LCDSetBackground_GDIPBCFF)
    	If Not ($LCDSetBackground_GDIPIGW = $_LGLCD_TypeColorWidth) Or Not ($LCDSetBackground_GDIPIGH = $_LGLCD_TypeColorHeight) Then Return "-4"
    	$LCDSetBackground_String = ""
    	For $LCDSetBackground_ForNextW = 0 To $LCDSetBackground_GDIPIGW - 1 Step 1
    		For $LCDSetBackground_ForNextH = 0 To $LCDSetBackground_GDIPIGH - 1 Step 1
    			$LCDSetBackground_String = $LCDSetBackground_String & "|" & _GDIPlus_BitmapGetPixel ($LCDSetBackground_GDIPBCFF, $LCDSetBackground_ForNextW, $LCDSetBackground_ForNextH)
    		Next
    	Next
    	$LCDSetBackground_StringSplit = StringSplit ($LCDSetBackground_String, "|")
    	If $LCDSetBackground_StringSplit[0] = 1 Then Return "-5"
    	$LCDSetBackground_DllStructCreate = DllStructCreate ('dword Format;' & 'byte pixels[' & $_LGLCD_TypeColorWidth * $_LGLCD_TypeColorHeight * 4 & '];')
    	For $LCDSetBackground_ForNext = 1 To $LCDSetBackground_StringSplit[0] Step 1
    		DllStructSetData ($LCDSetBackground_DllStructCreate, 'pixels', _ColorGetBlue ($LCDSetBackground_StringSplit[$LCDSetBackground_ForNext]), ($LCDSetBackground_ForNext * 4) - 4)
    		DllStructSetData ($LCDSetBackground_DllStructCreate, 'pixels', _ColorGetGreen ($LCDSetBackground_StringSplit[$LCDSetBackground_ForNext]), ($LCDSetBackground_ForNext * 4) - 3)
    		DllStructSetData ($LCDSetBackground_DllStructCreate, 'pixels', _ColorGetRed ($LCDSetBackground_StringSplit[$LCDSetBackground_ForNext]), ($LCDSetBackground_ForNext * 4) - 2)
    		DllStructSetData ($LCDSetBackground_DllStructCreate, 'pixels', 255, ($LCDSetBackground_ForNext * 4) - 1)
    	Next
    Alles anzeigen
  • LogiLcdColorSetBackground

    • ZwergleAUT
    • 19. Dezember 2015 um 21:03

    Guten Abend CentuCore.

    Ok habe gerade ptr auf bool geändert nun bekomme ich 1 als Return.
    Jedoch bleibt die Farbe des Displays immer noch Schwarz.

    habe es auf 4 Arten Probiert jedoch alle ohne Erfolg Display bleibt immer Schwarz.
    Vermute das die 3te Art die richtige Art und Weise ist da hier der Array 1D ist und die selbe länge hat wie in dem Verlinkten Beitrag in #1.

    Spoiler anzeigen
    AutoIt
    Dim $LCDSetBackground_Array[320*240]
    For $Anzahl = 0 To (320*240)-1 Step 1
    	$LCDSetBackground_Array[$Anzahl] = Int (Random (0, 255))
    Next
    AutoIt
    Dim $LCDSetBackground_Array[320][240*4]
    For $Anzahl = 0 To (320)-1 Step 1
    	For $Anzahl2 = 0 To (240*4)-1 Step 1
    		$LCDSetBackground_Array[$Anzahl][$Anzahl2] = Int (Random (0, 255))
    	Next
    Next
    AutoIt
    Dim $LCDSetBackground_Array[320*240*4]
    For $Anzahl = 0 To (320*240*4)-1 Step 1
    	$LCDSetBackground_Array[$Anzahl] = Int (Random (0, 255))
    Next
    AutoIt
    Dim $LCDSetBackground_Array[320][240]
    For $Anzahl = 0 To (320)-1 Step 1
    	For $Anzahl2 = 0 To 240-1 Step 1
    		$LCDSetBackground_Array[$Anzahl][$Anzahl2] = Int (Random (0, 255))
    	Next
    Next
  • LogiLcdColorSetBackground

    • ZwergleAUT
    • 19. Dezember 2015 um 20:40

    Guten Abend miteinander.

    Hier im Forum gibt es bereits einen Beitrag zu diesem Problem jedoch nicht mit AutoIt (44433-Logitech-G19-Bildschirm-ansprechen-und-etwas-anzeigen) jedoch komme ich da nicht so ganz mit.
    Ich habe schon viele verschiedene Arten ausprobiert jedoch bekomme ich immer den Return 0x00000001.

    Ich hänge hier bei der Übergabe von "colorBitmap"
    Mein Code für den DllCall müsste meiner Meinung nach funktionieren.


    Spoiler anzeigen
    AutoIt: DllCall
    $LCDInitialize_DllCall = DllCall ($LCDSetBackground_LCDOpen, "ptr:cdecl", "LogiLcdColorSetBackground", "byte", $LCDSetBackground_Array)
    Spoiler anzeigen
    C: LCDDemoDlg.cpp
    if (LogiLcdIsConnected(LOGI_LCD_TYPE_COLOR))
        {
            BYTE colorBitmap[LOGI_LCD_COLOR_WIDTH * LOGI_LCD_COLOR_HEIGHT * 4];
    
    
            for (int i = 0; i < (LOGI_LCD_COLOR_WIDTH * LOGI_LCD_COLOR_HEIGHT * 4); i++)
            {
                colorBitmap[i] = (BYTE)rand();
    			MsgBox((BYTE)rand());
            }
    
    
            LogiLcdColorSetBackground(colorBitmap);
    
    
        }
    Alles anzeigen

    Hoffe mir kann hier jemand helfen hänge hier seit gestern fest und im Google komme ich leider auch nicht weiter mit dem Suchbegriff "AutoIt LogiLcdColorSetBackground" = 1 Treffer...

    Mit freundlichen Grüßen
    ZwergleAUT

    Dateien

    LogitechGamingLCDSDK.pdf 1,06 MB – 2.053 Downloads

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™