Seite 6 von 6

Verfasst: 17.06.2009 22:34
von KeyKon
Mir wär der Deal auch recht^^
Hat sich eigentlich bei der G19 auch die Auflösung geändert?

Verfasst: 18.06.2009 00:14
von Hoto
Ja, auf 320x240 32bit. Damit kann man schon ordentlich was anfangen, vor allem weil man mehr Platz für Infos hat. Auch ist das Display nun schnell genug um z.B. Videos drauf laufen zu lassen, kann man je nach Applet auch für anderes gut gebrauchen, wo eben ein schneller Bildwechsel benötigt wird.

Inzwischen blick ich nun schon etwas mehr durch, hier und da konnte ich schon einiges einbinden (z.B. die Strukturen), aber das kann wohl noch dauern bis das Ganze auch wirklich funktioniert.

Wie gesagt würde ich den Code gerne so umschreiben, dass man sowohl das G15 bzw. G13 (selbes Display) ebenso wie die G19 in seinem Prog unterstützen kann, was ich nämlich in einem meiner aktuellen kleineren Projekte gerne tun würde. Vielleicht schreib ich den Code auch komplett neu, in fertigem Code rum basteln ist immer so ne Sache.

Und hergeben tue ich die G19 nicht mehr, die hat meine G15 abgelöst und ist noch mal deutlich besser.

Verfasst: 24.06.2009 11:35
von SoS
Hoto hat geschrieben: dass man sowohl das G15 bzw. G13 (selbes Display) ebenso wie die G19 in seinem Prog unterstützen kann.
Als Alternative kanns Du auch MyLCD benutzen,dort
werden mehr als nur Logitech-LCD's unterstützt.

Verfasst: 29.06.2009 21:35
von Hoto
Klingt zwar nett, aber ich würde gerne auf zusätzliche externe Libs verzichten.

Leider kam ich noch nicht so recht weiter mit der G19 Unterstützung in PB.

Verfasst: 29.06.2009 22:44
von HeX0R
Da dürftest du eh Zeit genug haben.

Ich würde mal tippen, ausser dir nennt etwa ein anderer User in diesem Board dieses Keyboard sein eigen.

Beim G15 hab ich schon lange überlegt, ob ich bereit bin den Betrag zu berappen, aber das G19 ist meines Erachtens beim Preis jenseits von Gut und Böse.
Immerhin ist es trotz allem Schnickschnack doch "nur" ein Keyboard.

Verfasst: 10.07.2009 07:24
von Hoto
Der Preis wird mit der Zeit auch noch etwas weiter nach unten gehen und für den Preis kriegt man wirklich eine 1A Tastatur, vor allem die Verarbeitung und alles wirkt noch mal ne Klasse besser als bei der G15 und dort war sie schon sehr gut. Ich bereue den Kauf jedenfalls nicht und Jeder der sie sich bisher zugelegt hat auch nicht (auf g15-applets.de zumindest). Und je mehr Software es gibt, die die Tastatur unterstützt, desto interessanter wird sie auch, trotz des Preises (akt. bei ca. 127 Euro).

Für mein Projekt ist jedenfalls das G19 Display ein wichtiger Bestandteil, ich komm nur zur Zeit nicht so recht zum programmieren, langsam aber sicher komme ich aber hinter den Aufbau der Treiber und ich hoffe die G19 bald in PB zum laufen zu kriegen.

Versteht sich von selbst, dass ich dann den Source hier veröffentlichen werde.

Re: [Code] Logitech G15

Verfasst: 30.09.2010 02:23
von Bisonte
So ... da nun PB4.5 intern die Images mit 24Bit als Minimum ansieht,
funktioniert diese Include nun nicht mehr.

Aber mit einer minimalen Änderung geht es trotzdem :

In der Prozedur G15_MakeImage() muss man kurzerhand die Imagetiefe festsetzen !

Code: Alles auswählen

Procedure G15_MakeImage(Image, *bitmap.lgLcdBitmap160x43x1)
   Protected A.l, x.l, y.l, w.l, h.l, d.l, Result.l, hDC, *bmi.BITMAPINFO, *Buffer
   Protected *H1.BYTE, *H2.LONG

   If IsImage(Image) = 0
      ProcedureReturn #False
   EndIf

   w = ImageWidth(Image)
   h = ImageHeight(Image)
   d = 8 ; ImageDepth(Image) ;###### HIER IST DIE Änderung
   
   If d <> 8 Or w > #LGLCD_BMP_WIDTH Or h > #LGLCD_BMP_HEIGHT
      ProcedureReturn #False
   EndIf
   [...]
EndProcedure
Man muss halt nur selber aufpassen, dass man für das G15 Display nur Schwarz
und Weiss zum malen nehmen darf !

Ok. Ist dirty, aber irgendwie muss ich als Anfänger das Ding doch zum laufen kriegen ;)

By the way ... diese Include funktioniert auch mit der G19 !
(Hat doch zufällig ein G19 Nutzer nicht lesen können und einfach mein Applet
gestartet und es lief... :mrgreen: )

Dort wird dann das Bild "hochskaliert". Ob es allerdings mit anderen Auflösungen und Farben
läuft, kann ich aus Ermangelung einer solchen Tastatur nicht sagen.
Und die 4 Buttons funktionieren ebenfalls ...

Re: [Code] Logitech G15

Verfasst: 30.09.2010 22:39
von HeX0R
Ich hab noch die Ur-Fassung gefunden, in der ich noch alle möglichen Bittiefen verarbeitet hatte.
Der Einfachheithalber hatte ich das irgendwann rausgeworfen, konnte ja nicht ahnen, dass es wieder gebraucht wird.

Code: Alles auswählen

Procedure G15_MakeImage(Image, *bitmap.lgLcdBitmap160x43x1, Invers = 0)
	Protected A, x, y, w, h, d, Result, hDC, *bmi.BITMAPINFO, *Buffer
	Protected *HB.BYTE, *HW.WORD, *HL.LONG, *H2.LONG

	If IsImage(Image) = 0
		ProcedureReturn #False
	EndIf

	w = ImageWidth(Image)
	h = ImageHeight(Image)
	d = ImageDepth(Image)

	; 	If w > #LGLCD_BMP_WIDTH Or h > #LGLCD_BMP_HEIGHT
	; 		ProcedureReturn #False
	; 	EndIf
	; fix widths and heights
	If d = 1
		d = 8
	EndIf
	If w > #LGLCD_BMP_WIDTH
		w = #LGLCD_BMP_WIDTH
		h = h * #LGLCD_BMP_WIDTH / ImageWidth(Image)
		If h > #LGLCD_BMP_HEIGHT
			h = #LGLCD_BMP_HEIGHT
			w = w * #LGLCD_BMP_HEIGHT / ImageHeight(Image)
		EndIf
	ElseIf h > #LGLCD_BMP_HEIGHT
		h = #LGLCD_BMP_HEIGHT
		w = w * #LGLCD_BMP_HEIGHT / ImageHeight(Image)
		If w > #LGLCD_BMP_WIDTH
			w = #LGLCD_BMP_WIDTH
			h = h * #LGLCD_BMP_WIDTH / ImageWidth(Image)
		EndIf
	EndIf
	If w <> ImageWidth(Image) Or h <> ImageHeight(Image)
		ResizeImage(Image, w, h)
	EndIf

	If MyG15\Simulate & #LCD_SIMULATE
		CopyImage(Image, MyG15\ImageID)
		ResizeImage(MyG15\ImageID, w*2, h*2)
		If *bitmap = 0
			ProcedureReturn #True
		EndIf
	EndIf

	*bitmap\hdr\Format = #LGLCD_BMP_FORMAT_160x43x1
	hDC                = StartDrawing(ImageOutput(Image))
	If hDC
		*bmi = AllocateMemory(SizeOf(BITMAPINFO) + 255 * SizeOf(RGBQUAD))
		If *bmi
			*bmi\bmiHeader\biSize        = SizeOf(BITMAPINFOHEADER)
			*bmi\bmiheader\biWidth       =  w
			*bmi\bmiheader\biHeight      = - h
			*bmi\bmiheader\biPlanes      = 1
			*bmi\bmiheader\biBitCount    = d
			*bmi\bmiheader\biCompression = #BI_RGB

			*Buffer = AllocateMemory(w * h * (d / 8))
			If *Buffer = 0
				StopDrawing()
			Else
				Result = GetDIBits_(hDC, ImageID(Image), 0, h, *Buffer, *bmi, #DIB_RGB_COLORS)
				StopDrawing()
				If Result
					Select d

						Case 8
							*HB = *Buffer
							For y = 0 To #LGLCD_BMP_HEIGHT - 1
								For x = 0 To #LGLCD_BMP_WIDTH - 1
									If y >= h Or x >= w
										A = 255
									Else
										*H2 = *bmi\bmiColors + (*HB\b & $FF) * SizeOf(RGBQUAD)
										A   = (*H2\l & $FF) + ((*H2\l >> 8) & $FF) + ((*H2\l >> 16) & $FF)
										*HB + 1
									EndIf
									If Invers
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = B / 3
									Else
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = 255 - (A / 3)
									EndIf
								Next x
							Next y

						Case 16
							*HW = *Buffer
							For y = 0 To #LGLCD_BMP_HEIGHT - 1
								For x = 0 To #LGLCD_BMP_WIDTH - 1
									If y >= h Or x >= w
										A = 510
									Else
										A = (*HW\w & $ff) + ((*HW\w >> 8) & $ff)
										*HW + 2
									EndIf
									If Invers
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = A / 2
									Else
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = 255 - (A / 2)
									EndIf
								Next x
							Next y

						Case 24
							*HL = *Buffer
							For y = 0 To #LGLCD_BMP_HEIGHT - 1
								For x = 0 To #LGLCD_BMP_WIDTH - 1
									If y >= h Or x >= w
										A = 765
									Else
										A = (*HL\l & $FF) + ((*HL\l >> 8) & $FF) + ((*HL\L >> 16) & $FF)
										*HL + 3
									EndIf
									If Invers
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = A / 3
									Else
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = 255 - (A / 3)
									EndIf
								Next x
							Next y

						Case 32
							*HL = *Buffer
							For y = 0 To #LGLCD_BMP_HEIGHT - 1
								For x = 0 To #LGLCD_BMP_WIDTH - 1
									If y >= h Or x >= w
										A = 765
									Else
										A = (*HL\l & $FF) + ((*HL\l >> 8) & $FF) + ((*HL\L >> 16) & $FF)
										*HL + 4
									EndIf
									If Invers
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = A / 3
									Else
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = 255 - (A / 3)
									EndIf
								Next x
							Next y

					EndSelect
				EndIf
				FreeMemory(*Buffer)
			EndIf
			FreeMemory(*bmi)
		Else
			StopDrawing()
		EndIf
	EndIf

	ProcedureReturn Result
EndProcedure
(Gibt ausserdem noch die Möglichkeit das Bild Invers darzustellen)


Edit:
Ich hab das auch mal in das Original eingepflegt.

Re: [Code] Logitech G15

Verfasst: 01.10.2010 10:32
von Bisonte
Thx G15 Chef ;)