コード例 #1
0
        public void SetPoint(byte[] p)
        {
            State = CalibrateState.RecievingCalibrationPoints;
            p = MessageUtility.GetOnlyData(p);
            int index = p[1];
            int chanel1 = BitConverter.ToInt32(new byte[] { p[5], p[4], p[3], p[2] }, 0);
            int chanel2 = BitConverter.ToInt32(new byte[] { p[9], p[8], p[7], p[6] }, 0);
            int chanel3 = BitConverter.ToInt32(new byte[] { p[13], p[12], p[11], p[10] }, 0);
            int chanel4 = BitConverter.ToInt32(new byte[] { p[17], p[16], p[15], p[14] }, 0);

            chanels[0].SetXPoint(index, chanel1);
            chanels[1].SetXPoint(index, chanel2);
            chanels[2].SetXPoint(index, chanel3);
            chanels[3].SetXPoint(index, chanel4);
        }
コード例 #2
0
        internal void SetInductance(byte[] p)
        {
            State = CalibrateState.RecievingCalibrationInductance;
            p = MessageUtility.GetOnlyData(p);
            int index = p[1];
            int chanel1L = BitConverter.ToInt32(new byte[] { p[5], p[4], p[3], p[2] }, 0);
            int chanel2L = BitConverter.ToInt32(new byte[] { p[9], p[8], p[7], p[6] }, 0);
            int chanel3L = BitConverter.ToInt32(new byte[] { p[13], p[12], p[11], p[10] }, 0);
            int chanel4L = BitConverter.ToInt32(new byte[] { p[17], p[16], p[15], p[14] }, 0);

            int chanel1LTot = 0;
            int chanel2LTot = 0;
            int chanel3LTot = 0;
            int chanel4LTot = 0;

            if (p.Length > 18)
            {
                chanel1LTot = BitConverter.ToInt32(new byte[] { p[25], p[24], p[23], p[22], p[21], p[20], p[19], p[18] }, 0) / 10;
                chanel2LTot = BitConverter.ToInt32(new byte[] { p[33], p[32], p[31], p[30], p[29], p[28], p[27], p[26] }, 0) / 10;
                chanel3LTot = BitConverter.ToInt32(new byte[] { p[41], p[40], p[39], p[38], p[37], p[36], p[35], p[34] }, 0) / 10;
                chanel4LTot = BitConverter.ToInt32(new byte[] { p[49], p[48], p[47], p[46], p[45], p[44], p[43], p[42] }, 0) / 10;
            }

            chanels[0].SetDetectorXPoint(index, chanel1L, chanel1LTot);
            chanels[1].SetDetectorXPoint(index, chanel2L, chanel2LTot);
            chanels[2].SetDetectorXPoint(index, chanel3L, chanel3LTot);
            chanels[3].SetDetectorXPoint(index, chanel4L, chanel4LTot);
        }
コード例 #3
0
        private void calibrateModel_StateChanged(CalibrateState state)
        {
            switch (state)
            {
                case CalibrateState.Start:
                    StatusText.Visibility = Visibility.Visible;
                    StatusText.Text = "";
                    break;
                case CalibrateState.RecievingCalibrationInductance:
                    StatusText.Text = "Recieving Calibration Inductance";
                    break;
                case CalibrateState.RecievingCalibrationPoints:
                    StatusText.Text = "Recieving Calibration Points";
                    break;
                case CalibrateState.DoneCalibrationPoints:
                    StatusText.Text = "Recieved all Calibration Points";
                    foreach (var chanel in calibrateModel.chanels)
                    {
                        chanel.CalcData();
                    }
                    SendResults();
                    break;
                case CalibrateState.Done:
                    tempbtn.IsEnabled = true;
                    StatusText.Text = "Recieved all Calibration Inductance, All Done";
                    break;

            }
        }
コード例 #4
0
 public override void SetData(byte[] data)
 {
     if (State == CalibrateState.RecievingCalibrationPoints)
     {
         State = CalibrateState.DoneCalibrationPoints;
     }
     else if (State == CalibrateState.RecievingCalibrationInductance)
     {
         State = CalibrateState.Done;
         worker.RunWorkerAsync();
     }
 }
コード例 #5
0
    public override void InstallBindings()
    {
        // StateMachineInstaller
        Container.BindInterfacesTo <StateManager> ().AsSingle().NonLazy();

        // Root StateMachine
        RootStateMachine root = new RootStateMachine();

        Container.Bind <IRootStateMachine> ().To <RootStateMachine> ().FromInstance(root);

        CalibrateState calibrateState = new CalibrateState();

        root.AddState(StateName.CALIBRATE_STATE, calibrateState);
        Container.Bind <ICalibrateState> ().To <CalibrateState> ().FromInstance(calibrateState);
        Container.QueueForInject(calibrateState);

        ARStateMachine aRStateMachine = new ARStateMachine();

        root.AddState(StateName.AR_SM, aRStateMachine);
        Container.Bind <IARStateMachine> ().To <ARStateMachine> ().FromInstance(aRStateMachine);

        // AR StateMachine
        BuildStateMachine buildStateMachine = new BuildStateMachine();

        aRStateMachine.AddState(StateName.BUILD_SM, buildStateMachine);
        Container.Bind <IBuildStateMachine> ().To <BuildStateMachine> ().FromInstance(buildStateMachine);
        Container.QueueForInject(buildStateMachine);

        RaceStateMachine raceStateMachine = new RaceStateMachine();

        aRStateMachine.AddState(StateName.RACE_SM, raceStateMachine);
        Container.Bind <IRaceStateMachine> ().To <RaceStateMachine> ().FromInstance(raceStateMachine);

        // Build StateMachine
        BuildDialogState buildDialogState = new BuildDialogState();

        buildStateMachine.AddState(StateName.BUILD_DIALOG_STATE, buildDialogState);
        Container.Bind <IBuildDialogState> ().To <BuildDialogState> ().FromInstance(buildDialogState);
        Container.QueueForInject(buildDialogState);

        BuildPaintState buildPaintState = new BuildPaintState();

        buildStateMachine.AddState(StateName.BUILD_PAINT_STATE, buildPaintState);
        Container.Bind <IBuildPaintState> ().To <BuildPaintState> ().FromInstance(buildPaintState);
        Container.QueueForInject(buildPaintState);

        BuildEditorState buildEditorState = new BuildEditorState();

        buildStateMachine.AddState(StateName.BUILD_EDITOR_STATE, buildEditorState);
        Container.Bind <IBuildEditorState> ().To <BuildEditorState> ().FromInstance(buildEditorState);
        Container.QueueForInject(buildEditorState);

        BuildSaveState buildSaveState = new BuildSaveState();

        buildStateMachine.AddState(StateName.BUILD_SAVE_STATE, buildSaveState);
        Container.Bind <IBuildSaveState> ().To <BuildSaveState> ().FromInstance(buildSaveState);

        BuildLoadState buildLoadState = new BuildLoadState();

        buildStateMachine.AddState(StateName.BUILD_LOAD_STATE, buildLoadState);
        Container.Bind <IBuildLoadState> ().To <BuildLoadState> ().FromInstance(buildLoadState);
        Container.QueueForInject(buildLoadState);

        BuildObserveDialogState buildObserveDialogState = new BuildObserveDialogState();

        buildStateMachine.AddState(StateName.BUILD_OBSERVE_DIALOG_STATE, buildObserveDialogState);
        Container.Bind <IBuildObserveDialogState> ().To <BuildObserveDialogState> ().FromInstance(buildObserveDialogState);

        BuildObserveState buildObserveState = new BuildObserveState();

        buildStateMachine.AddState(StateName.BUILD_OBSERVE_STATE, buildObserveState);
        Container.Bind <IBuildObserveState> ().To <BuildObserveState> ().FromInstance(buildObserveState);
        Container.QueueForInject(buildObserveState);

        // Race StateMachine
        RaceSetupState raceSetupState = new RaceSetupState();

        raceStateMachine.AddState(StateName.RACE_SETUP, raceSetupState);
        Container.Bind <IRaceSetupState> ().To <RaceSetupState> ().FromInstance(raceSetupState);
        Container.QueueForInject(raceSetupState);

        RacingState racingState = new RacingState();

        raceStateMachine.AddState(StateName.RACE_RACING, racingState);
        Container.Bind <IRacingState> ().To <RacingState> ().FromInstance(racingState);
        Container.QueueForInject(racingState);

        RaceOverState raceOverState = new RaceOverState();

        raceStateMachine.AddState(StateName.RACE_OVER, raceOverState);
        Container.Bind <IRaceOverState> ().To <RaceOverState> ().FromInstance(raceOverState);
        Container.QueueForInject(raceOverState);
    }
コード例 #6
0
        /// <summary>
        /// performs steps necessary for Kinect pan two-points calibration (center and left)
        /// </summary>
        private void calibrateKinectButton_Click(object sender, RoutedEventArgs e)
        {
            testState = TestState.None;
            EnableDisableControls(false);

            switch (calibrateState)
            {
                case CalibrateState.None:
                    panKinectCalibrateScrollBar.Value = _panTiltAlignment.mksPanKinect(0.0d);
                    calibrateKinectButton.Content = "Align Laser With Center";
                    calibrateState = CalibrateState.ChoosingFirst;
                    break;
                case CalibrateState.ChoosingFirst:
                    panKinectMksFirst = panKinectMks;
                    panKinectCalibrateScrollBar.Value = _panTiltAlignment.mksPanKinect(-spanHKinect);
                    calibrateKinectButton.Content = "Align Laser With Left";
                    calibrateState = CalibrateState.ChoosingSecond;
                    break;
                case CalibrateState.ChoosingSecond:
                    panKinectMksSecond = panKinectMks;
                    computeCalibrationKinect();

                    calibrateKinectButton.Content = "Calculated";
                    calibrateState = CalibrateState.Done;
                    break;
                case CalibrateState.Done:
                    calibrateKinectButton.Content = "Calibrate Kinect";
                    calibrateState = CalibrateState.None;
                    EnableDisableControls(true);
                    break;
            }
        }
コード例 #7
0
        /// <summary>
        /// performs steps necessary for two-points calibration (center and upper left)
        /// </summary>
        private void calibrateButton_Click(object sender, RoutedEventArgs e)
        {
            testState = TestState.None;
            EnableDisableControls(false);
            bool rightGun = rightGunCheckBox.IsChecked.GetValueOrDefault();

            switch (calibrateState)
            {
                case CalibrateState.None:
                    //_panTiltAlignment.panAlign = 0.0d;
                    //_panTiltAlignment.tiltAlign = 0.0d;
                    //_panTiltAlignment.panFactor = 10.0d;
                    //_panTiltAlignment.tiltFactor = 10.0d;
                    if (rightGun)
                    {
                        panCalibrateScrollBar.Value = _panTiltAlignment.mksPanGunRight(0.0d);
                        tiltCalibrateScrollBar.Value = _panTiltAlignment.mksTiltGunRight(0.0d);
                    }
                    else
                    {
                        panCalibrateScrollBar.Value = _panTiltAlignment.mksPanGunLeft(0.0d);
                        tiltCalibrateScrollBar.Value = _panTiltAlignment.mksTiltGunLeft(0.0d);
                    }
                    calibrateButton.Content = "Point to Center";
                    calibrateState = CalibrateState.ChoosingFirst;
                    break;
                case CalibrateState.ChoosingFirst:
                    panMksFirst = panMks;
                    tiltMksFirst = tiltMks;
                    if (rightGun)
                    {
                        panCalibrateScrollBar.Value = _panTiltAlignment.mksPanGunRight(spanH);
                        tiltCalibrateScrollBar.Value = _panTiltAlignment.mksTiltGunRight(spanV);
                    }
                    else
                    {
                        panCalibrateScrollBar.Value = _panTiltAlignment.mksPanGunLeft(spanH);
                        tiltCalibrateScrollBar.Value = _panTiltAlignment.mksTiltGunLeft(spanV);
                    }
                    calibrateButton.Content = "Point to Upper Left";
                    calibrateState = CalibrateState.ChoosingSecond;
                    break;
                case CalibrateState.ChoosingSecond:
                    panMksSecond = panMks;
                    tiltMksSecond = tiltMks;
                    computeCalibration(rightGun);

                    if (rightGun)
                    {
                        panAlignScrollBar.Value = _panTiltAlignment.panAlignGunRight;
                        panFactorScrollBar.Value = _panTiltAlignment.panFactorGunRight;
                        tiltAlignScrollBar.Value = _panTiltAlignment.tiltAlignGunRight;
                        tiltFactorScrollBar.Value = _panTiltAlignment.tiltFactorGunRight;
                    }
                    else
                    {
                        panAlignScrollBar.Value = _panTiltAlignment.panAlignGunLeft;
                        panFactorScrollBar.Value = _panTiltAlignment.panFactorGunLeft;
                        tiltAlignScrollBar.Value = _panTiltAlignment.tiltAlignGunLeft;
                        tiltFactorScrollBar.Value = _panTiltAlignment.tiltFactorGunLeft;
                    }

                    calibrateButton.Content = "Calculated";
                    calibrateState = CalibrateState.Done;
                    break;
                case CalibrateState.Done:
                    calibrateButton.Content = "Calibrate";
                    calibrateState = CalibrateState.None;
                    EnableDisableControls(true);
                    break;
            }
        }
コード例 #8
0
        /// <summary>
        /// test Kinect calibration by going through two sides of the sighting frame
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void testKinectButton_Click(object sender, RoutedEventArgs e)
        {
            calibrateState = CalibrateState.None;
            calibrateKinectButton.Content = "Calibrate Kinect";

            switch (testState)
            {
                case TestState.None:
                    setPanKinect(-spanHKinect);
                    testState = TestState.LowerRight;    // left
                    testKinectButton.Content = "next>";
                    break;

                case TestState.LowerRight:
                    setPanKinect(spanHKinect);
                    testState = TestState.LowerLeft;
                    testKinectButton.Content = "finish>";
                    break;

                case TestState.LowerLeft:
                    setPanKinect(0.0d);
                    testState = TestState.None;
                    testKinectButton.Content = "Test Kinect";
                    break;
            }
        }
コード例 #9
0
        /// <summary>
        /// test calibration by going through all four corners of the sighting frame
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void testButton_Click(object sender, RoutedEventArgs e)
        {
            calibrateState = CalibrateState.None;
            calibrateButton.Content = "Calibrate";

            switch (testState)
            {
                case TestState.None:
                    setPan(-spanH);
                    setTilt(spanV);
                    testState = TestState.UpperLeft;
                    testButton.Content = "next>";
                    break;

                case TestState.UpperLeft:
                    setPan(spanH);
                    setTilt(spanV);
                    testState = TestState.UpperRight;
                    break;

                case TestState.UpperRight:
                    setPan(spanH);
                    setTilt(-spanV);
                    testState = TestState.LowerRight;
                    break;

                case TestState.LowerRight:
                    setPan(-spanH);
                    setTilt(-spanV);
                    testState = TestState.LowerLeft;
                    testButton.Content = "finish>";
                    break;

                case TestState.LowerLeft:
                    testState = TestState.None;
                    testButton.Content = "Test";
                    setPan(0);
                    setTilt(0);
                    break;
            }
        }