Ejemplo n.º 1
0
        private void perif_DataReceiving(object sender, PeripheriqueDataReceivingEventArgs e)
        {
            receiving            = true;
            perif.DataReceiving -= new Peripherique.PeripheriqueDataReceivingEventHandler(perif_DataReceiving);
            ChangeLabelStatusFormPeripherique("Status : Receiving data...");
            Program.LogFich.Info("[FormPeripherique] En cours de réception");

            this.demoThread = new Thread(new ThreadStart(this.ThreadProcSafe));

            this.demoThread.Start();
        }
Ejemplo n.º 2
0
        //The event-invoking method that derived classes can override.
        protected virtual void OnDataReceiving(PeripheriqueDataReceivingEventArgs e)
        {
            // Make a temporary copy of the event to avoid possibility of
            // a race condition if the last subscriber unsubscribes
            // immediately after the null check and before the event is raised.
            PeripheriqueDataReceivingEventHandler handler = DataReceiving;

            if (handler != null)
            {
                handler(this, e);
            }
        }
Ejemplo n.º 3
0
        //Event "En cours de réception de données"
        private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            PeripheriqueDataReceivingEventArgs receiving = new PeripheriqueDataReceivingEventArgs();

            if (receiving != null)
            {
                base.OnDataReceiving(receiving);
            }

            try
            {
                byte[] lecture = new byte[serialPort.ReadBufferSize];
                int    i       = 0;

                //On récupère la trame provenant du port série
                byte b;
                bool termine = false;
                do
                {
                    try
                    {
                        b          = Convert.ToByte(serialPort.ReadByte());
                        lecture[i] = b;
                        i++;
                    }
                    catch
                    {
                        termine = true;
                    }
                }while (!termine);

                lecture = lecteurManager.CorrectionTailleTrame(i, lecture);
                for (int cpt = 0; cpt < lecture.Length; cpt++)
                {
                    Program.LogFich.Info("[LecteurPortSerie]: Donnee brut recu = " + lecture.GetValue(cpt));
                }

                //Nettoyage des caracteres avant/apres

                /*for (int cpt = 0; cpt < lecture.Length; cpt++)
                 * {
                 *  if (lecteurManager.AvantByte != 0x00)
                 *  {
                 *      if (lecture[cpt].Equals(lecteurManager.AvantByte))
                 *      {
                 *          lecture = lecteurManager.Nettoyer(cpt, lecture);
                 *          Program.LogFich.Info("[LecteurPortSerie]: Suppression byte avant, indice = " + cpt);
                 *      }
                 *  }
                 *  if (lecteurManager.ApresByte != 0x00)
                 *  {
                 *      if (lecture[cpt].Equals(lecteurManager.ApresByte))
                 *      {
                 *          lecture = lecteurManager.Nettoyer(cpt, lecture);
                 *          Program.LogFich.Info("[LecteurPortSerie]: Suppression byte apres, indice = " + cpt);
                 *      }
                 *  }
                 * }
                 * for (int cpt = 0; cpt < lecture.Length; cpt++)
                 *  Program.LogFich.Info("[LecteurPortSerie]: Resultat du nettoyage = " + lecture.GetValue(cpt));
                 */

                //Conversion en string
                string trameBrut = lecteurManager.ByteToString(lecture, lecture.Length);
                Program.LogFich.Info("[LecteurPortSerie]: Conversion en string = " + trameBrut);

                //Nettoyage
                Program.LogFich.Info("[LecteurPortSerie]: Code Avant à nettoyer = " + lecteurManager.Avant);
                Program.LogFich.Info("[LecteurPortSerie]: Code Après à nettoyer = " + lecteurManager.Apres);
                trameBrut = lecteurManager.Nettoyer(trameBrut);
                Program.LogFich.Info("[LecteurPortSerie]: Nettoyage = " + trameBrut);

                PeripheriqueDataReceivedEventArgs DataReceived = new PeripheriqueDataReceivedEventArgs(trameBrut);
                if (DataReceived != null)
                {
                    base.OnDataReceived(DataReceived);
                }

                OnChangeLabelStatus("Status: Receiving data...[Succeeded]");
                Program.LogFich.Info("[LecteurPortSerie] Réception terminée");
            }
            catch (Exception ex)
            {
                OnChangeLabelStatus("Status: Receiving data...[Failed]");
                Program.LogFich.Error("[LecteurPortSerie] Erreur de reception: " + ex.ToString());
            }
        }
Ejemplo n.º 4
0
        //Event Réception données terminée
        private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            PeripheriqueDataReceivingEventArgs receiving = new PeripheriqueDataReceivingEventArgs();

            if (receiving != null)
            {
                base.OnDataReceiving(receiving);
            }
            try
            {
                // Ori
                //char[] buffer = new char[serialPort.ReadBufferSize];
                //bool b = true;
                //char c;

                //do
                //{
                //    try
                //    {
                //        c = Convert.ToChar(serialPort.ReadChar());
                //        sb.Append(c);
                //    }
                //    catch
                //    {
                //        b = false;
                //    }
                //} while (b);


                // Version 2
                char[] buffer  = new char[serialPort.ReadBufferSize];
                bool   termine = true;
                char   c;

                do
                {
                    try
                    {
                        c = Convert.ToChar(serialPort.ReadChar());
                        sb.Append(c);
                    }
                    catch
                    {
                        System.Threading.Thread.Sleep(1000);

                        try
                        {
                            c = Convert.ToChar(serialPort.ReadChar());
                            sb.Append(c);
                        }
                        catch
                        {
                            termine = false;
                        }
                    }
                } while (termine);


                PeripheriqueDataReceivedEventArgs DataReceived = new PeripheriqueDataReceivedEventArgs(sb.ToString());
                if (DataReceived != null)
                {
                    base.OnDataReceived(DataReceived);
                }
                OnChangeLabelStatus("Status: Receiving data...[Succeeded]");
                //Program.LogFich.Info("[MagnetaPortSerie] Réception terminée = " + sb.ToString());
                Program.LogFich.Info("[MagnetaPortSerie] Réception terminée");
            }
            catch
            {
                OnChangeLabelStatus("Status: Receiving data...[Failed]");
                Program.LogFich.Error("[MagnetaPortSerie] Erreur de reception");
            }
        }