Delphi-PRAXiS
Seite 4 von 6   « Erste     234 56      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi HID Komponente - Komme nicht zurecht (https://www.delphipraxis.net/88108-hid-komponente-komme-nicht-zurecht.html)

Robert Marquardt 6. Apr 2007 18:04

Re: HID Komponente - Komme nicht zurecht
 
Zitat:

Zitat von Michael94
Was ich von dir noch bräuchte wäre ein "Werte an HID senden" damit ich die LED ändern kann.
Ansonsten werde ich dann alleine zurrecht kommen.

Das sollte brav funktionieren wenn du den Report direkt initialisierst.
Delphi-Quellcode:
      FillChar(Report, SizeOf(Report), 0);
      // das ist ziemlich aufwaendig dafuer das wir nur eine Usage im Report setzen wollen
      Report.ReportID := 0;
      // wir wollen in einen Output-Report schreiben
      Device.ReportTypeParam := HidP_Output;
      // das benennt die spezifische Usage die gesetzt werden soll
      Device.UsagePageParam := HID_USAGE_PAGE_CONSUMER;
      Device.LinkCollectionParam := $01; // CollectionType=Application
      Device.UsageParam := HID_USAGE_CONSUMER_CONSUMER_CONTROL;
      // den Wert setzen (LED Maximum)
      Device.SetUsageValue($FF, Report, Device.Caps.OutputReportByteLength);
      // ab damit ans Geraet
      Device.WriteFile(Report, Device.Caps.OutputReportByteLength, Written);
ersetzen durch
Delphi-Quellcode:
      FillChar(Report, SizeOf(Report), 0);
      // wird eh vom FillChar erledigt
      // Report.ReportID := 0;
      // den Wert setzen (LED Maximum)
      Report.Data[0] := $FF;
      // ab damit ans Geraet
      Device.WriteFile(Report, Device.Caps.OutputReportByteLength, Written);
Da jetzt eine Methode draus zu schnitzen sollte doch kein Problem sein.

Michael94 6. Apr 2007 18:18

Re: HID Komponente - Komme nicht zurecht
 
Geht leider nicht.
http://www.dev-ill.de/images/1175879890485.jpg

Robert Marquardt 6. Apr 2007 18:37

Re: HID Komponente - Komme nicht zurecht
 
Das sind Geraete fuer verschiedene Zwecke. Ich bin von Logitech-Teilen nicht so begeistert.

THE MATRIX 6. Apr 2007 20:51

Re: HID Komponente - Komme nicht zurecht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wo ich jetzt noch drüber gestolpert bin ...
der SpaceNavigator
auch eine klasse sache.. kommt dem iDrive noch näher

ich häng mal meine delphi komponente dran... @Robert ... ist immer noch mit 255er wert :D kann ja noch jemand ändern...

dafür gibts ja ne schicke community :)

@Michael94
Zum testen komm ich erstmal nicht, sry - bin momentan von Windows wieder weg.... das PowerMate rennt ja auch 1a unter linux ... :)

Michael94 6. Apr 2007 21:16

Re: HID Komponente - Komme nicht zurecht
 
Der SpaceNavigator ist für CAD Anwendungen und dementsprechend teuer.

Ich hab das Teil schon mal getestet:
Nicht schlecht, aber sehr gewöhnungsbedürftig

TERWI 29. Mär 2008 14:08

Re: HID Komponente - Komme nicht zurecht
 
Bin hier über diesen extrem interessanten Thread gestolpert und habe (auch) noch einige Fragen dazu.
Vorweg vielleicht erst einmal eine Beschreibung des 'Problems':

Ich habe mir 2 schicke HPTC-Gehäuse zugelegt (dieses und dieses), die in Verbindung mit jeweils einer DVB-S-TV-Karte (Satelliten TV) einmal im Wohnzimmer meinen großen LCD-TV beschicken und im Schlafzimmer als multimediale Einschlafhilfe dienen.
Beide Kisten haben ein VFD, diverse Bedienelemente, einen IR-Empfänger und ne FB selbst. Dieses 'Zubehör' stammt von SOUNDGRAPH und benötigt die Soft IMON / IMEDIAN.
Display, Bedienelemente und Empfänger sitzt alles auf einen Board, wird via USB angeschlossen und wird als diverse HIDs eingebunden.
Die Soft hat zig Einstellmöglichkeiten und ist prinzipiell nicht schlecht, aber.... A) optisch nicht mein Fall, B) läuft nicht wirklich gut mit der Empfängersoft zusammen (DVBDream) und C) ist irgendwie total überladen.
Es gibt auch eine API dazu (logo in C), aber damit kann ich nur Text auf das Display geben.

Ich möchte nun mehr oder weniger dieses IMON-Gerümpel 'entsorgen' und die Informationen der FB/Bedienlemente selbst auslesen und mit meinen eigenen Tools verwalten. Für das DVBDream habe ich schon einige Module/Plugins geschrieben, die auf meinem 'Normal-PC' mit einem USB-IR-Stick (IgorPlug - falls den jemand kennt...) super laufen. Auch eine Remote-Frontend für VLC ist so gut wie fertig.

Wie bekomme ich das nun an den Start ?
Wenn ich mir die Logs so ansehe, welche die Demo-Tools aus der HID-Komponente so alles hergeben, sehe ich eher lauter Bäume im Wald...
Wenn auch mir jemand ein wenig Starthilfe geben könnte ? Was soll ich als Info noch posten ?
Delphi-Quellcode:
HID-Devices
   VID=$046A PID=$002A
      UsagePage=Generic Desktop ($0001) Usage=Keyboard ($0006) CollectionType=Application ($01)
         Button Input Range: UsagePage=Keyboard ($0007) 224..231
         Button Input Range: UsagePage=Keyboard ($0007) 0..140
         Button Output Range: UsagePage=LED ($0008) 1..5
   VID=$046A PID=$002A
      UsagePage=Consumer ($000C) Usage=Consumer Control ($0001) CollectionType=Application ($01)
         Button Input Range: UsagePage=Consumer ($000C) 0..771
   VID=$046A PID=$002A
      UsagePage=Generic Desktop ($0001) Usage=System Control ($0080) CollectionType=Application ($01)
         Button Input Range: UsagePage=Generic Desktop ($0001) 129..131
   VID=$046A PID=$002A
      UsagePage=FF00 ($FF00) Usage=1 ($0001) CollectionType=Application ($01)
         Button Output: UsagePage=FF00 ($FF00) Usage=0 ($0000)
   VID=$046A PID=$002A
      UsagePage=Generic Desktop ($0001) Usage=Mouse ($0002) CollectionType=Application ($01)
         UsagePage=Generic Desktop ($0001) Usage=Pointing Device ($0001) CollectionType=Physical ($00)
            Button Input Range: UsagePage=Button ($0009) 1..7
            Value Input: UsagePage=Generic Desktop ($0001) Usage=Wheel ($0038)
            Value Input: UsagePage=Generic Desktop ($0001) Usage=Y Axis ($0031)
            Value Input: UsagePage=Generic Desktop ($0001) Usage=X Axis ($0030)
   "USB Multimedia Keyboard" VID=$046D PID=$C312
      UsagePage=Generic Desktop ($0001) Usage=Keyboard ($0006) CollectionType=Application ($01)
         Button Input Range: UsagePage=Keyboard ($0007) 224..231
         Button Input Range: UsagePage=Keyboard ($0007) 0..255
         Button Output Range: UsagePage=LED ($0008) 1..3
   "USB Multimedia Keyboard" VID=$046D PID=$C312
      UsagePage=Generic Desktop ($0001) Usage=System Control ($0080) CollectionType=Application ($01)
         Button Input: UsagePage=Generic Desktop ($0001) Usage=System Control Wake Up ($0083)
         Button Input: UsagePage=Generic Desktop ($0001) Usage=System Control Sleep ($0082)
         Button Input: UsagePage=Generic Desktop ($0001) Usage=System Control Power Down ($0081)
   "USB Multimedia Keyboard" VID=$046D PID=$C312
      UsagePage=Consumer ($000C) Usage=Consumer Control ($0001) CollectionType=Application ($01)
         Button Input: UsagePage=Consumer ($000C) Usage=Application Control Refresh ($0227)
         Button Input: UsagePage=Consumer ($000C) Usage=Application Launch Calculator ($0192)
         Button Input: UsagePage=Consumer ($000C) Usage=Application Launch Local Machine Browser ($0194)
         Button Input: UsagePage=Consumer ($000C) Usage=Application Launch Consumer Control Configuration ($0183)
         Button Input: UsagePage=Consumer ($000C) Usage=Application Control Select All ($021E)
         Button Input: UsagePage=Consumer ($000C) Usage=Application Control Paste ($021D)
         Button Input: UsagePage=Consumer ($000C) Usage=Application Control Cut ($021C)
         Button Input: UsagePage=Consumer ($000C) Usage=Application Control Copy ($021B)
         Button Input: UsagePage=Consumer ($000C) Usage=Application Control Stop ($0226)
         Button Input: UsagePage=Consumer ($000C) Usage=Application Control Forward ($0225)
         Button Input: UsagePage=Consumer ($000C) Usage=Application Control Back ($0224)
         Button Input: UsagePage=Consumer ($000C) Usage=Eject ($00B8)
         Button Input: UsagePage=Consumer ($000C) Usage=Scan Previous Track ($00B6)
         Button Input: UsagePage=Consumer ($000C) Usage=Play/Pause ($00CD)
         Button Input: UsagePage=Consumer ($000C) Usage=Scan Next Track ($00B5)
         Button Input: UsagePage=Consumer ($000C) Usage=Stop ($00B7)
         Button Input: UsagePage=Consumer ($000C) Usage=Application Launch Email Reader ($018A)
         Button Input: UsagePage=Consumer ($000C) Usage=Help ($0095)
         Button Input: UsagePage=Consumer ($000C) Usage=Application Control Bookmarks ($022A)
         Button Input: UsagePage=Consumer ($000C) Usage=Application Control Home ($0223)
         Button Input: UsagePage=Consumer ($000C) Usage=Application Control Search ($0221)
         Button Input: UsagePage=Consumer ($000C) Usage=Mute ($00E2)
         Button Input: UsagePage=Consumer ($000C) Usage=Volume Decrement ($00EA)
         Button Input: UsagePage=Consumer ($000C) Usage=Volume Increment ($00E9)
   "USB Multimedia Keyboard" VID=$046D PID=$C312
      UsagePage=FF00 ($FF00) Usage=1 ($0001) CollectionType=Application ($01)
         Button Input Range: UsagePage=FF00 ($FF00) 96..103
         Button Input: UsagePage=FF00 ($FF00) Usage=69 ($0069)
         Button Input: UsagePage=FF00 ($FF00) Usage=68 ($0068)
         Button Input Range: UsagePage=FF00 ($FF00) 106..111
         Button Input Range: UsagePage=FF00 ($FF00) 112..119
         Value Feature: UsagePage=FF00 ($FF00) Usage=20 ($0020)
Die oberen 5 'Geräte' scheinen die meiner Funk-Taste/-Maus zu sein (Cherry cyMotion Pro).
Aber was ist das alles darunter ? Irgendwie kann ich das den vorhandenen Eingabemöglichkeiten (Gerät / FB) nicht so wirklich zuordnen....

THE MATRIX 29. Mär 2008 14:35

Re: HID Komponente - Komme nicht zurecht
 
Mal so zur Frage vorweg.

Ist der IR nicht eventuell normal über lirc ansprechbar ? schon mal probiert .....

TERWI 29. Mär 2008 15:37

Re: HID Komponente - Komme nicht zurecht
 
Sorry für diese möglicherweise rappelblöde Gegenfrage: LIRC ? Linux ? Ich bin altehrwürdiger WinDoof'er und damit gor nüscht am Hut...
WinLIRC als solches geht nicht auf diesem Board, weil es keine COM's mehr hat. Leider... (MSI 7329 Medi Live).

Die FB von Soundgraph ist eigentlich ein propper Teil, weil sie auch noch so etwas wie ein MausWheel und div. andere nützlich Tasten hat. Mit dem Ding kann ich über mein eigenes IR-Tool (m.E. wesentlich besser als WinLIRC) schon recht gut kommunizieren, aber...

Ich will da nicht noch was 'anstecken' - es ist alles in den Kisten drin & dran. IR-Empfänger, VFD, Tasten wie am DVD-Player, ...
Muss ich nur irgendwie mich in diese HID-Kamelle einklinken und via Events auslesen, wer wo was gearde gedrückt hat. Undlogo auch die div. LEDs an und aus machen.

Irgendwie komm ich da noch nicht so ganz hinter...

TERWI 30. Mär 2008 10:26

Re: HID Komponente - Komme nicht zurecht
 
Ich habe jetzt mal einige Stunden damit verbracht, den Sourcen auf die Spur zu kommen.
Die Demo SimpleHIDWrite wäre m.E. ja schon ganz brauchbar, da - wenn ich das richtig verstanden habe - hier eigentlich (?) ja auch eine Ausgabe der Daten des angewählten Gerätes in der HistoryListBox erfolgen soll.

Es passiert aber nix....
CurrentDevice.OnData wird zwar bei der Auswahl eines Gerätes mit der procedure ShowRead belegt, aber offensichtlich nicht 'angesprungen'.
Die HID-Hilfe sagt dazu:
... Der Thread wird nicht für eingecheckte Geräte gestartet, die mit Enumerate aufgezählt werden ...
Und genau das ist bei mir ja der Fall. Hier wird nix ein-/ausgesteckt/gecheckt - Das SoundGraph-Panel ist immer fest mit nem internen USB-Sockel verbunden.

Nun gäbe es da ja auch noch TJvHidDeviceController.OnDeviceData.
Die dafür notwendige proc sähe genau so aus wie ShowRead, allerdings lässt diese sich nicht als Eventproc zuweisen.
Diverse Versuche dieses irgendwie unter den Hut zu bekommen, wird nur mit Exceptions belohnt oder es tut sich weiterhin nichts.

Hat jemand mal den goldenen Tipp ?

TERWI 30. Mär 2008 16:16

Re: HID Komponente - Komme nicht zurecht
 
... und zum xten Mal wieder alle relevanten Threads durchgelesen.
Irgendwo sagte Robert, dass wenn sich ein Gerät als ??? anmeldet, werden keine Events ausgelöst, die über die HID-Kompenente empfangen werden können. Da vermute ich mal stark, dass das hier auch so ist.
Bei meinem Cherry-Keyboard/Maus kommen z.B. auch nur die extra zu definierenden Zusatzkeys an.

Also habe auch ich das mal mit dem kleinen Tool von Dani via RAW Input probiert.
Da bekomme ich zwar alle Keyboard und Maus Events, aber von diesem SoundGraph-Teil auch nur die Keys der FB, die auf eine Applikation definiert sind und auch nur dann, wenn die läuft (auch ohne Fokus).

Krise ! Es scheint bei dieser Soft so, das man bestimmte Tasten nicht 'wegdefinieren' kann. Z.B. bleibt Lautstärke immer Lautstärke und scheint direkt auf den Mixer zu wirken. Diverse andere Tasten (R-G-G-B, Player-Navigation und spez. 'Calls') kommen einfach nirgendwie/wo an/raus.
Ich hege die Vermutung, die SoundGraph-progger binden dieses Front-/IR-Panel als ganz normales USB-Gerät mit speziellem Treiber ein und erst die Soft IMON macht daraus die HID-Geräte. Und dort werden dann halt erst Tasten weitergegeben, wenn sie zu einer Anwendung definiert sind. Und bestimmte Tasten bleiben dann eben intern und erreichen niemals das System.
Das ist doch Käse....

Nun bliebe nur noch die Möglichkeit, irgendwie direkt auf dem USB-Bus zu lauschen ?!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr.
Seite 4 von 6   « Erste     234 56      

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