AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi HID Komponente - Komme nicht zurecht

HID Komponente - Komme nicht zurecht

Offene Frage von "wschrabi"
Ein Thema von Michael94 · begonnen am 10. Mär 2007 · letzter Beitrag vom 23. Mär 2016
Antwort Antwort
Seite 4 von 6   « Erste     234 56   
Robert Marquardt
(Gast)

n/a Beiträge
 
#31

Re: HID Komponente - Komme nicht zurecht

  Alt 6. Apr 2007, 18:04
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.
  Mit Zitat antworten Zitat
Michael94

Registriert seit: 10. Mär 2007
Ort: Aalen
18 Beiträge
 
#32

Re: HID Komponente - Komme nicht zurecht

  Alt 6. Apr 2007, 18:18
Geht leider nicht.
http://www.dev-ill.de/images/1175879890485.jpg
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#33

Re: HID Komponente - Komme nicht zurecht

  Alt 6. Apr 2007, 18:37
Das sind Geraete fuer verschiedene Zwecke. Ich bin von Logitech-Teilen nicht so begeistert.
  Mit Zitat antworten Zitat
THE MATRIX

Registriert seit: 26. Jul 2003
62 Beiträge
 
#34

Re: HID Komponente - Komme nicht zurecht

  Alt 6. Apr 2007, 20:51
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 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 ...
Angehängte Dateien
Dateityp: zip powermate_174.zip (238,7 KB, 54x aufgerufen)
§¤*~`~*¤§¤*~`~*¤§[* ((( THE MATRIX - Reloaded ))) ]§¤*~`~*¤§¤*~`~*¤§
  Mit Zitat antworten Zitat
Michael94

Registriert seit: 10. Mär 2007
Ort: Aalen
18 Beiträge
 
#35

Re: HID Komponente - Komme nicht zurecht

  Alt 6. Apr 2007, 21:16
Der SpaceNavigator ist für CAD Anwendungen und dementsprechend teuer.

Ich hab das Teil schon mal getestet:
Nicht schlecht, aber sehr gewöhnungsbedürftig
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
378 Beiträge
 
Delphi 11 Alexandria
 
#36

Re: HID Komponente - Komme nicht zurecht

  Alt 29. Mär 2008, 14:08
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....
  Mit Zitat antworten Zitat
THE MATRIX

Registriert seit: 26. Jul 2003
62 Beiträge
 
#37

Re: HID Komponente - Komme nicht zurecht

  Alt 29. Mär 2008, 14:35
Mal so zur Frage vorweg.

Ist der IR nicht eventuell normal über lirc ansprechbar ? schon mal probiert .....
§¤*~`~*¤§¤*~`~*¤§[* ((( THE MATRIX - Reloaded ))) ]§¤*~`~*¤§¤*~`~*¤§
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
378 Beiträge
 
Delphi 11 Alexandria
 
#38

Re: HID Komponente - Komme nicht zurecht

  Alt 29. Mär 2008, 15:37
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...
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
378 Beiträge
 
Delphi 11 Alexandria
 
#39

Re: HID Komponente - Komme nicht zurecht

  Alt 30. Mär 2008, 10:26
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
378 Beiträge
 
Delphi 11 Alexandria
 
#40

Re: HID Komponente - Komme nicht zurecht

  Alt 30. Mär 2008, 16:16
... 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 ?!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz