Hallo zusammen, erst mal alles Gute für 2010.
Hatte gestern bei mir einen Stromausfall und danach ist mir mein
altes Problem wieder aufgefallen:
Meine HDI I/O Instanzen waren nach dem reboot nicht geöffnet.
Diese Rotine habe ich bereits implementiert:
// Velleman Board
$status = IPS_GetInstance(54880 /*[HID]*/);
if ($status["InstanceStatus"] == 102)
SetValueBoolean(32500 /*[Gerätezustand\IO Vellemann]*/, true);
elseif ($status["InstanceStatus"] >= 200)
{ IPS_ApplyChanges(54880 /*[HID]*/);
IPS_Sleep(500);
$status = IPS_GetInstance(54880 /*[HID]*/);
if ($status["InstanceStatus"] >= 200)
{ SetValueBoolean(32500 /*[Gerätezustand\IO Vellemann]*/, false);
$Fehler = true;
}
}
Fuktioniert, wenn der Rechner an ist und ein USB-Kabel gezogen wurde.
Bei einem restart nicht.
Dankbar für eure Tipps,
Jürgen
RWN
1. Januar 2010 um 13:02
#2
Hallo Jürgen,
ich würde erst prüfen ob der Port offen ist.
HID_GetOpen(12345);
und wenn nicht
HID_SetOpen(12345, true);
Du könntest dir auch ein Startscript bauen, welches Du unter Kern Instanzen => Event Handler hinzufügst, der dir dann alle deine Problemfälle prüft und gegebenenfalls öffnet.
für HID z.B.
$HID = HID_GetOpen(12345);
if (!$HID)
{
HID_SetOpen(12345/*[HID]*/, true);
IPS_ApplyChanges(12345/*[HID]*/);
}
Hallo Rainer,
ich habs gelöst:
// Velleman Board
$status = IPS_GetInstance(54880 /*[HID]*/);
if ( !HID_GetOpen(54880 /*[HID]*/) )
HID_SetOpen(54880 /*[HID]*/, true);
else
if ($status["InstanceStatus"] == 102)
SetValueBoolean(32500 /*[Gerätezustand\IO Vellemann]*/, true);
elseif ($status["InstanceStatus"] >= 200)
{ HID_SetDeviceSerial(54880 /*[HID]*/, 2624);
HID_SetDeviceVendorID(54880 /*[HID]*/, 4303);
HID_SetDeviceProductID(54880 /*[HID]*/, 21763);
IPS_ApplyChanges(54880 /*[HID]*/);
IPS_Sleep(500);
$status = IPS_GetInstance(54880 /*[HID]*/);
if ($status["InstanceStatus"] >= 200)
{ SetValueBoolean(32500 /*[Gerätezustand\IO Vellemann]*/, false);
$Fehler = true;
}
}
Liebe Grüße
Jürgen
Bitte PHP Tags benutzen, dann können wir es alle besser lesen.
Hallo,
ich häng mich mal hier ran.
Ich habe das gleiche Problem mit meiner WMRS200.
Ich starte meine HID mit:
HID_SetDeviceSerial(41030 /*[HID]*/,"2088");
IPS_ApplyChanges(41030 /*[HID]*/);
Aber leider ändert sich meine Serial nach einen Neustart.
Ich habe schon alle Möglichkeiten durchprobiert:
HID_SetOpen(41030 /*[HID]*/
HID_SetDeviceSerial(41030 /*[HID]*/
HID_SetDeviceVendorID(41030 /*[HID]*/
HID_SetDeviceProductID(41030 /*[HID]*/
Aber es geht nur mit dieser DeviceSerial und diese ändert sich jedesmal.
Hat jemand einen Tip oder Codeschnipsel für mich?
Danke.
Gruß
Christian
PS: bei diesen Test habe ich folgende Ausgabe:
<?
$status = HID_GetDevices(41030 /*[HID]*/);
$serial = $status['0']["DeviceSerial"]."
";
echo $serial;
HID_SetDeviceSerial(41030 /*[HID]*/,$serial);
IPS_sleep (80);
IPS_ApplyChanges(41030 /*[HID]*/);
echo (HID_GetOpen(41030 /*[HID]*/)."
");
echo (HID_GetDeviceSerial(41030 /*[HID]*/)."
");
echo (HID_GetDeviceVendorID(41030 /*[HID]*/)."
");
echo (HID_GetDeviceProductID(41030 /*[HID]*/)."
");
print_r (HID_GetDevices(41030 /*[HID]*/));
Ergibt:
2088
Warning: Ausgewähltes Gerät konnte nicht gefunden werden in [Test2] on line 7
1
2088
4062
51713
Array
(
[0] => Array
(
[DeviceName] => Universal Bridge
[DeviceSerial] => 2088
[DeviceVendor] => ?
[ProductID] => 51713
[VendorID] => 4062
)
)