Example #1
0
        private NuiSensor MakeSensor(MessageReader reader)
        {
            int         id               = reader.ReadInt();
            string      name             = reader.ReadString();
            string      company          = reader.ReadString();
            SensorState state            = (SensorState)reader.ReadInt();
            int         colorFrameWidth  = reader.ReadInt();
            int         colorFrameHeight = reader.ReadInt();
            int         colorFramebpp    = reader.ReadInt();
            int         depthFrameWidth  = reader.ReadInt();
            int         depthfreamHeight = reader.ReadInt();
            int         depthFramebpp    = reader.ReadInt();
            int         maxTrackingBody  = reader.ReadInt();


            NuiSensor sensor = new NuiSensor(this, name, company, id, state, colorFrameWidth, colorFrameHeight, colorFramebpp, depthFrameWidth, depthfreamHeight, depthFramebpp, maxTrackingBody);

            connectedSensors.Add(sensor.id, sensor);

            if (OnSensorConnected != null)
            {
                Queue_Event(OnSensorConnected, sensor);
            }

            return(sensor);
        }
 internal BodyData(Dictionary <JointType, NuiJoint> joints, Dictionary <JointType, NuiJointOrientation> orientations, bool valid, int id, NuiSensor sensor, HandStatus leftHand, HandStatus rightHand)
 {
     this.Joints       = joints;
     this.Orientations = orientations;
     this.Id           = id;
     this.Valid        = valid;
     this.Sensor       = sensor;
     this.LeftHand     = leftHand;
     this.RightHand    = rightHand;
 }
Example #3
0
        public NuiSensor[] GetSensors()
        {
            if (!isConnected)
            {
                throw new NotConnectedException();
            }

            NuiSensor[] array = new NuiSensor[connectedSensors.Count];
            connectedSensors.Values.CopyTo(array, 0);
            return(array);
        }
Example #4
0
        public ColorChannel(string mappedName, NuiSensor sensor)
        {
            _sensor            = sensor;
            _mappedFile        = MemoryMappedFile.OpenExisting(mappedName);
            mappedFileAccessor = _mappedFile.CreateViewAccessor();
            mappedFileAccessor.SafeMemoryMappedViewHandle_AcquirePointer(ref MappedPointer);

            lockDatas = new int *[BlockCount];
            for (int i = 0; i < BlockCount; i++)
            {
                lockDatas[i] = (int *)(sizeof(int) * i + MappedPointer);
            }
        }
Example #5
0
        public bool OpenBodyFrame(NuiSensor sensor)
        {
            if (connectedSensors.ContainsValue(sensor) == false)
            {
                return(false);
            }

            //스켈레톤 쉐어드메모리를 생성해달라고 요청합니다.
            MessageWriter sm_message = new MessageWriter(CTSHeader.REQUEST_BODY_SM_NAME);

            sm_message.WriteInt(sensor.id);
            pipeStream_Send.Send(sm_message);
            return(true);
        }
Example #6
0
        //IPC
        void pipeStream_Get_OnMessageReceived(MessageReader reader)
        {
            int       sensorID;
            bool      isCreated;
            string    mappedName;
            NuiSensor sensor = null;

            STCHeader header = (STCHeader)reader.ReadShort();

            switch (header)
            {
                #region Channel Making
            case STCHeader.SEND_COLORFRAME_SM_NAME:
                sensorID  = reader.ReadInt();
                isCreated = reader.ReadBool();

                if (connectedSensors.ContainsKey(sensorID) == false)
                {
                    return;
                }

                sensor = connectedSensors[sensorID];
                if (!isCreated)    //생성실패
                {
                    sensor.OpenColorFrameCallback(false, null);
                    return;
                }

                mappedName = reader.ReadString();
                //[수정요망] 맨 뒤쪽 channel 지금은 4로 강제해놓음.
                sensor.OpenColorFrameCallback(true, new ColorChannel(mappedName, sensor));
                break;

            case STCHeader.SEND_DEPTHFRAME_SM_NAME:
                sensorID  = reader.ReadInt();
                isCreated = reader.ReadBool();

                if (connectedSensors.ContainsKey(sensorID) == false)
                {
                    return;
                }

                sensor = connectedSensors[sensorID];
                if (!isCreated)    //생성실패
                {
                    sensor.OpenDepthFrameCallback(false, null);
                    return;
                }

                mappedName = reader.ReadString();
                sensor.OpenDepthFrameCallback(true, new DepthChannel(mappedName, sensor));
                break;

            case STCHeader.SEND_BODY_SM_NAME:
                sensorID  = reader.ReadInt();
                isCreated = reader.ReadBool();

                if (connectedSensors.ContainsKey(sensorID) == false)
                {
                    return;
                }

                sensor = connectedSensors[sensorID];
                if (!isCreated)    //생성실패
                {
                    sensor.OpenColorFrameCallback(false, null);
                    return;
                }

                mappedName = reader.ReadString();
                sensor.OpenBodyFrameCallback(true, new BodyChannel(mappedName, sensor));
                break;

                #endregion
                #region Sensor Datas
            //모든 센서 정보 보냄(처음에)
            case STCHeader.SEND_ALL_SENSOR_INFO:
                int sensorCount = reader.ReadInt();
                for (int i = 0; i < sensorCount; i++)
                {
                    sensor = MakeSensor(reader);
                }
                break;

            //새로 연결된 센서 정보 보냄
            case STCHeader.SEND_NEW_SENSOR_INFO:
                sensor = MakeSensor(reader);
                break;

            //state가 바뀐 센서 정보 보냄(여기서 삭제도 함.
            case STCHeader.SEND_SENSOR_STATE:
                int         id    = reader.ReadInt();
                SensorState state = (SensorState)reader.ReadInt();
                if (connectedSensors.ContainsKey(id))
                {
                    sensor       = connectedSensors[id];
                    sensor.state = state;
                    if (state == SensorState.UNKNOWN)
                    {
                        sensor.DisconnectedCallback();
                        connectedSensors.Remove(id);

                        if (OnSensorDisconnected != null)
                        {
                            Queue_Event(OnSensorDisconnected, sensor);
                        }
                    }
                }

                break;

            case STCHeader.SEND_TRIGGER_EVENT_DATA:
                ReceiveTriggerEvent(reader);
                break;
                #endregion
            }
        }
Example #7
0
 internal AuthorityException(AuthorityTypes noAuthority, NuiSensor sensor)
 {
     this.noAuthority = noAuthority;
     this.Sensor      = sensor;
 }