void TrackBar1Scroll(object sender, EventArgs e) { Scale xScale = GraphWindow.GraphPane.XAxis.Scale; xScale.Min = xScale.Max - trackBar1.Value; //GraphResize(); GraphWindow.AxisChange(); GraphWindow.Invalidate(); }
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(); }
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(); }
//---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; * }*/ } }
//---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(); }