Inquiridor
Desenvolvimento de eventos utilizando Kinect for windows

Discussão Geral
-
Olá amigos,
Estou desenvolvendo duas aplicações que vão compartilhar SkeletonFrameReady event.
Porem não estou conseguindo criar o código que vai receber o evento.
O primeiro programa é o principal que faz a conexão com o kinect o segundo é para conectar ao eventos. e não funciona!
namespace User_tracking { class Program { static void Main(string[] args) { Kinect k = new Kinect(); k.StartKinectST(); while (true) { } } } class Kinect { private KinectSensor kinect = null; private Skeleton[] skeletonData; private int count = 0; public void StartKinectST() { kinect = KinectSensor.KinectSensors.FirstOrDefault(s => s.Status == KinectStatus.Connected); // Get first Kinect Sensor if (kinect != null) { Console.WriteLine(kinect.DeviceConnectionId); kinect.SkeletonStream.Enable(); // Enable skeletal tracking skeletonData = new Skeleton[kinect.SkeletonStream.FrameSkeletonArrayLength]; // Allocate ST data kinect.SkeletonFrameReady += new EventHandler<SkeletonFrameReadyEventArgs>(Kinect_SkeletonFrameReady); //kinect.SkeletonFrameReady += this.kinect_SkeletonFrameReady; Debug.WriteLine("skeleton enable"); } try { kinect.Start(); } catch (IOException) { kinect = null; } if (null == kinect) { Console.WriteLine("Kinect failed to start..."); } else { Console.WriteLine("Kinect started..."); } Console.WriteLine(kinect.IsRunning); } public void Kinect_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { //Debug.WriteLine("In kinect skeleton event handler"); using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame()) // Open the Skeleton frame { if (skeletonFrame != null && this.skeletonData != null) // check that a frame is available { skeletonFrame.CopySkeletonDataTo(this.skeletonData); // get the skeletal information in this frame } } // Debug.WriteLine(this.skeletonData.Length); foreach (Skeleton skel in this.skeletonData) { if (skel.TrackingState == SkeletonTrackingState.Tracked) { count++; if (count > 50) { Console.WriteLine("id: " + skel.TrackingId + "shoulder L X:" + skel.Joints[JointType.ShoulderLeft].Position.X + " Y: " + skel.Joints[JointType.ShoulderLeft].Position.Y + " Z: " + skel.Joints[JointType.ShoulderLeft].Position.Z); Console.WriteLine("id: " + skel.TrackingId + "shoulder C X:" + skel.Joints[JointType.ShoulderCenter].Position.X + " Y: " + skel.Joints[JointType.ShoulderCenter].Position.Y + " Z: " + skel.Joints[JointType.ShoulderCenter].Position.Z); Console.WriteLine("id: " + skel.TrackingId + "shoulder R X:" + skel.Joints[JointType.ShoulderRight].Position.X + " Y: " + skel.Joints[JointType.ShoulderRight].Position.Y + " Z: " + skel.Joints[JointType.ShoulderRight].Position.Z); //Console.WriteLine("id: " + skel.TrackingId + " X: " + skel.Position.X + " Y: " + skel.Position.Y + " Z: " + skel.Position.Z); count = 0; } } } } } }
Outro programa esta apenas referenciando a função para o evento da classe.
class Kinect { private KinectSensor kinect = null; private Skeleton[] skeletonData; private int count = 0; public void StartKinectST() { kinect = KinectSensor.KinectSensors.FirstOrDefault(s => s.Status == KinectStatus.Connected); // Get first Kinect Sensor if (kinect != null) { Console.WriteLine(kinect.IsRunning); kinect.SkeletonFrameReady += this.Kinect_SkeletonFrameReady; } else { Console.WriteLine("Not Conected\n"); } } public void Kinect_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { Console.WriteLine("teste\n"); } } }
Todas as Respostas
-
Boa tarde Rafael S Mattos,
Tudo bem?
Poderia informar o erro que o código está gerando?
Atenciosamente
Marcos SJ Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Marcos obrigado pela atenção!
Erro de sintaxe não tem. O que esta ocorrendo é que preciso que esses dois código trabalhem junto através de eventos. O primeiro código faz a conexão com o kinect e o segundo apenas atribui o eventos dentro da classes e aguarda o disparo do eventos.
Assim como postei não esta funcionando.
O primeiro código esta conectado com kinect e respondendo ao eventos atribuído dentro dele e o segundo código não consegue atribuir a referencia do evento.
Sou iniciando meus desenvolvimento com evento pode ser que estou errando em conceito também.
Rafael Mattos
-
Bom dia Rafael S Mattos,
Tudo bem?
Entendi. Bem, como o fórum não presta suporte a "How to", eu vou modificar sua thread para discussão geral para que ao menos continue disponível no fórum caso algum usuário esteja disposto a analisar seu código e te auxiliar no desenvolvimento.
Atenciosamente
Marcos SJ Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.