Attualmente sto lavorando a un piccolo progetto che coinvolge un Kinect con il wrapper OpenNI C#. Per questo progetto vengono creati profondità, immagine e nodo utente utilizzando un file di configurazione xml e il metodo Context.CreateFromXmlFile
. Un thread separato viene avviato un ciclo che fa molto semplice (sull'esempio UserTracker.net):wrapper OpenNI C#: WaitAnyUpdateTutti 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
}
}
Questo funziona bene per un po ', finché l'immagine della telecamera riceve non cambia. Dopo poco viene mostrata la seguente eccezione:
A timeout has occured when waiting for new data!
at OpenNI.Context.WaitAnyUpdateAll()
at <file described above>
dopo questa eccezione viene generata tutte le chiamate successive context.WaitAnyUpdateAll
solleverà la stessa eccezione, indipendentemente da ciò che l'ingresso è. Dopo un po 'il messaggio di errore cambia in:
OpenNI.StatusException: The server has disconnected!
at OpenNI.Context.WaitAnyUpdateAll()
at <file described above>
Come posso gestire nuovi input con OpenNI? Capisco che riceviamo un'eccezione di timeout quando non sono disponibili nuovi dati, ma come possiamo recuperare da questa eccezione?