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(); }
//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); } }
//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()); } }
//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"); } }