private void TheSerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
 {
     Debug.WriteLine("isRecordingELSpec2 = " + isRecordingELSpec);
     if (isInitializing)
     {
         ReceivedData = serialPort.ReadTo(InitialSerialResponseTerminator); //read until MODE after initialization command
         Debug.WriteLine("Initial ReceivedData: " + ReceivedData);
         serialPort.ReadExisting();                                         //clear the buffer
         serialPort.DiscardInBuffer();                                      //maybe this is more appropriate
         if (ReceivedData.Count() > 2)
         {
             isInitializing = false;
             Debug.WriteLine("done initializing");
         }
     }
     else if (isRecordingELSpec)
     {
         Debug.WriteLine("Began recording EL Spectrum");
         PresentELSpec = new List <ELSpecDatum>();
         ReceivedData  = serialPort.ReadTo(SerialResponseTerminator); //read until CR LF (0x0D 0x0A)
         ReceivedData  = serialPort.ReadTo(SerialResponseTerminator); //read until CR LF (0x0D 0x0A)
         bool reached780nm = false;
         while (!reached780nm)
         {
             string specPoint = serialPort.ReadTo(SerialResponseTerminator);
             Debug.WriteLine("specPoint: " + specPoint);
             ELSpecDatum datum = ParsedSpecString(specPoint);
             PresentELSpec.Add(datum);
             if (datum.Wavelength == 780)
             {
                 reached780nm      = true;
                 isRecordingELSpec = false;
                 DataReceivedBool  = true;
                 dataReceivedEvent[0].Set();
                 Debug.WriteLine("Successfully recorded EL Spectrum");
             }
         }
     }
     else
     {
         if (serialPort.BytesToRead > 1)//ignorant workaround for weird issue where PR650 is sending 1 byte after ELSpec measurement
         {
             try
             {
                 ReceivedData     = serialPort.ReadTo(SerialResponseTerminator); //read until CR LF (0x0D 0x0A)
                 DataReceivedBool = true;
                 dataReceivedEvent[0].Set();
                 Debug.WriteLine("ReceivedData: " + ReceivedData);
             }
             catch (TimeoutException te)
             {
                 Debug.WriteLine("serialPort.ReadTo() timed out: " + te.Message);
             }
         }
     }
     //DataReceivedBool = true;
     //DataToParse?.Invoke(this, EventArgs.Empty);
     //dataReceivedEvent[0].Set();
     serialPort.DiscardInBuffer();
 }
        private ELSpecDatum ParsedSpecString(string specstring)
        {
            ELSpecDatum datum = new ELSpecDatum();

            string[] array = specstring.Split(',');
            datum.Wavelength = Convert.ToDouble(array[0]);
            datum.Intensity  = Convert.ToDouble(array[1]);
            return(datum);
        }
        private ELSpecDatum ParsedSpecString(string specstring)
        {
            ELSpecDatum datum = new ELSpecDatum();

            try
            {
                string[] array = specstring.Split(',');
                datum.Wavelength = Convert.ToDouble(array[0]);
                datum.Intensity  = Convert.ToDouble(array[1]);
            }
            catch (Exception e)
            {
                System.Windows.Forms.MessageBox.Show("problem with data format: " + e.ToString());
            }
            return(datum);
        }
 private void TheSerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
 {
     Debug.WriteLine("isRecordingELSpec2 = " + isRecordingELSpec);
     if (isInitializing)
     {
         ReceivedData = serialPort.ReadTo(InitialSerialResponseTerminator); //read until MODE after initialization command
         Debug.WriteLine("Initial ReceivedData: " + ReceivedData);
         serialPort.ReadExisting();                                         //clear the buffer
         serialPort.DiscardInBuffer();                                      //maybe this is more appropriate
         if (ReceivedData.Count() > 2)
         {
             isInitializing = false;
             Debug.WriteLine("done initializing");
         }
     }
     else if (isRecordingELSpec)
     {
         Debug.WriteLine("Began recording EL Spectrum");
         PresentELSpec = new List <ELSpecDatum>();
         ReceivedData  = serialPort.ReadTo(SerialResponseTerminator); //read until CR LF (0x0D 0x0A)
         ReceivedData  = serialPort.ReadTo(SerialResponseTerminator); //read until CR LF (0x0D 0x0A)
         bool reached780nm = false;
         while (!reached780nm)
         {
             string specPoint = serialPort.ReadTo(SerialResponseTerminator);
             Debug.WriteLine("specPoint: " + specPoint);
             ELSpecDatum datum = ParsedSpecString(specPoint);
             PresentELSpec.Add(datum);
             if (datum.Wavelength == 780)
             {
                 reached780nm      = true;
                 isRecordingELSpec = false;
                 Debug.WriteLine("Successfully recorded EL Spectrum");
             }
         }
     }
     else
     {
         ReceivedData = serialPort.ReadTo(SerialResponseTerminator); //read until CR LF (0x0D 0x0A)
         Debug.WriteLine("ReceivedData: " + ReceivedData);
     }
     DataReceivedBool = true;
     DataToParse?.Invoke(this, EventArgs.Empty);
     dataReceivedEvent[0].Set();
     serialPort.DiscardInBuffer();
 }