Ejemplo n.º 1
0
 /// <summary>
 /// Sends config frame.
 /// </summary>
 /// <param name="commandCode">
 /// Command data to be sent.
 /// </param>
 public void SendConfigFrame(FrameConfigDataModel configData)
 {
     // TODO : ajouter la commande dans la FILE pour ACK + timer
     //SendByteArray(FrameConstruction.ConstructWriteConfigDataFrame(configData));
     AddTrameOut(FrameConstruction.ConstructWriteConfigDataFrame(configData));
     //FramesWrittenCounter.CommandFrames++;
 }
Ejemplo n.º 2
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++;
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Initializes a new instance of the PortSerieModel class.
        /// </summary>
        public PortSerieService()
        {
            try
            {
                _frameBufferEvent    = new AutoResetEvent(false);
                _frameBufferEventOut = new AutoResetEvent(false);
                _inFrameBuffer       = new ConcurrentQueue <byte[]>();
                _outFrameBuffer      = new ConcurrentQueue <byte[]>();
                // Instanciation du thread, on spécifie dans le
                // délégué ThreadStart le nom de la méthode qui
                // sera exécutée lorsque l'on appele la méthode
                // Start() de notre thread.
                _closeThread = new Thread(new ThreadStart(ThreadDispose));

                _frameInBuffer = new Thread(() =>
                {
                    for (; ;)
                    {
                        if (_inFrameBuffer.Count == 0)
                        {
                            _frameBufferEvent.WaitOne();
                        }
                        //Debug.Print("WaitOne"+ DateTime.Now);
                        aXdataModel dataObject = null;
                        try
                        {
                            _inFrameBuffer.TryDequeue(out encodedFrameQ);
                            if (encodedFrameQ != null)
                            {
                                dataObject = FrameConstruction.DeconstructFrame(encodedFrameQ);
                            }
                        }
                        catch (Exception ex)
                        {
                            ReceptionErrors++;
                            // TODO : et l'affichage ???
                        }
                        if (dataObject != null)             // if frame successfully deconstructed
                        {
                            OnaXdataReceived(dataObject);
                            if (dataObject is ErrorDataModel)
                            {
                                OnErrorDataReceived((ErrorDataModel)dataObject); FramesReadCounter.ErrorFrames++;
                            }
                            else if (dataObject is CoupleDataModel)
                            {
                                OnCoupleDataReceived((CoupleDataModel)dataObject);
                            }
                            else if (dataObject is PositionDataModel)
                            {
                                OnPositionDataReceived((PositionDataModel)dataObject);
                            }
                            else if (dataObject is Position2DataModel)
                            {
                                OnPosition2DataReceived((Position2DataModel)dataObject);
                            }
                            else if (dataObject is PprDataModel)
                            {
                                OnPprDataReceived((PprDataModel)dataObject);
                            }
                            else if (dataObject is ForceDataModel)
                            {
                                OnForceDataReceived((ForceDataModel)dataObject);
                            }
                            else if (dataObject is Force2DataModel)
                            {
                                OnForce2DataReceived((Force2DataModel)dataObject);
                            }
                            else if (dataObject is ForceRapDataModel)
                            {
                                OnForceRapDataReceived((ForceRapDataModel)dataObject);
                            }
                            else if (dataObject is ForceRap2DataModel)
                            {
                                OnForceRap2DataReceived((ForceRap2DataModel)dataObject);
                            }
                            else if (dataObject is AcosTDataModel)
                            {
                                OnAcosTDataReceived((AcosTDataModel)dataObject);
                            }
                            else if (dataObject is VitesseModel)
                            {
                                OnVitesseDataReceived((VitesseModel)dataObject);
                            }
                            else if (dataObject is Vitesse2Model)
                            {
                                OnVitesse2DataReceived((Vitesse2Model)dataObject);
                            }
                            else if (dataObject is ACKDataModel)
                            {
                                OnACKDataReceived((ACKDataModel)dataObject);
                            }
                            else if (dataObject is StreamAckDataModel)
                            {
                                OnStreamACKDataReceived((StreamAckDataModel)dataObject);
                            }
                            else if (dataObject is FrameConfigDataModel)
                            {
                                OnFrameConfigDataReceived((FrameConfigDataModel)dataObject);
                            }
                            else if (dataObject is FrameExerciceDataModel)
                            {
                                OnFrameExerciceDataReceived((FrameExerciceDataModel)dataObject);
                            }
                            else if (dataObject is BorneDataModel)
                            {
                                OnBorneDataReceived((BorneDataModel)dataObject);
                            }
                        }
                    }
                }, 1);
                _frameInBuffer.IsBackground = true;
                _frameInBuffer.Name         = "Frame Buffer Thread IN";
                _frameInBuffer.Start();

                _frameOutBuffer = new Thread(() =>
                {
                    for (; ;)
                    {
                        if (_outFrameBuffer.Count == 0)
                        {
                            _frameBufferEventOut.WaitOne();
                        }
                        try
                        {
                            //if (ACK_ok == true) // TODO : ack c'est bien comme ca ?
                            //{
                            //ACK_ok = false;
                            _outFrameBuffer.TryDequeue(out encodedFrameOutQ);
                            if (encodedFrameOutQ != null)
                            {
                                SendByteArray(encodedFrameOutQ);
                                System.Threading.Thread.Sleep(12); // TODO : Pause car pas encore d'ACK
                            }
                            // }
                        }
                        catch
                        {
                            // TODO : erreur ++ envois
                        }
                    }
                }, 1);
                _frameOutBuffer.IsBackground = true;
                _frameOutBuffer.Name         = "Frame Buffer Thread OUT";
                _frameOutBuffer.Start();
                //SFrame STrame = new SFrame(SendFrame);
                //_outDataBuffer = new ProducerConsumerQueue(STrame);
                this._portSerie      = new SerialPort(); // Création d'un nouvel objet SerialPort par défaut
                FramesReadCounter    = new FrameCountModel();
                FramesWrittenCounter = new FrameCountModel();
                ReceptionErrors      = 0;
                Debug.Print("PortSerieModel OK");
            }
            catch (Exception ex)
            {
                GestionErreur.GerrerErreur(ex);
            }
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Sends command frame.
 /// </summary>
 /// <param name="commandCode">
 /// Command data to be sent.
 /// </param>
 public void SendCommandFrame(CommandCodes commandCode)
 {
     // TODO : ajouter la commande dans la FILE pour ACK + timer
     AddTrameOut(FrameConstruction.ConstructCommandFrame(commandCode));
     //FramesWrittenCounter.CommandFrames++;
 }