![]() |
Re: HID Komponente - Komme nicht zurecht
Zitat:
Delphi-Quellcode:
ersetzen durch
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);
Delphi-Quellcode:
Da jetzt eine Methode draus zu schnitzen sollte doch kein Problem sein.
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); |
Re: HID Komponente - Komme nicht zurecht
|
Re: HID Komponente - Komme nicht zurecht
Das sind Geraete fuer verschiedene Zwecke. Ich bin von Logitech-Teilen nicht so begeistert.
|
Re: HID Komponente - Komme nicht zurecht
Liste der Anhänge anzeigen (Anzahl: 1)
Wo ich jetzt noch drüber gestolpert bin ...
der ![]() 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 ... :) |
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 |
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 ( ![]() ![]() 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:
Die oberen 5 'Geräte' scheinen die meiner Funk-Taste/-Maus zu sein (Cherry cyMotion Pro).
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) Aber was ist das alles darunter ? Irgendwie kann ich das den vorhandenen Eingabemöglichkeiten (Gerät / FB) nicht so wirklich zuordnen.... |
Re: HID Komponente - Komme nicht zurecht
Mal so zur Frage vorweg.
Ist der IR nicht eventuell normal über lirc ansprechbar ? schon mal probiert ..... |
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... |
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 ? |
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. |
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