示例#1
0
        //////////////////////////////////////////////////
        #region Static Methods
        /// <summary>
        /// Get device names.
        /// Devices' group is restricted to sensor type.
        /// Devices' subgroup is restricted to video capture type.
        /// </summary>
        /// <returns>Device names</returns>
        public static string[] GetDeviceNames()
        {
            var session = GestureCameraUtil.GetSession();

            var descOriginal = new PXCMSession.ImplDesc();

            descOriginal.group    = PXCMSession.ImplGroup.IMPL_GROUP_SENSOR;
            descOriginal.subgroup = PXCMSession.ImplSubgroup.IMPL_SUBGROUP_VIDEO_CAPTURE;

            var list = new List <string>();

            for (uint i = 0; ; i++)
            {
                PXCMSession.ImplDesc desc;
                if (GestureCameraUtil.HasError(session.QueryImpl(ref descOriginal, i, out desc)))
                {
                    break;
                }

                PXCMCapture capture;
                if (GestureCameraUtil.HasError(session.CreateImpl <PXCMCapture>(ref desc, PXCMCapture.CUID, out capture)))
                {
                    continue;
                }

                for (uint j = 0; ; j++)
                {
                    PXCMCapture.DeviceInfo info;
                    if (GestureCameraUtil.HasError(capture.QueryDevice(j, out info)))
                    {
                        break;
                    }
                    list.Add(info.name.get());
                }

                capture.Dispose();
            }

            return(list.ToArray());
        }