จะเกิดอะไรขึ้นถ้า Kinect ไม่ได้ต่ออยู่ หรือแม้ว่าต่ออยู่ แต่ไม่สามารถเชื่อมต่อได้
แน่นอนว่าโปรแกรมก็จะผิดพลาดแล้วจบไปแบบไม่สวย ทำอย่างไรให้โปรแกรมแจ้งเตือนแล้วค่อยปิดไปแบบนี้
ลองมาเขียนโค้ดตรวจสอบข้อผิดพลาดในการเชื่อมต่อเหล่านี้กันดีกว่าครับ โดยฟังก์ชันที่ต้องไปแก้ไข ก็คือ Window_Loaded() ที่จะถูกเรียกเมื่อหน้าต่างของโปรแกรมถูกสร้างขึ้น
ความผิดพลาดจากการเชื่อมต่อ ตามตำราบอกไว้ว่าอาจเกิดได้สองกรณี คือ
1. ไม่ได้ต่อ Kinect หรือการเชื่อมต่อไม่สมบูรณ์ (เช่นยังไม่ได้ติดตั้ง driver)
อันนี้เราสามารถเช็คได้โดยใช้คำสั่ง KinectSensor.KinectSensors.Count ซึ่งจะบอกว่าตอนนี้มี Kinect ต่อกับคอมของเรากี่อัน (สูงสุดได้ 4 อัน) ถ้าได้ค่า 0 แสดงว่าไม่มี Kinect ต่ออยู่เลย
2. เชื่อมต่อ Kinect ได้ แต่ไม่สามารถเรียกใช้งานได้ ซึ่งอาจเกิดจาก มีแอพอื่นใช้กล้องอยู่ หรือ memory ไม่พอ เป็นต้น
สามารถตรวจสอบได้โดยใช้ try...catch ครอบคำสั่งที่ลองติดต่อ Kinect ได้แก่ KinectSensor.KinectSensors[0] และ myKinect.Start() เป็นต้น
เรามาลองตรวจจับเหตุการณ์ข้างต้น โดยการแก้ไขเฉพาะฟังก์ชัน Window_Loaded() ดังนี้ครับ
private void Window_Loaded_1(object sender, RoutedEventArgs e) { //Check if there is any connecting Kinect if (KinectSensor.KinectSensors.Count == 0) { MessageBox.Show("No Kinect detected!", "Error"); //end this app Application.Current.Shutdown(); } //Try to initialize Kinect try { //Get the first Kinect connected to this computer myKinect = KinectSensor.KinectSensors[0]; //Enable the color video stream myKinect.ColorStream.Enable(); //Start the sensor myKinect.Start(); } catch { MessageBox.Show("Initialize Kinect failed!", "Error"); //end this app Application.Current.Shutdown(); } //Video event handler myKinect.ColorFrameReady += new EventHandler<ColorImageFrameReadyEventArgs>(myKinect_ColorFrameReady); }
No comments:
Post a Comment