예제 #1
0
 public Analyse(BlockingCollection <DtoBpRaw> dataQueue2, BlockingCollection <Dto_AnalysisBP> dataQueue3)
 {
     _dataQueue2     = dataQueue2;
     _dataQueue3     = dataQueue3;
     OneSecondOfData = new DtoMeassuredDataFs();
     PulseAnalysis   = new PulseAnalysis(StaticVariables);
     mapCalculater   = new MapCalculator5Periods();
 }
예제 #2
0
        public void AnalyseMeasurement()
        {
            while (!_dataQueue2.IsCompleted)
            {
                try
                {
                    var container = _dataQueue2.Take();  // .Take Tager måske alle DTO objekterne og fjerner dem fra listen.

                    OneSecondOfData.MeassureDoubles.AddRange(container.Measurement);

                    if (OneSecondOfData.MeassureDoubles.Count >= StaticVariables.SampleFrequense)
                    {
                        MAP   = mapCalculater.calculateMAP(OneSecondOfData);
                        alarm = Alarmanalysis.GetAlarm(OneSecondOfData, MAP);
                        pulse = PulseAnalysis.GetPulse(OneSecondOfData, MAP);
                        DiaAndSystolicAnalysis.GetSysAndDiastolic(OneSecondOfData, MAP);
                        diastolic = DiaAndSystolicAnalysis.Diastolic;
                        systolic  = DiaAndSystolicAnalysis.Systolic;


                        //Opdaterer readingAnalysis DTO'en
                        readingAnalysis = new Dto_AnalysisBP(systolic, diastolic, pulse, alarm, MAP, DateTime.Now);
                        // DEN SKAL BÅDE VÆRE Producer OG CONSUMER
                        //DEN FÅR SIN DATA SOM CONSUMER fra EN PRODUCER; MEN DEN GIVER DET VIDERE SOM EN PRODUCER, JA DET ER GODT TÆNKT; ELLER MÅSKE MEGET DUMT

                        _dataQueue3.Add(readingAnalysis);
                        _dataQueue3.CompleteAdding();

                        //Tømmer mit ene sekund så dette er klar til at blive fyldt op igen
                        OneSecondOfData.MeassureDoubles.Clear();
                    }
                }
                catch (InvalidOperationException)
                {
                }

                Thread.Sleep(10); //Why???
            }
        }