示例#1
0
        public void Initialize(int Size)
        {
            // Initialize vr components
            render = new RenderSubsystem(this, new StaticCamera(Size), Size);
            update = new UpdateSubsystem(this);

            // Load virtual world
            if (protName == null)
            {
                GetStimulus();
            }
            else
            {
                GetStimulus(protName);
            }

            // Initialize Photodiode & Kalman filter
            if (vRProtocol.usePhotodiode)
            {
                pd = new Photodiode(vRProtocol.portPhotodiode);
                pd.StartPhotodiode();
            }
            kft = new KalmanFilterTrack <MovementData>(false, vRProtocol.twoFlies, pd);

            // Initialize data acquisition objects
            if (vRProtocol.usePulsePal)
            {
                pp = new PulsePal <MovementData>(vRProtocol.portPulsePal);
                pp.StartPulsePal();
            }
            if (vRProtocol.useCam1)
            {
                cam1 = new uEyeCamera(0, vRProtocol.paramsPathCam1, vRProtocol.trackCam1, vRProtocol.dispCam1, 0, vRProtocol.fpsCam1, null);
                while (!cam1.m_IsLive)
                {
                }
                if (cam1.m_IsLive)
                {
                    cam1.Start();
                    if (vRProtocol.trackCam1)
                    {
                        fastT = new FastTracking <Frame>(this, cam1.firstFrame, 1, 100, 50, 0, vRProtocol.twoFlies, true);
                        fastT.Start();
                        kft.Start();
                    }
                }
            }
            if (vRProtocol.useCam2)
            {
                if (vRProtocol.usePulsePal)
                {
                    cam2 = new uEyeCamera(1, vRProtocol.paramsPathCam2, vRProtocol.trackCam2, vRProtocol.dispCam2, 800, vRProtocol.fpsCam2, pp);
                }
                else
                {
                    cam2 = new uEyeCamera(1, vRProtocol.paramsPathCam2, vRProtocol.trackCam2, vRProtocol.dispCam2, 800, vRProtocol.fpsCam2, null);
                }

                if (cam2.m_IsLive)
                {
                    cam2.Start();
                    if (vRProtocol.trackCam2)
                    {
                        fastT = new FastTracking <Frame>(this, cam2.firstFrame, 10, 5000, 35, 0, vRProtocol.twoFlies, false);
                        fastT.Start();
                        kft.Start();
                    }
                }
            }

            if (vRProtocol.recordTracking & vRProtocol.useCam2)
            {
                dataRecorder = new DataRecorder <FilteredData>(vRProtocol.recordPathTracking, cam2, true, vRProtocol.twoFlies, this);
                dataRecorder.Start();
            }
            else if (vRProtocol.recordTracking & !vRProtocol.useCam2)
            {
                dataRecorder = new DataRecorder <FilteredData>(vRProtocol.recordPathTracking, true, vRProtocol.twoFlies, this);
                dataRecorder.Start();
            }

            if (vRProtocol.recordStimulus & vRProtocol.useCam2)
            {
                stimRecorder = new StimRecorder <StimData>(vRProtocol.recordPathStimulus, cam2, true, this);
                stimRecorder.Start();
            }
            else if (vRProtocol.recordStimulus & !vRProtocol.useCam2)
            {
                stimRecorder = new StimRecorder <StimData>(vRProtocol.recordPathStimulus, true, this);
                stimRecorder.Start();
            }

            if (vRProtocol.recordPhotodiode & vRProtocol.useCam2)
            {
                photoRecorder = new PhotoRecorder <PhotoData>(vRProtocol.recordPathPhotodiode, cam2, true, this);
                photoRecorder.Start();
            }
            else if (vRProtocol.recordPhotodiode & !vRProtocol.useCam2)
            {
                photoRecorder = new PhotoRecorder <PhotoData>(vRProtocol.recordPathPhotodiode, true, this);
                photoRecorder.Start();
            }
        }