/// <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++; }
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); }
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); }
/// <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 } }
public void SendExerciceGameFrame(FrameExerciceDataModel exerciceData) { Pss.SendExerciceGameFrame(exerciceData); }
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); }