Exemplo n.º 1
0
 /// <summary>
 /// Sends exercice frame.
 /// </summary>
 /// <param name="commandCode">
 /// Command data to be sent.
 /// </param>
 public void SendExerciceGameFrame(FrameExerciceDataModel exerciceData)
 {
     // TODO : ajouter la commande dans la FILE pour ACK + timer
     //SendByteArray(FrameConstruction.ConstructWriteExerciceDataFrame(exerciceData));
     AddTrameOut(FrameConstruction.ConstructWriteExerciceDataFrame(exerciceData));
     //FramesWrittenCounter.CommandFrames++;
 }
Exemplo n.º 2
0
 protected virtual void OnFrameExerciceDataReceived(FrameExerciceDataModel e)
 {
     if (FrameExerciceDataReceived != null)
     {
         FrameExerciceDataReceived(this, e);
     }
 }
        private void SendViscosite()
        {
            var reguConfig = new RegulateurConfig();

            // Adaptation de la config en fonction du niveau de visc.
            switch (this.Viscosite)
            {
            case 0: reguConfig.CGlob = 15;
                break;

            case 1: reguConfig.CGlob = 30;
                break;

            case 2: reguConfig.CGlob = 45;
                break;

            case 3: reguConfig.CGlob = 60;
                break;

            default: reguConfig.CGlob = 15;
                break;
            }

            FrameExerciceDataModel newConfig = new FrameExerciceDataModel();

            newConfig.Address = ConfigAddresses.Regulateur;
            newConfig.Data1   = reguConfig.Kp;
            newConfig.Data2   = reguConfig.Ki;
            newConfig.Data3   = reguConfig.CGlob;
            newConfig.Data4   = 0;

            this.pss.Pss.SendExerciceFrame(newConfig);
        }
Exemplo n.º 4
0
        public static FrameExerciceDataModel BorneToFrame(ExerciceBorneConfig newExerciceConf)
        {
            FrameExerciceDataModel _configFrame = new FrameExerciceDataModel();

            _configFrame.Address = ConfigAddresses.BorneCirc;
            _configFrame.Data1   = (byte)newExerciceConf.BorneG;
            _configFrame.Data2   = (byte)newExerciceConf.BorneD;
            _configFrame.Data3   = 0x01;
            _configFrame.Data4   = (byte)newExerciceConf.BorneArc_H;
            return(_configFrame);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Début de la calibration de l'exercice
        /// </summary>
        private void StartCalibration()
        {
            this.pss.Pss.PositionDataReceived  += new AxCommunication.onPositionDataReceived(Pss_PositionDataReceived);
            this.pss.Pss.Position2DataReceived += new AxCommunication.onPosition2DataReceived(Pss_Position2DataReceived);
            this.game = new MazeCircuitGame(0, 0, 9);
            this.game.StartGame();

            this.gameStarted = true;
            this.StartCalibrationCommand.RaiseCanExecuteChanged();

            //this.pss.Pss.PositionDataReceived +=new AxCommunication.onPositionDataReceived(Pss_PositionDataReceived);
            //this.pss.Pss.Position2DataReceived +=new AxCommunication.onPosition2DataReceived(Pss_Position2DataReceived);

            // Positionner le robot + init du mod calibration
            // Détermine quelle bornes envoyer au robot pour la calibration
            FrameExerciceDataModel frame = new FrameExerciceDataModel();

            if (Singleton.UniBi)
            {
                // Unimanuel
                if (Singleton.MainGaucheX)
                {
                    // gauche
                    frame = new MazeCalibModel(547, 374, UniBiCodes.UnimanuelGauche).MakeFrame();//537 547
                }
                else
                {
                    // droite
                    frame = new MazeCalibModel(556, 964, UniBiCodes.UnimanuelDroite).MakeFrame();
                }
            }
            else
            {
                // Bimanuel
                if (Singleton.MainGaucheX)
                {
                    // gauche
                    frame = new MazeCalibModel(547, 964, UniBiCodes.BimanuelGaucheXDroiteY).MakeFrame();
                }
                else
                {
                    // droite
                    frame = new MazeCalibModel(556, 374, UniBiCodes.BimanuelGaucheYDroiteX).MakeFrame();
                }
            }

            // Envoie du mod de calibration
            pss.Pss.SendExerciceFrame(frame);
            pss.Pss.SendCommandFrame(CommandCodes.mode_libre);
        }
        void game_onNewTrajectory(object obj, PathEvent trajectoryArgs)
        {
            if (this.game != null)
            {
                var centre = this.game.GetCentre();

                if (centre != null)
                {
                    this.centreX = centre[0];
                    this.centreY = centre[1];
                }

                // Shift le circuit
                var newTraj = this.ShiftCircuit(trajectoryArgs.Path);
                // Streaming du nouveau circuit shifté
                var newTrajStream = this.PrepareToStreaming(newTraj);
                this.pss.Pss.StreamTrajectory(newTrajStream);

                if (Singleton.UniBi)
                {
                    // Unimanuel
                    if (Singleton.MainGaucheX)
                    {
                        // gauche
                        frame = new MazeGameModel((ushort)(Singleton.CalibrX * 10), (ushort)(Singleton.CalibrY * 10), UniBiCodes.UnimanuelGauche).MakeFrame();
                    }
                    else
                    {
                        // droite
                        frame = new MazeGameModel((ushort)(Singleton.CalibrX * 10), (ushort)(Singleton.CalibrY * 10), UniBiCodes.UnimanuelDroite).MakeFrame();
                    }
                }
                else
                {
                    // Bimanuel
                    if (Singleton.MainGaucheX)
                    {
                        // gauche
                        frame = new MazeGameModel((ushort)(Singleton.CalibrX * 10), (ushort)(Singleton.CalibrY * 10), UniBiCodes.BimanuelGaucheXDroiteY).MakeFrame();
                    }
                    else
                    {
                        // droite
                        frame = new MazeGameModel((ushort)(Singleton.CalibrX * 10), (ushort)(Singleton.CalibrY * 10), UniBiCodes.BimanuelGaucheYDroiteX).MakeFrame();
                    }
                }
                this.canSendPos = true;// Lancement du mod et positionement du robot
            }
        }
Exemplo n.º 7
0
 public void SendExerciceGameFrame(FrameExerciceDataModel exerciceData)
 {
     Pss.SendExerciceGameFrame(exerciceData);
 }
Exemplo n.º 8
0
        public static FrameExerciceDataModel ExercicesEvaluationToFrameExercice(ExerciceEvaluation exercice, int i)
        {
            FrameExerciceDataModel _exFrame = new FrameExerciceDataModel();

            if (exercice.TypeEval == ExerciceEvalTypes.Forme)
            {
                ExerciceForme temps = (ExerciceForme)exercice;
                _exFrame.Address = ConfigAddresses.Formes;

                switch (temps.TypeForme) // polygones
                {
                case FormeType.Carré: _exFrame.Data1 = 0x04;
                    break;

                case FormeType.Cercle: _exFrame.Data1 = 0x28;       // 0x1E
                    break;

                case FormeType.Triangle: _exFrame.Data1 = 0x06;     // Hexagone
                    break;
                }
                _exFrame.Data2 = (byte)(4 * temps.Taille);
                _exFrame.Data3 = temps.Origine;  // TODO : peut etre ?
                _exFrame.Data4 = Convert.ToByte(temps.AllerRetour);
            }
            else
            {
                //if (exercice.Exercice[i].ExerciceType == ExerciceTypes.Cibles)
                //{
                //    ExerciceXDent temps = (ExerciceXDent)exercice.Exercice[i];
                //    _exFrame.Address = ConfigAddresses.Cibles;
                //    _exFrame.Data1 = temps.NbrsCibles;
                //    _exFrame.Data2 = temps.DistCibles;
                //    _exFrame.Data3 = temps.Anglecible;
                //    //_exFrame.Data4 = temps.Origine;  // TODO : peut etre ?
                ////}
                //else
                //{
                //if (exercice.TypeExercice == ExerciceTypes.Mouvements_Complexes)
                //{
                //    ExerciceMouvement temps = (ExerciceMouvement)exercice.Exercice[i];
                //    _exFrame.Address = ConfigAddresses.Mouvements;

                //    switch (temps.DroiteType)
                //    {
                //        case DroiteType.Horizontal: _exFrame.Data1 = 0x02;
                //            break;
                //        case DroiteType.Oblique: _exFrame.Data1 = 0x03;
                //            break;
                //        case DroiteType.Vertical: _exFrame.Data1 = 0x01;
                //            break;
                //        default: _exFrame.Data1 = 0x01; // TODO : Erreur !
                //            break;
                //    }

                //    _exFrame.Data2 = temps.PositionDroite;
                //}
                //else
                //{
                if (exercice.TypeEval == ExerciceEvalTypes.Mouvement)
                {
                    ExerciceMouvement temps = (ExerciceMouvement)exercice;
                    _exFrame.Address = ConfigAddresses.Mouvements;          // TODO : faire un mod spécifique !

                    switch (temps.TypeDroite)
                    {
                    case DroiteType.Vertical: _exFrame.Data1 = 0x01;
                        break;

                    case DroiteType.VerticalLong: _exFrame.Data1 = 0x04;
                        break;

                    case DroiteType.Tonus: _exFrame.Data1 = 0x05;             // TONUS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                        break;

                    default: _exFrame.Data1 = 0x01;             // TODO : Erreur !
                        break;
                    }

                    _exFrame.Data2 = temps.PositionDroite;
                }
                else
                {
                    // TODO : Erreur !
                }
                //}
                //}
            }
            return(_exFrame);
        }