Wenn kein Interface angeschlossen ist und dann ein Programm ausgeführt wird, hängt das Programm bei mir in einer Endlosschleife fest. Diese entsteht in der usbdmx.c in der Funktionen GetAllConnectedInterfaces(...).
Das Problem scheint in der while-Schleife, in den Zeilen 116-125, zu liegen. Diese wird ja für jedes angeschlossene HID-Device durchlaufen und die if-Abfrage überprüft dann, ob es sich um ein DMX-Interface handelt. Die Ursache der Endlosschleife liegt nun in Zeile 123. Hier wird der Pointer auf das folgende Element gesetzt. Dies geschieht aber nur, wenn es sich bei dem HID-Device um eines der besagten Interfaces handelt. Falls nun aber der Pointer auf ein anderes Device (Bsp: Maus oder Tastatur) zeigt, wird die if-Abfrage abgewiesen und nichts ausgeführt. Dadurch wird immer wieder das gleiche Gerät überprüft und die while-Schleife nie verlassen.
Lösungsvorschlag: Tauschen der Zeilen 123 und 124, sodass das cur_dev=cur_dev->next nach dem if und vor dem Schleifen-rumpf-ende ausgeführt wird.
Das gleiche Phänomenen findet sich in der Funktion GetDeviceVersion(...) in Zeile 149.
Wenn kein Interface angeschlossen ist und dann ein Programm ausgeführt wird, hängt das Programm bei mir in einer Endlosschleife fest. Diese entsteht in der usbdmx.c in der Funktionen GetAllConnectedInterfaces(...).
Das Problem scheint in der while-Schleife, in den Zeilen 116-125, zu liegen. Diese wird ja für jedes angeschlossene HID-Device durchlaufen und die if-Abfrage überprüft dann, ob es sich um ein DMX-Interface handelt. Die Ursache der Endlosschleife liegt nun in Zeile 123. Hier wird der Pointer auf das folgende Element gesetzt. Dies geschieht aber nur, wenn es sich bei dem HID-Device um eines der besagten Interfaces handelt. Falls nun aber der Pointer auf ein anderes Device (Bsp: Maus oder Tastatur) zeigt, wird die if-Abfrage abgewiesen und nichts ausgeführt. Dadurch wird immer wieder das gleiche Gerät überprüft und die while-Schleife nie verlassen.
Lösungsvorschlag: Tauschen der Zeilen 123 und 124, sodass das
cur_dev=cur_dev->next
nach dem if und vor dem Schleifen-rumpf-ende ausgeführt wird.Das gleiche Phänomenen findet sich in der Funktion GetDeviceVersion(...) in Zeile 149.