HID, VendorID ProduktID, Fragen über Fragen...

Hallo Paresy,
ich habe ein HID Gerät und falls es mal abhanden kommt, benutze ich ein Script um es wieder zu verbinden.

In diesem Script benutze ich Vendor ID und ProduktID.

Trotz Speicherei, meckert er über ein Gerät mit PID und VID, das ich nicht habe und auch nicht abgespeichert hatte.

Die VID und PID ist zwar ähnlich, aber leider nie Meine. So ein Gerät habe ich nicht…

Habe ich Einfluß drauf oder was mache ich falsch?

Gruß Helmut

Kannst du in deinem Skript bei der PID ein -1 hinzufügen? Evtl. berechnet IP-Symcon die PID falsch… Du siehst ja einen Versatz von 1.

Und PID/VID scheinen verdreht!?

paresy

Mit „-1“ geht’s auch nicht…

Wenn ich das Gerät neu abgespeichert habe, dann läuft mein Script.

Ich habe es mal wieder ausgegraben, ich meine, es hat früher mal funktioniert…

Edit:
Habe im Gerätemanager auch mal VID und PID gecheckt, siehe PNG.

<?
$hid_id =39812 /*[HID Funk Modul]*/;        // ID der HID-Instanz in IP-Symcon

$vendor_id = 5840;      // Vendor-ID des zu suchenden HID-Geräts, =Helmuts VID
$product_id =1206;    // Product-ID des zu suchenden HID-Geräts, Helmuts PID ist 1207 oder 1206

//$interval = 15;          // Kontrollintervall in Minuten

$instance = IPS_GetInstance($hid_id);
 //echo $instance['InstanceStatus'] ;
    $found_device =false;
    if (((int)HID_GetDeviceVendorID($hid_id) == $vendor_id) && ((int)HID_GetDeviceProductID($hid_id) == $product_id)):
        echo "looking for hid device... ";
        $devices = HID_GetDevices($hid_id);
        foreach ($devices as $data);
	 endif;
    if (((int)$data['VendorID'] == $vendor_id) && ((int)$data['ProductID'] == $product_id)):
                echo "Helmut's Gerät gefunden";
               SetValueBoolean(31286 /*[HID Funk Modul\HID-USB-Modul Da]*/,false);
                $found_device = true;
                HID_SetDeviceSerial($hid_id, (String)$data['DeviceSerial']);
                HID_SetDeviceVendorID($hid_id, $vendor_id);
                HID_SetDeviceProductID($hid_id, $product_id);
                IPS_ApplyChanges($hid_id);
                //break;
	  endif;
     if (((int)$data['VendorID'] != $vendor_id) && ((int)$data['ProductID'] != $product_id)):
		  echo "Helmuts Gerät nicht gefunden ";
		  SetValueBoolean(31286 /*[HID Funk Modul\HID-USB-Modul Da]*/,true);
       //IPS_SetScriptTimer($IPS_SELF, $interval * 6);
     endif;
?>

Gruß Helmut

HID_Gespeichert.png

HID_VendorID.png

ich hatte aehnliches Verhalten (allerdings immer zwischen 2 IDs pendelnd) mit meiner Oregon Wetter Station an einem USB Lanextender.
War erst weg, als ich die direkt an USB angeschlossen hatte.

Wird das Gerät überhaupt in der Liste gefunden? Wenn nicht, dann ist es vielleicht kommt aus Windows raus?

paresy

Wenn ich die Auswahl-Schaltfläche anklicke, ist es da und wird auch fein übernommen.
Speichern wird angenommen… aber wenn das HID-Gerät kurz abgestöpselt wird und wieder angestöpselt wird, erscheint die gepostete Meldung, dass dieses Gerät, mit Der und Der VID/PID, nicht vorhanden ist.

Damit klappt das „Apply“ dann auch nicht…

Windows hat das Gerät immernoch oder wieder, ein in Purebasic geschriebenes Programm hat es dann auch wieder.

Es kann sein, dass Joachim deshalb so scharf auf CUL ist, weil das HID-FHT8i-Gerät sich nicht wieder verbinden läßt…

Gruß Helmut

PS ev. hilft’s: wenn das Suchscript läuft, das Gerät auch da ist, dann blitzt kurz das Ausrufezeichen der HID/IO-Instanz im Objektbaum auf.

Bei den Ab- und An-Stöpseleien geht häufig der IPS-Server aus (meist beim Abstöpseln) und muß neu gestartet werden.
Wenn er dann wieder läuft, dauert es einige Zeit bis das Such/Verbindungsscript wieder Erfolg hat.

Was mir auch noch auffällt:
Ich lasse das Suchscript laufen, und gebe einen Ventil-Stell-Befehl alle 20 Sek zum Test aus.

Der Befehl geht zum HID-Funk-Interface raus, das Verbindungsscript hat scheinbar auch wieder verbunden (manchmal nach IPS-Server Neustart), aber ein rotes Ausrufezeichen bleibt…Edit: nicht immer, eher selten.