AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

JVHIDControllerClass Eventpipe

Ein Thema von kehrenberger · begonnen am 23. Dez 2010 · letzter Beitrag vom 24. Dez 2010
Antwort Antwort
kehrenberger

Registriert seit: 10. Okt 2007
14 Beiträge
 
#1

JVHIDControllerClass Eventpipe

  Alt 23. Dez 2010, 09:25
Ich benutze seit kurzem die JVHIDControllerClass von Robert Marquardt aus dem Jedi Projekt. Das Auschecken eines HID-Devices und das Lesen davon funktioniert wunderbar. Jedoch habe ich ein Problem mit der Eventbehandlungsroutine Eventpipe, die anscheinend dafür zuständig ist, Events abzufangen, um neu angeschlossene oder entfernte HID Devices zu erkennen und die Deviceliste des HID-Controllers upzudaten.

Wird z.B. irgendwo auf der Form, auf der der HID-Controller verwendet wird, showmessage aufgerufen, wird durch das Öffnen des showmessage Fensters ein Event erzeugt, der von Eventpipe sofort abgearbeitet wird. Das showmessage Fenster wird zwar generiert und angezeigt, aber die Applikation wartet nicht wie üblich auf die Bestätigung des Benutzers bis weitergearbeitet wird....

Hat jemand ein ähnliches Problem und schon eine Lösung gefunden oder eine Anregung, wie man das lösen könnte?

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: JVHIDControllerClass Eventpipe

  Alt 23. Dez 2010, 09:32
Robert kann man ja leider nicht mehr fragen.

Könntest du da mal ein kleines Demoprojekt erstellen, so mit allen nötigen Dateien (auch die von den Jedi) im Projektverzeichnis?
Wenn ja, dann kann ich die nächsten Tage mal versuchen reinzusehn.

Meine eigene HID-Klasse ist leider auch noch nicht ganz fertig und es wird auch noch etwas dauern, da Anderes etwas Vorrang hat.
(Speziell beim Erkennen neuer Geräte hatte sich leider irgendwo ein Fehler eingeschließen, als ich da Einiges umgebaut hatte, und den fand ich noch nicht )
$2B or not $2B
  Mit Zitat antworten Zitat
kehrenberger

Registriert seit: 10. Okt 2007
14 Beiträge
 
#3

AW: JVHIDControllerClass Eventpipe

  Alt 23. Dez 2010, 13:04
Tja, hab ich gehört, traurig.
Sample wird gemacht. Danke für die schnelle Antwort!
  Mit Zitat antworten Zitat
kehrenberger

Registriert seit: 10. Okt 2007
14 Beiträge
 
#4

AW: JVHIDControllerClass Eventpipe

  Alt 23. Dez 2010, 22:59
Habe Sample-Projekt in den Projekt-Folder gepostet. Name: Beispiel für JvHIDDeviceController Komponente
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: JVHIDControllerClass Eventpipe

  Alt 23. Dez 2010, 23:27
Schön, daß man Demos bekommt, wo vieles fehlt oder nicht funktioniert.
ich hab halt grad kein JEDI installiert ... komplett siehe Anhang (mal so zum Vergleich)

Nja, aber ich glaub ich hab dich eh mißverstanden.

Ja, es ist normal, daß Timer und andere Messages verarbeitet, wärend ein Dialog angezeigt wird.
Wärend der Anzeige wird quasi Application.ProcessMessages ausgeführt, worüber der Timer behandelt wird.

Es liegt also nicht an der Komponente, sondern am Dialog.

PS: Ein neuer Thread hätte dafür nicht sein müssen.
Angehängte Dateien
Dateityp: zip IMO_USB.zip (233,1 KB, 49x aufgerufen)
$2B or not $2B
  Mit Zitat antworten Zitat
kehrenberger

Registriert seit: 10. Okt 2007
14 Beiträge
 
#6

AW: JVHIDControllerClass Eventpipe

  Alt 24. Dez 2010, 00:05
sorry, die hab ich wohl vergessen... Danke für Deine schnelle Antwort.

Also, wenn ich Dich richtig verstehe, läuft der Timer bei einem aktiven, offenen showmessage Dialog trotzdem weiter...das werde ich mir noch ansehen.

Aber lassen wir den Timer mal weg. Warum springt, sobald der showmessage Dialog aktiv ist, das Programm auf EventPipe? Eigentlich sollten doch nur DeviceChange Ereignissen abgefangen und nach EventPipe gesprungen werden, oder?

Habe dies gefunden in JvHidDeviceController.pas:

Delphi-Quellcode:
if IsHidLoaded then
  begin
    HidD_GetHidGuid(FHidGuid);
    // only hook messages if there is a HID DLL
    FHWnd := AllocateHWnd(EventPipe);
    // this one executes after Create completed which ensures
    // that all global elements like Application.MainForm are initialized
    PostMessage(FHWnd, WM_DEVICECHANGE, DBT_DEVNODES_CHANGED, -1);
  end
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:15 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