Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi EndOfFile/EndOfData bei Pipe erkennen (https://www.delphipraxis.net/155143-endoffile-endofdata-bei-pipe-erkennen.html)

himitsu 30. Okt 2010 13:37

AW: EndOfFile/EndOfData bei Pipe erkennen
 
Zitat:

Zitat von sparky (Beitrag 1058617)
aber eben nicht, dass man die Registrierung für ein bestimmtes hwndTarget komplett aufheben möchte... :?

Jupp, man kann es auf ein bestimmtest Fenster registrieren, aber nur für die komplette Anwendung deregistrieren.

himitsu 30. Okt 2010 19:32

AW: EndOfFile/EndOfData bei Pipe erkennen
 
Was ich grade noch Wichtiges mitbekommen hab
und weswegen ich meiner HID-Klasse demnächst ein Singlepattern verpasse.

Es kann pro Anwendung immer nur ein Fenster für ein für ein Ereignis (UsagePage+Usage) gegistriert sein.

Und zwar immer das Letzte bekommt die Nachrichten.

Genaue Bezeichnungen haben vorrang vor ganzen Gruppen (RIDEV_PAGEONLY).
Wenn man also für ein Fenster eine ganze UsagePage reserviert und für ein Anderes nur einen bestimmten Bereich (UsagePage+Usage), dann ist bei der Gruppe dieser Bereich nicht enthalten.




Da ja pro Anwendung nun eh nur ein Fenster empfangen kann, ist es also nicht schlimm und auch irgendwie einleuchtend, warum man beim Deregistrieren kein Handle angeben muß/darf/braucht.

sparky 31. Okt 2010 07:40

AW: EndOfFile/EndOfData bei Pipe erkennen
 
Für unseren Anwendungsfall habe ich als "Singleton-Pattern" einen modalen Dialog :wink:, und wenn der (nach einem Timeout) wieder geschlossen wird gibts auch keine Raw-Input Nachrichten / Registrierung mehr. Funktioniert besser als gedacht.
Danke für die zusammenarbeit :thumb:

Übrigens: Ich würde gerne den HID-Controller aus deiner WiiHID Lib zum ermitteln aller angeschlossenen HID-Geräte verwenden. Ist das Ok, da es sich um eine kommerzielle Verwendung handelt?

himitsu 31. Okt 2010 08:23

AW: EndOfFile/EndOfData bei Pipe erkennen
 
Is OK, ich werd' da die nächsten Tage noch das RAW-Input einbauen, den nicht richtig funktionierenden Timer ausbauen und dann wird das Ganze vermutlich wieder unter 'ner passenden Multilizenz veröffentlicht, welche das erlauben müßte.
Zitat:

MPL v1.1 , GPL v3.0 or LGPL v3.0
Und ich bedanke mich dann auch schonmal. :thumb:



Muß mir jetzt nur noch überlegen, wie ich das HID und RawInput am Besten verbinde, also wie möglichst optimal die RawInputs an die entsprechenden registrierten HID-Klassen weitergeleitet/zugeordnet werden können.

Und wie/ob ich ein Win7-Problem beseitige, denn mein WiiControler wird von GetRawInputDeviceList doppelt gefunden, also mit zwei verschiedenen Handles (hDevice) und es kommen alle Reports doppelt rein.
(mal sehn ob ich sie dann einfach doppelt verarbeite oder ob/wie man die Doppelten ignorieren kann)

sparky 31. Okt 2010 10:46

AW: EndOfFile/EndOfData bei Pipe erkennen
 
Ok, wie gesagt die Anbindung der neuen Barcode-Scanner ist bei uns erstmal noch etwas zurückgestellt.

Wird die Lib auch noch Delphi Versionen ohne Unicode und References/Closures/Generics unterstützen? Falls nicht, wäre es zumindest ein Grund mehr endlich die neue Delphi Version aus der Schublade zu holen und unsere Biblithek / aktuellen Projekte anzupassen :coder:

Wenn ein Device doppelt aufgelistet wird, kommen die Reports dann für jedes Handle doppelt oder pro Handle nur einmal ?
Doppelt pro Handle oder nicht identifizierbar wäre ziemlich blöd für unseren Anwendung, denn die soll über die Anzahl der unterschiedlichen Eingaben zählen (d.h.: Barcode * Anzahl = Artikel * Menge).

btw, wurde das Device das doppelt auftaucht zwischenzeitlich mal getrennt oder ist eine Anwendung beim Zugriff (sprich offenem Handle) abgestürzt?
Dann würde ich einfachmal vermmuten das Windows beim Verwalten der Resourcen ein wenig hinterher ist :gruebel:

Mal schauen ob ich das mit den Scannern unter Win7 nach stellen kann, unter XP hatte ich bisher noch keine Probleme...

himitsu 31. Okt 2010 11:05

AW: EndOfFile/EndOfData bei Pipe erkennen
 
Das Unicode ist kein Problem, muß ich dann nur Einiges von String/Char auf WideString/WideChar umstellen und Anderes nach ANSI konvertieren.
Die Generics sind nur zur Vereinfachung drin ... mit 'ner TList und TypeCasts läßt sich das ersetzen.

Also, es sollte sich schon recht leicht abwärtskompatibel machen lassen.



Die kommen pro Handle nur einmal, aber als RIDI_DEVICENAME haben sie den gleichen und sonst ist auch alles gleich.

Ich müßte dann also schauen, wie ich es löse, daß dann nur auf eines der beiden Handles gehört und dabei aufpassen, daß nicht was Falsches ignoriert wird.

Unter XP arbeite ich mit dem BlueSoleil-Bluetooth-Stack
und unter Win7 mit dem vorhandenen Bluetooth-Stack von Microsoft.
Leider kann man bei dem BTS von MS nicht "wiederverbinden".
(es geht nur komplett entfernen und neu verbinden :wall:, also solltes es nicht daran liegen, daß es "wiedervervunden" wurde, da sowas ja nicht geht)


Beim WiiControler ist es vermutlich nicht so schlimm, wenn was doppelt ankommt, da ich selber nur auf Veränderungen reagiere.
Aber dennoch müßte man so alles doppelt auswerten und vergleichen.
Bei deinem Barcode-Scanner wäre es bestimmt unpraktisch, wenn dann alle Zeichen doppelt reinkommen.

Nja, vielleicht ist es ja nur ein Problem mit dem Bluetooth.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:20 Uhr.
Seite 3 von 3     123   

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