예제 #1
0
        public void Close()
        {
            lock (mutex)
            {
                if (controllerState.Equals(CMSState.Quitting))
                {
                    return;
                }

                if (CMSLogger.CanCreateLogEvent(false, false, false, "CMSLogEndEvent"))
                {
                    CMSLogEndEvent endEvent = new CMSLogEndEvent();
                    endEvent.SetDateTime(DateTime.Now);
                    if (endEvent != null)
                    {
                        CMSLogger.SendLogEvent(endEvent);
                    }
                }

                videoSource.StopSource();
                controllerState = CMSState.Quitting;
                CMSTrackingSuite selectedSuite = model.SelectedSuite;
                if (selectedSuite != null)
                {
                    selectedSuite.Clean();
                }
                videoDisplay.Quit();
                controlToggler.Stop();
                CMSLogger.StopLogging();
            }
        }
예제 #2
0
        /******************** Other Functions ****************/

        private void SetState(CMSState state)
        {
            lock (mutex)
            {
                /*
                 * if (state.Equals(CMSState.Tracking))
                 * {
                 *  videoDisplay.SetTrackingControlMessage(false, "");
                 * }
                 * else if (state.Equals(CMSState.ControlTracking))
                 * {
                 *  videoDisplay.SetTrackingControlMessage(true, "");
                 * }
                 * else if (state.Equals(CMSState.Setup))
                 * {
                 *  videoDisplay.ReceiveMessage("", Color.Black);
                 *  //videoDisplay.SetTrackingControlMessage(false, false);
                 * }*/
                controllerState = state;
                CMSTrackingSuite curSuite = model.SelectedSuite;
                if (curSuite != null)
                {
                    curSuite.StateChange(state);
                }

                if (CMSLogger.CanCreateLogEvent(false, false, false, "CMSLogStateChangeEvent"))
                {
                    CMSLogStateChangeEvent stateChangeEvent = new CMSLogStateChangeEvent();
                    stateChangeEvent.State = state.ToString();
                    CMSLogger.SendLogEvent(stateChangeEvent);
                }
            }
        }
예제 #3
0
 public override void StateChange(CMSState state)
 {
     if (state.Equals(CMSState.Tracking) || state.Equals(CMSState.ControlTracking))
     {
         trackingSuiteAdapter.SendMessage(", Press Tab to reset");
     }
 }
예제 #4
0
 /*
  * public override CMSModule Clone()
  * {
  *  blinkLinkEyeClickData.LockEyeClickData();
  *  try
  *  {
  *      BlinkLinkClickControlModule clickModule = new BlinkLinkClickControlModule();
  *
  *      clickModule.blinkLinkEyeClickData.SetData(blinkLinkEyeClickData);
  *      return clickModule;
  *  }
  *  finally
  *  {
  *      blinkLinkEyeClickData.UnlockEyeClickData();
  *  }
  * }
  */
 public override void StateChange(CMSState state)
 {
     if (state == CMSState.ControlTracking || state == CMSState.Tracking)
     {
         trackingSuiteAdapter.SendMessage(RunningMessage);
     }
 }
예제 #5
0
        public void StateChange(CMSState state)
        {
            lock (mutex)
            {
                if (state.Equals(CMSState.Tracking) ||
                    state.Equals(CMSState.ControlTracking))
                {
                    CMSTrackingSuiteAdapter.SendMessage("");
                }

                if (trackingModule != null)
                {
                    trackingModule.State = state;
                    trackingModule.StateChange(state);
                }

                if (mouseControlModule != null)
                {
                    mouseControlModule.State = state;
                    mouseControlModule.StateChange(state);
                }

                if (clickControlModule != null)
                {
                    clickControlModule.State = state;
                    clickControlModule.StateChange(state);
                }
            }
        }
 public override void StateChange(CMSState state)
 {
     if (state.Equals(CMSState.ControlTracking))
     {
         firstFrameInControl = true;
         ShowExcludeForms();
     }
     else
     {
         HideExcludeForms();
     }
 }
        private void StartThreadLoop()
        {
            while (!quit)
            {
                CMSState curState = getState();
                if (controlTogglerConfig.AutoStartControlEnabled && curState.Equals(CMSState.Tracking))
                {
                    TestControlAutoStart();
                }

                else if (controlTogglerConfig.AutoStopControlEnabled && curState.Equals(CMSState.ControlTracking))
                {
                    TestControlAutoStop();
                }
                Thread.Sleep(controlTogglerConfig.IntervalTime);
            }
        }
        public void ProcessKeys(Keys keys)
        {
            if (!quit)
            {
                lock (keyMutex)
                {
                    CMSState currentState = getState();

                    if (currentState.Equals(CMSState.Tracking))
                    {
                        if ((this.controlTogglerConfig.CtrlStart && (keys.Equals(Keys.LControlKey) || keys.Equals(Keys.RControlKey))) ||
                            (this.controlTogglerConfig.ScrollStart && keys.Equals(Keys.Scroll)))
                        {
                            if (toggleControl(true))
                            {
                                if (this.controlTogglerConfig.PlaySoundOnControlChanges)
                                {
                                    soundPlayer.PlayChangeState();
                                }
                            }
                        }
                    }
                    else if (currentState.Equals(CMSState.ControlTracking))
                    {
                        if ((this.controlTogglerConfig.CtrlStop && (keys.Equals(Keys.LControlKey) || keys.Equals(Keys.RControlKey))) ||
                            (this.controlTogglerConfig.ScrollStop && keys.Equals(Keys.Scroll)))
                        {
                            if (toggleControl(false))
                            {
                                if (this.controlTogglerConfig.PlaySoundOnControlChanges)
                                {
                                    soundPlayer.PlayChangeState();
                                }
                            }
                        }
                    }
                }
            }
        }
예제 #9
0
 public override void StateChange(CMSState state)
 {
 }
예제 #10
0
 public abstract void StateChange(CMSState state);
예제 #11
0
 public override void StateChange(CMSState state)
 {
     controlEnabled = state.Equals(CMSState.ControlTracking);
 }
예제 #12
0
        public void Start(CMSVideoSource videoSource, CMSVideoDisplay videoDisplay, CMSControlToggler controlToggler)
        {
            mutex = new object();

            try
            {
                ProcessKeys[] procKeysDelegates = null;
                lock (mutex)
                {
                    CMSConstants.Init();
                    controllerState = CMSState.Starting;


                    model = new CMSModel();
                    model.Init("./" + CMSConstants.SUITE_LIB_DIR, "./" + CMSConstants.SUITE_CONFIG_DIR,
                               "./" + CMSConstants.MAIN_CONFIG_FILE,
                               "./" + CMSConstants.MAIN_CAMERA_CONFIG_FILE,
                               "./" + CMSConstants.MAIN_LOG_CONFIG_FILE,
                               "./" + CMSConstants.MAIN_ID_CONFIG_FILE);

                    model.Load();
                    model.IncrementAndSaveSessionNum();

                    CMSLogger.SetUidReceivedDelegate(model.UidUpdated);
                    CMSLogger.Init(model.LogConfig, model.IdConfig);

                    //CMSLogger.CanCreateLogEvent(

                    if (CMSLogger.CanCreateLogEvent(false, false, false, "CMSLogStartEvent"))
                    {
                        CMSLogStartEvent startEvent = new CMSLogStartEvent();
                        startEvent.SetDateTime(DateTime.Now);
                        CMSLogger.SendLogEvent(startEvent);
                    }

                    this.videoSource         = videoSource;
                    videoSource.CameraLost  += new CameraLost(CameraLost);
                    videoSource.CameraFound += new CameraFound(CameraFound);
                    videoSource.VideoInputSizesDetermined += new VideoInputSizesDetermined(VideoInputSizesDetermined);
                    videoSource.ProcessFrame += new ProcessFrame(ProcessFrameFromSource);
                    videoSource.Init(videoDisplay.GetParentForm());


                    this.videoDisplay = videoDisplay;
                    videoDisplay.Init(new CMSViewAdapter(model, this, videoSource));

                    model.SelectedSuite.CMSTrackingSuiteAdapter = new CMSStandardTrackingSuiteAdapter(model, this, videoDisplay);

                    string currentMoniker = model.CurrentMonikor;
                    if (videoSource.StartSource(currentMoniker))
                    {
                        string newMoniker = videoSource.GetCurrentMonikor();
                        model.CurrentMonikor = newMoniker;
                        controllerState      = CMSState.Setup;
                    }
                    else
                    {
                        controllerState = CMSState.CameraNotFound;
                    }


                    this.controlToggler                 = controlToggler;
                    controlToggler.GetState             = GetState;
                    controlToggler.ToggleControl        = ToggleControl;
                    controlToggler.GetCursorPos         = GetCursorPos;
                    controlToggler.ControlTogglerConfig = model.GeneralConfig.ControlTogglerConfig;
                    controlToggler.Start();


                    procKeysDelegates    = new ProcessKeys[2];
                    procKeysDelegates[0] = ProcessKeys;
                    procKeysDelegates[1] = controlToggler.ProcessKeys;
                }
                CMSKeyHook.initHook(procKeysDelegates);
                Application.Run(videoDisplay.GetParentForm());
                CMSKeyHook.removeHook();
            }
            catch (Exception e)
            {
                try
                {
                    if (CMSLogger.CanCreateLogEvent(true, true, false, "CMSLogExceptionEvent"))
                    {
                        CMSLogExceptionEvent exceptionEvent = new CMSLogExceptionEvent();

                        exceptionEvent.SetException(e);
                        CMSLogger.SendLogEvent(exceptionEvent);
                    }
                }
                catch
                {
                }
                MessageBox.Show("Error occurred during startup:" + e.Message);
                Application.Exit();
            }
        }