コード例 #1
0
        private void OnLineReceived(object sender, LineReceivedEventArgs e)
        {
            string line = e.Line;

            Debug.WriteLine(line);
            lock (m_ValuesBuffer.SyncObject)
            {
                string[] stringParts = line.Split('\t');

                DateTime timeStamp = DateTime.Now;

                int      valuesCount    = stringParts.Length;
                double[] receivedValues = new double[valuesCount];

                for (int i = 0; i < valuesCount; i++)
                {
                    double receivedValue = double.Parse(stringParts[i], CultureInfo.InvariantCulture);
                    receivedValues[i] = receivedValue * 180.0 / Math.PI;
                }

                //receivedValues[1] += 1;

                //if (m_ValuesBuffer.Count > 1)
                //{
                //    // In order to accomplish sample and hold behavior we insert the old values with the new time stamp first
                //    TimeStampedValue<double[]> previousTimeStampedValue = m_ValuesBuffer[m_ValuesBuffer.Count - 1];
                //    TimeStampedValue<double[]> sampleAndHoldTimeStampedValue =
                //        new TimeStampedValue<double[]>(timeStamp, previousTimeStampedValue.Value);
                //    m_ValuesBuffer.Add(sampleAndHoldTimeStampedValue);
                //}

                TimeStampedValue <double[]> timeStampedValue = new TimeStampedValue <double[]>(timeStamp, receivedValues);
                m_ValuesBuffer.Add(timeStampedValue);
            }
        }
コード例 #2
0
 // format: ECG0.1|SCL0.5|EMG100
 public void ParseValues(TimeStampedValue<string>[] values)
 {
     InitLists();
     foreach (TimeStampedValue<string> val in values) {
         long timeStamp = val.TimeStamp;
         foreach (string datapoint in val.Value.Split('|')) {
             try {
                 if (datapoint.StartsWith("EMG")) {
                     int emgInt = int.Parse(datapoint.Substring(3));
                     // should be an integer smaller than 1024, map to 1-5V float
                     float emgFloat = 5.0f * (emgInt / 1024.0f);
                     ProcessNewEMGValue(timeStamp, emgFloat);
                 } else if (datapoint.StartsWith("ECG")) {
                     float ecgFloat = float.Parse(datapoint.Substring(3));
                     ProcessNewECGValue(timeStamp, ecgFloat);
                 } else if (datapoint.StartsWith("SCL")) {
                     float sclFloat = float.Parse(datapoint.Substring(3));
                     ProcessNewSCLValue(timeStamp, sclFloat);
                 } else {
                     Debug.LogWarning("EHealthParser: unknown/truncated datapoint: " + datapoint);
                 }
             } catch (FormatException) {
                 Debug.LogWarning("EHealthParser: unparseable datapoint: " + datapoint);
             }
         }
     }
 }
コード例 #3
0
        //private void OnLineReceived(object sender, LineReceivedEventArgs e)
        //{
        //    string line = e.Line;
        //    Debug.WriteLine(line);
        //    lock (m_ValuesBuffer.SyncObject)
        //    {
        //        string[] stringParts = line.Split('\t');

        //        DateTime timeStamp = ExtractTimeStamp(stringParts[0]);

        //        int valuesCount = stringParts.Length - 1;
        //        double[] receivedValues = new double[valuesCount];

        //        for (int i = 0; i < valuesCount; i++)
        //        {
        //            double receivedValue = double.Parse(stringParts[i + 1], CultureInfo.InvariantCulture);
        //            receivedValues[i] = receivedValue;
        //        }

        //        receivedValues[1] += 1;

        //        if (m_ValuesBuffer.Count > 1)
        //        {
        //            // In order to accomplish sample and hold behavior we insert the old values with the new time stamp first
        //            TimeStampedValue<double[]> previousTimeStampedValue = m_ValuesBuffer[m_ValuesBuffer.Count - 1];
        //            TimeStampedValue<double[]> sampleAndHoldTimeStampedValue =
        //                new TimeStampedValue<double[]>(timeStamp, previousTimeStampedValue.Value);
        //            m_ValuesBuffer.Add(sampleAndHoldTimeStampedValue);
        //        }

        //        TimeStampedValue<double[]> timeStampedValue = new TimeStampedValue<double[]>(timeStamp, receivedValues);
        //        m_ValuesBuffer.Add(timeStampedValue);
        //    }
        //}

        //private DateTime ExtractTimeStamp(string milliSecsString)
        //{
        //    long milliSecs = long.Parse(milliSecsString, CultureInfo.InvariantCulture);
        //    long ticks = milliSecs * s_TicksPerMilliSec + m_StartTime.Ticks;
        //    DateTime timeStamp = new DateTime(ticks);
        //    Debug.WriteLine(timeStamp);
        //    return timeStamp;
        //}

        private void OnNewDataReceived(object sender, DataReceivedEventArgs e)
        {
            lock (m_ValuesBuffer.SyncObject)
            {
                TimeStampedValue <double[]> timeStampedValue = new TimeStampedValue <double[]>(DateTime.Now, e.ReceivedValues);
                m_ValuesBuffer.Add(timeStampedValue);
            }
        }
コード例 #4
0
		//private void OnLineReceived(object sender, LineReceivedEventArgs e)
		//{
		//    string line = e.Line;
		//    Debug.WriteLine(line);
		//    lock (m_ValuesBuffer.SyncObject)
		//    {
		//        string[] stringParts = line.Split('\t');

		//        DateTime timeStamp = ExtractTimeStamp(stringParts[0]);

		//        int valuesCount = stringParts.Length - 1;
		//        double[] receivedValues = new double[valuesCount];

		//        for (int i = 0; i < valuesCount; i++)
		//        {
		//            double receivedValue = double.Parse(stringParts[i + 1], CultureInfo.InvariantCulture);
		//            receivedValues[i] = receivedValue;
		//        }

		//        receivedValues[1] += 1;

		//        if (m_ValuesBuffer.Count > 1)
		//        {
		//            // In order to accomplish sample and hold behavior we insert the old values with the new time stamp first
		//            TimeStampedValue<double[]> previousTimeStampedValue = m_ValuesBuffer[m_ValuesBuffer.Count - 1];
		//            TimeStampedValue<double[]> sampleAndHoldTimeStampedValue =
		//                new TimeStampedValue<double[]>(timeStamp, previousTimeStampedValue.Value);
		//            m_ValuesBuffer.Add(sampleAndHoldTimeStampedValue);
		//        }

		//        TimeStampedValue<double[]> timeStampedValue = new TimeStampedValue<double[]>(timeStamp, receivedValues);
		//        m_ValuesBuffer.Add(timeStampedValue);
		//    }
		//}

		//private DateTime ExtractTimeStamp(string milliSecsString)
		//{
		//    long milliSecs = long.Parse(milliSecsString, CultureInfo.InvariantCulture);
		//    long ticks = milliSecs * s_TicksPerMilliSec + m_StartTime.Ticks;
		//    DateTime timeStamp = new DateTime(ticks);
		//    Debug.WriteLine(timeStamp);
		//    return timeStamp;
		//}

		private void OnNewDataReceived(object sender, DataReceivedEventArgs e)
		{
			lock (m_ValuesBuffer.SyncObject)
			{
				TimeStampedValue<double[]> timeStampedValue = new TimeStampedValue<double[]>(DateTime.Now, e.ReceivedValues);
				m_ValuesBuffer.Add(timeStampedValue);
			}
		}
コード例 #5
0
		private void OnLineReceived(object sender, LineReceivedEventArgs e)
		{
			string line = e.Line;
			Debug.WriteLine(line);
			lock (m_ValuesBuffer.SyncObject)
			{
				string[] stringParts = line.Split('\t');

				DateTime timeStamp = DateTime.Now;
				
				int valuesCount = stringParts.Length;
				double[] receivedValues = new double[valuesCount];

				for (int i = 0; i < valuesCount; i++)
				{
					double receivedValue = double.Parse(stringParts[i], CultureInfo.InvariantCulture);
					receivedValues[i] = receivedValue * 180.0 / Math.PI;
				}

				//receivedValues[1] += 1;

				//if (m_ValuesBuffer.Count > 1)
				//{
				//    // In order to accomplish sample and hold behavior we insert the old values with the new time stamp first
				//    TimeStampedValue<double[]> previousTimeStampedValue = m_ValuesBuffer[m_ValuesBuffer.Count - 1];
				//    TimeStampedValue<double[]> sampleAndHoldTimeStampedValue =
				//        new TimeStampedValue<double[]>(timeStamp, previousTimeStampedValue.Value);
				//    m_ValuesBuffer.Add(sampleAndHoldTimeStampedValue);
				//}

				TimeStampedValue<double[]> timeStampedValue = new TimeStampedValue<double[]>(timeStamp, receivedValues);
				m_ValuesBuffer.Add(timeStampedValue);
			}
		}
コード例 #6
0
        protected internal virtual void OnNewSample(Sample newSample)
        {
            m_RawOutput.WriteOutput(newSample);

            TimeStampedValue<double> heartSignal = new TimeStampedValue<double>(newSample.TimeStamp, newSample.Heart);
            m_RawHeartSignal.WriteOutput(heartSignal);

            EventHandler<SampleEventArgs> handler = this.NewSample;
            if (handler != null)
            {
                try
                {
                    handler(this, new SampleEventArgs(newSample));
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.ToString());
                    //s_Log.Fatal("One of the subscribers of the NewSample event threw an exception.");
                }
            }
        }
コード例 #7
0
 private void ProcessNewSCRValue(TimeStampedValue<bool> newValue)
 {
     NewSCRValues.Add(newValue);
 }
コード例 #8
0
 private void ProcessNewSCLValue(long timeStamp, float sclFloat)
 {
     TimeStampedValue<float> tsValue = new TimeStampedValue<float>(timeStamp, sclFloat);
     this.NewSCLValues.Add(tsValue);
     // send new value to smoothing/normalizing/peakdetection filter pipeline:
     sclSmoother.Add(tsValue);
 }