Obecnie pracuję nad małym projektem obejmującym urządzenie Kinect z opakowaniem OpenNI C#. W przypadku tego projektu tworzona jest głębokość, obraz i węzeł użytkownika przy użyciu pliku konfiguracyjnego xml i metody Context.CreateFromXmlFile
. Odrębny wątek rozpoczęty który ma bardzo prostą pętlę (na przykładzie UserTracker.net):Opakowanie OpenNI C#: WaitAnyUpdateAll timeout
private void RunThread()
{
while(true)
{
try
{
context.WaitAnyUpdateAll(); //context is an OpenNI context object.
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
//process some data
}
}
to działa dobrze przez jakiś czas, aż do otrzymania obrazu aparat nie zmienia. Po krótkiej chwili następujący wyjątek jest pokazany:
A timeout has occured when waiting for new data!
at OpenNI.Context.WaitAnyUpdateAll()
at <file described above>
po to jest wyjątek wszystkie kolejne połączenia do context.WaitAnyUpdateAll
rzuci tego samego wyjątku, niezależnie od tego, co jest wejście. Po chwili komunikat o błędzie zmienia się na:
OpenNI.StatusException: The server has disconnected!
at OpenNI.Context.WaitAnyUpdateAll()
at <file described above>
Jak mogę sobie poradzić z brakiem nowych danych wejściowych za pomocą OpenNI? Rozumiem, że otrzymujemy wyjątek limitu czasu, gdy nie są dostępne żadne nowe dane, ale jak możemy odzyskać ten wyjątek?