示例#1
0
        void TrackBar1Scroll(object sender, EventArgs e)
        {
            Scale xScale = GraphWindow.GraphPane.XAxis.Scale;

            xScale.Min = xScale.Max - trackBar1.Value;
            //GraphResize();
            GraphWindow.AxisChange();
            GraphWindow.Invalidate();
        }
示例#2
0
        void TrackBar2Scroll(object sender, EventArgs e)
        {
            Scale yScale = GraphWindow.GraphPane.YAxis.Scale;

            yScale.Min = ((-12) * trackBar2.Value);
            yScale.Max = trackBar2.Value;
            //GraphResize();
            GraphWindow.AxisChange();
            GraphWindow.Invalidate();
        }
示例#3
0
        void GraphAutoSize()
        {
            Scale xScale = GraphWindow.GraphPane.XAxis.Scale;

            xScale.Max = zeit;
            MethodInvoker gettrackbar = delegate
            {
                xScale.Min = xScale.Max - trackBar1.Value;
            };

            Invoke(gettrackbar);

            GraphWindow.AxisChange();
            GraphWindow.Invalidate();
        }
示例#4
0
        //---Methode zum Zeichnen des neuen Samples---
        void Draw_Graph(int[] lead)
        {
            // temp[0] = lead 2
            // temp[1] = lead 3
            // temp[2] = V1
            // temp[3] = V2
            // temp[4] = V3
            // temp[5] = V4
            // temp[6] = V5
            // temp[7] = V6
            // temp[8] = lead 1
            // temp[9] = aVR
            // temp[10] = aVL
            // temp[11] = aVR


            double[] temp = new Double[12];

            int abstand = 100;

            MethodInvoker gettrackbar2 = delegate
            {
                abstand = trackBar2.Value;
            };

            Invoke(gettrackbar2);



            //Lead2
            LineItem       curve = GraphWindow.GraphPane.CurveList[1] as LineItem;
            IPointListEdit list  = curve.Points as IPointListEdit;

            circular_buffer0[zeiger[0]] = lead[0];
            zeiger[0] = (zeiger[0] + 1) % 12;
            for (i = 0; i < 12; i++)
            {
                temp[0] += (b[i] * circular_buffer0[(zeiger[0] + i) % 12]);
            }
            if (Lead2Enabled.Checked == true)
            {
                list.Add(zeit, (temp[0] - abstand));
            }
            else
            {
                list.Clear();
            }


            //Lead3
            curve = GraphWindow.GraphPane.CurveList[2] as LineItem;
            list  = curve.Points as IPointListEdit;
            circular_buffer1[zeiger[1]] = lead[1];
            zeiger[1] = (zeiger[1] + 1) % 12;
            for (i = 0; i < 12; i++)
            {
                temp[1] += (b[i] * circular_buffer1[(zeiger[1] + i) % 12]);
            }
            if (Lead3Enabled.Checked == true)
            {
                list.Add(zeit, (temp[1] - (2 * abstand)));
            }
            else
            {
                list.Clear();
            }

            //Lead1
            curve   = GraphWindow.GraphPane.CurveList[0] as LineItem;
            list    = curve.Points as IPointListEdit;
            temp[8] = (temp[0] - temp[1]);

            if (Lead1Enabled.Checked == true)
            {
                list.Add(zeit, temp[8]);
            }
            else
            {
                list.Clear();
            }

            //V1
            curve = GraphWindow.GraphPane.CurveList[6] as LineItem;
            list  = curve.Points as IPointListEdit;
            if (V1Enabled.Checked == true)
            {
                circular_buffer2[zeiger[2]] = lead[2];
                zeiger[2] = (zeiger[2] + 1) % 12;
                for (i = 0; i < 12; i++)
                {
                    temp[2] += (b[i] * circular_buffer2[(zeiger[2] + i) % 12]);
                }
                list.Add(zeit, (temp[2] - (6 * abstand)));
            }
            else
            {
                list.Clear();
            }

            //V2
            curve = GraphWindow.GraphPane.CurveList[7] as LineItem;
            list  = curve.Points as IPointListEdit;
            if (V2Enabled.Checked == true)
            {
                circular_buffer3[zeiger[3]] = lead[3];
                zeiger[3] = (zeiger[3] + 1) % 12;
                for (i = 0; i < 12; i++)
                {
                    temp[3] += (b[i] * circular_buffer3[(zeiger[3] + i) % 12]);
                }
                list.Add(zeit, (temp[3] - (7 * abstand)));
            }
            else
            {
                list.Clear();
            }

            //Beat detection
            if (temp[3] <= (-2000))
            {
                MethodInvoker beater = delegate
                {
                    label28.Visible = true;
                    ekg1.LED_On();
                };
                Invoke(beater);


                if (!beat)
                {
                    Thread piep_thread = new Thread(delegate() { piep(2000, 100); });
                    piep_thread.IsBackground = true;
                    piep_thread.Start();
                    beat = true;
                }
            }
            else
            {
                MethodInvoker nobeat = delegate
                {
                    label28.Visible = false;
                    ekg1.LED_Off();
                };
                Invoke(nobeat);
                beat = false;
            }

            //V3
            curve = GraphWindow.GraphPane.CurveList[8] as LineItem;
            list  = curve.Points as IPointListEdit;
            if (V3Enabled.Checked == true)
            {
                circular_buffer4[zeiger[4]] = lead[4];
                zeiger[4] = (zeiger[4] + 1) % 12;
                for (i = 0; i < 12; i++)
                {
                    temp[4] += (b[i] * circular_buffer4[(zeiger[4] + i) % 12]);
                }
                list.Add(zeit, (temp[4] - (8 * abstand)));
            }
            else
            {
                list.Clear();
            }


            //V4
            curve = GraphWindow.GraphPane.CurveList[9] as LineItem;
            list  = curve.Points as IPointListEdit;
            if (V4Enabled.Checked == true)
            {
                circular_buffer5[zeiger[5]] = lead[5];
                zeiger[5] = (zeiger[5] + 1) % 12;
                for (i = 0; i < 12; i++)
                {
                    temp[5] += (b[i] * circular_buffer5[(zeiger[5] + i) % 12]);
                }
                list.Add(zeit, (temp[5] - (9 * abstand)));
            }
            else
            {
                list.Clear();
            }

            //V5
            curve = GraphWindow.GraphPane.CurveList[10] as LineItem;
            list  = curve.Points as IPointListEdit;
            if (V5Enabled.Checked == true)
            {
                circular_buffer6[zeiger[6]] = lead[6];
                zeiger[6] = (zeiger[6] + 1) % 12;
                for (i = 0; i < 12; i++)
                {
                    temp[6] += (b[i] * circular_buffer6[(zeiger[6] + i) % 12]);
                }
                list.Add(zeit, (temp[6] - (10 * abstand)));
            }
            else
            {
                list.Clear();
            }



            //V6
            curve = GraphWindow.GraphPane.CurveList[11] as LineItem;
            list  = curve.Points as IPointListEdit;
            if (V6Enabled.Checked == true)
            {
                circular_buffer7[zeiger[7]] = lead[7];
                zeiger[7] = (zeiger[7] + 1) % 12;
                for (i = 0; i < 12; i++)
                {
                    temp[7] += (b[i] * circular_buffer7[(zeiger[7] + i) % 12]);
                }
                list.Add(zeit, (temp[7] - (11 * abstand)));
            }
            else
            {
                list.Clear();
            }



            //aVR
            curve   = GraphWindow.GraphPane.CurveList[3] as LineItem;
            list    = curve.Points as IPointListEdit;
            temp[9] = (-(temp[0] + temp[1])) / 2;

            if (aVREnabled.Checked == true)
            {
                list.Add(zeit, (temp[9] - (3 * abstand)));
            }
            else
            {
                list.Clear();
            }

            //aVL
            curve    = GraphWindow.GraphPane.CurveList[4] as LineItem;
            list     = curve.Points as IPointListEdit;
            temp[10] = ((temp[0] - temp[1]) / 2);

            if (aVLEnabled.Checked == true)
            {
                list.Add(zeit, (temp[10] - (4 * abstand)));
            }
            else
            {
                list.Clear();
            }


            //aVF
            curve    = GraphWindow.GraphPane.CurveList[5] as LineItem;
            list     = curve.Points as IPointListEdit;
            temp[11] = ((temp[1] + temp[2]) / 2);

            if (aVFEnabled.Checked == true)
            {
                list.Add(zeit, (temp[11] - (5 * abstand)));
            }
            else
            {
                list.Clear();
            }

            //Wenn Autoscroll aktiv ist
            if (checkBox6.Checked == true)
            {
                GraphAutoSize();
            }
            else
            {
                GraphWindow.AxisChange();
                GraphWindow.Invalidate();
            }

            if (recording)
            {
                //get the Data for one row
                CsvRow row = new CsvRow();
                row.Add(String.Format("{0}", SampleCount));  //#
                row.Add(String.Format(temp[8].ToString()));  //Lead 1
                row.Add(String.Format(temp[0].ToString()));  //Lead 2
                row.Add(String.Format(temp[1].ToString()));  //Lead 3
                row.Add(String.Format(temp[9].ToString()));  //aVR
                row.Add(String.Format(temp[10].ToString())); //aVL
                row.Add(String.Format(temp[11].ToString())); //aVF
                row.Add(String.Format(temp[2].ToString()));  //V1
                row.Add(String.Format(temp[3].ToString()));  //V2
                row.Add(String.Format(temp[4].ToString()));  //V3
                row.Add(String.Format(temp[5].ToString()));  //V4
                row.Add(String.Format(temp[6].ToString()));  //V5
                row.Add(String.Format(temp[7].ToString()));  //V6

                //write the row in the buffer
                writer.WriteRow(row);
                writer.Flush();

                SampleCount++;

                /*
                 * //Safe to file
                 * if (SampleCount < 10)
                 * {
                 *  for (i = 0; i < 12; i++)
                 *  {
                 *      SampleSaveBuffer[SampleCount, i] = temp[i];
                 *
                 *  }
                 *  SampleCount++;
                 * }
                 * else
                 * {
                 *
                 *  for (int i = 0; i < 10; i++)
                 *  {
                 *      //get the Data for one row
                 *      CsvRow row = new CsvRow();
                 *      row.Add(String.Format("{0}", i)); //#
                 *      row.Add(String.Format(SampleSaveBuffer[i, 8].ToString())); //Lead 1
                 *      row.Add(String.Format(SampleSaveBuffer[i, 0].ToString())); //Lead 2
                 *      row.Add(String.Format(SampleSaveBuffer[i, 1].ToString())); //Lead 3
                 *      row.Add(String.Format(SampleSaveBuffer[i, 9].ToString())); //aVR
                 *      row.Add(String.Format(SampleSaveBuffer[i, 10].ToString()));//aVL
                 *      row.Add(String.Format(SampleSaveBuffer[i, 11].ToString()));//aVF
                 *      row.Add(String.Format(SampleSaveBuffer[i, 2].ToString())); //V1
                 *      row.Add(String.Format(SampleSaveBuffer[i, 3].ToString())); //V2
                 *      row.Add(String.Format(SampleSaveBuffer[i, 4].ToString())); //V3
                 *      row.Add(String.Format(SampleSaveBuffer[i, 5].ToString())); //V4
                 *      row.Add(String.Format(SampleSaveBuffer[i, 6].ToString())); //V5
                 *      row.Add(String.Format(SampleSaveBuffer[i, 7].ToString())); //V6
                 *
                 *      //write the row in the buffer
                 *      writer.WriteRow(row);
                 *  }
                 *
                 *  SampleCount = 0;
                 * }*/
            }
        }
示例#5
0
        //---Hier werden alle Einstellungen der Graph Pane vorgenommen---
        void SetupGraph()
        {
            GraphWindow.GraphPane.Title.IsVisible           = false;
            GraphWindow.GraphPane.XAxis.Title.Text          = "Sekunden";
            GraphWindow.GraphPane.XAxis.Title.FontSpec.Size = 6;
            GraphWindow.GraphPane.XAxis.Scale.FontSpec.Size = 6;
            GraphWindow.GraphPane.YAxis.Title.IsVisible     = false;
            GraphWindow.GraphPane.Y2Axis.Title.IsVisible    = false;
            //GraphWindow.GraphPane.YAxis.Scale.IsVisible = false;		//Für Y Scale
            GraphWindow.GraphPane.YAxis.Scale.FormatAuto = false;
            GraphWindow.GraphPane.Y2Axis.Scale.IsVisible = false;
            GraphWindow.GraphPane.Border.IsVisible       = false;
            GraphWindow.GraphPane.Chart.Border.IsVisible = false;
            GraphWindow.GraphPane.Legend.Position        = ZedGraph.LegendPos.Bottom;
            GraphWindow.GraphPane.Legend.IsVisible       = false;


            //Farben des Graph Panes einstellen
            GraphWindow.GraphPane.Fill                 = new Fill(Color.DarkGray);
            GraphWindow.GraphPane.Chart.Fill           = new Fill(Color.Black);
            GraphWindow.GraphPane.Chart.Fill.IsVisible = true;

            //Raster einstellen
            GraphWindow.GraphPane.XAxis.Scale.Min           = -20;
            GraphWindow.GraphPane.XAxis.Scale.Max           = 0;
            GraphWindow.GraphPane.YAxis.Scale.Min           = ((-12) * trackBar2.Value);
            GraphWindow.GraphPane.YAxis.Scale.Max           = trackBar2.Value;
            GraphWindow.GraphPane.XAxis.Scale.MinorStep     = 0.25;
            GraphWindow.GraphPane.XAxis.Scale.MajorStep     = 1;
            GraphWindow.GraphPane.YAxis.MajorGrid.IsVisible = true;
            GraphWindow.GraphPane.YAxis.MinorGrid.IsVisible = false;
            GraphWindow.GraphPane.XAxis.MajorGrid.IsVisible = true;
            GraphWindow.GraphPane.XAxis.MajorGrid.Color     = Color.White;
            GraphWindow.GraphPane.XAxis.MinorGrid.IsVisible = true;
            GraphWindow.GraphPane.YAxis.MinorTic.IsOutside  = false;
            GraphWindow.GraphPane.YAxis.MajorTic.IsOutside  = false;
            GraphWindow.GraphPane.XAxis.MinorTic.IsOutside  = false;
            GraphWindow.GraphPane.XAxis.MajorTic.IsOutside  = false;

            //Erstelle je eine List für jede der 12 Ableitungen
            RollingPointPairList lead1_list = new RollingPointPairList(1000);
            RollingPointPairList lead2_list = new RollingPointPairList(1000);
            RollingPointPairList lead3_list = new RollingPointPairList(1000);
            RollingPointPairList aVR_list   = new RollingPointPairList(1000);
            RollingPointPairList aVL_list   = new RollingPointPairList(1000);
            RollingPointPairList aVF_list   = new RollingPointPairList(1000);
            RollingPointPairList V1_list    = new RollingPointPairList(1000);
            RollingPointPairList V2_list    = new RollingPointPairList(1000);
            RollingPointPairList V3_list    = new RollingPointPairList(1000);
            RollingPointPairList V4_list    = new RollingPointPairList(1000);
            RollingPointPairList V5_list    = new RollingPointPairList(1000);
            RollingPointPairList V6_list    = new RollingPointPairList(1000);

            //Erstelle einen Graphen für jede der 12 Ableitungen
            LineItem lead1_graph = GraphWindow.GraphPane.AddCurve("L1", lead1_list, Color.FloralWhite, SymbolType.None);
            LineItem lead2_graph = GraphWindow.GraphPane.AddCurve("L2", lead2_list, Color.FloralWhite, SymbolType.None);
            LineItem lead3_graph = GraphWindow.GraphPane.AddCurve("L3", lead3_list, Color.FloralWhite, SymbolType.None);
            LineItem aVR_graph   = GraphWindow.GraphPane.AddCurve("aVR", aVR_list, Color.FloralWhite, SymbolType.None);
            LineItem aVL_graph   = GraphWindow.GraphPane.AddCurve("aVL", aVL_list, Color.FloralWhite, SymbolType.None);
            LineItem aVF_graph   = GraphWindow.GraphPane.AddCurve("aVF", aVF_list, Color.FloralWhite, SymbolType.None);
            LineItem V1_graph    = GraphWindow.GraphPane.AddCurve("V1", V1_list, Color.Pink, SymbolType.None);
            LineItem V2_graph    = GraphWindow.GraphPane.AddCurve("V2", V2_list, Color.NavajoWhite, SymbolType.None);
            LineItem V3_graph    = GraphWindow.GraphPane.AddCurve("V3", V3_list, Color.YellowGreen, SymbolType.None);
            LineItem V4_graph    = GraphWindow.GraphPane.AddCurve("V4", V4_list, Color.PowderBlue, SymbolType.None);
            LineItem V5_graph    = GraphWindow.GraphPane.AddCurve("V5", V5_list, Color.SandyBrown, SymbolType.None);
            LineItem V6_graph    = GraphWindow.GraphPane.AddCurve("V6", V6_list, Color.MediumPurple, SymbolType.None);



            GraphWindow.AxisChange();
        }