public void AddPoint(float x, float y) { if (samples == null) { samples = new List <cPoint>(); } cPoint p = new cPoint(); p.x = x; p.y = y; samples.Add(p); }
public void AddPoint(float x, float y, DateTime?dtPoint, int measureState = -1) { if (samples == null) { samples = new List <cPoint>(); } cPoint p = new cPoint(); p.x = x; p.y = y; p.PointFlag = measureState; if (dtPoint.HasValue) { p.dtPoint = dtPoint.Value; } samples.Add(p); }
/// <summary> /// Draw graph /// </summary> /// <param name="collection"></param> private void DrawGraph(ArrayList collection) { PlotterDisplayEx graphControl1 = new PlotterDisplayEx(); PlotterDisplayEx graphControl2 = new PlotterDisplayEx(); lock (m_objLockConfig) { int channel = 1; List<ConfigurationVO> configlist = (List<ConfigurationVO>)collection[0]; int channel_ref = configlist[0].ChannelValue; int channelA = 0; int channelB = 0; if ((ConfigurationVO.GetInstance().mode_operation != EnumAndConstants.CONTINEOUS)) { if (((List<ADCVO>)collection[1])[0].Channel != 0) { channelA = ((List<ADCVO>)collection[1])[0].Channel; } if (collection.Count > 2) { channelB = ((List<ADCVO>)collection[2])[2].Channel; } } else { List<int> channels = new List<int>(); ApplicationUtil.ApplicationUtil.GetValueFromNumber((UInt16)channel_ref, out channels); channelA = channels[0]; } // chek for channel values being -1 if (channelA != 0) { graphControl1 = GetTargetGraphControlForChannelB(channelA); } if (channelB != 0) { graphControl2 = GetTargetGraphControlForChannelB(channelB); } else graphControl2 = null; List<ADCVO> adclist = (List<ADCVO>)collection[1]; //Calculate the max and min y axis values to initialize the graph ApplicationUtil.ApplicationUtil.CalculateMinMaxADCValues(adclist); int adcResolution = configlist[0].adcresolution; if (adclist.Count == 0) { return; } repeatCount = adclist.Count; int maxadcForChannelTwo = 0; List<ADCVO> adclistChannelTwo = new List<ADCVO>(); if (collection.Count == 3) { adclistChannelTwo = (List<ADCVO>)collection[2]; if (adclistChannelTwo.Count > 0) maxadcForChannelTwo = adclistChannelTwo[adclistChannelTwo.Count - 1].AdcValue; } else { channel = channel_ref; } DateTime minDate = DateTime.Now; minDate = adclist[0].AdcDate; if (null != firstChannelArray) { if (firstChannelArray.Count >= 100000) { firstChannelArray.RemoveRange(0, 25000); } } graphControl1.DataSources[0].GraphColor = Color.Green; if (firstChannelArray == null) { firstChannelArray = new List<cPoint>(); firstChannelY = 0; } if (Program.Mode_Operation != EnumAndConstants.CONTINEOUS) { firstChannelArray = new List<cPoint>(); firstChannelY = 0; } if (Program.IsOnlineMode && Program.Mode_Operation != configlist[0].mode_operation) return; if (configlist[0].mode_operation != EnumAndConstants.CONTINEOUS) { firstChannelArray = new List<cPoint>(); firstChannelY = 0; } int tempCounter = 0; while (tempCounter < adclist.Count) { ADCVO point = adclist.ElementAt(tempCounter); double adv = Convert.ToDouble(point.AdcValue); firstChannelY += ApplicationUtil.ApplicationUtil.SAMPLING_RATE_DATE_ADD_VALUE; string d = string.Format("{0:0.00}", firstChannelY); double xPoint = double.Parse(d); cPoint cpoint = new cPoint(); cpoint.x = xPoint; cpoint.y = adv; firstChannelArray.Add(cpoint); tempCounter++; } if ((ConfigurationVO.GetInstance().mode_operation != EnumAndConstants.CONTINEOUS)) { xDisplayRange = (int)(firstChannelArray.ElementAt(firstChannelArray.Count - 1)).x; } //xDisplayRange =(int)((0.30 * maxX)); if (graphControl1.DataSources.Count > 1) graphControl1.DataSources.RemoveRange(1, graphControl1.DataSources.Count - 1); //initialize the control as per the adc values and x axis values. graphControl1.DataSources[0].Samples = firstChannelArray.ToArray<cPoint>(); if (graphControl1.DataSources[0].YMax == 0 && graphControl1.DataSources[0].YMin == 0) { graphControl1.DataSources[0].YMax = ApplicationUtil.ApplicationUtil.maxADC; graphControl1.DataSources[0].YD1 = ApplicationUtil.ApplicationUtil.maxADC; graphControl1.DataSources[0].YMin = ApplicationUtil.ApplicationUtil.minADC; graphControl1.DataSources[0].YD0 = ApplicationUtil.ApplicationUtil.minADC; } else { if (graphControl1.gPane.maxY < ApplicationUtil.ApplicationUtil.maxADC) { graphControl1.DataSources[0].YMax = ApplicationUtil.ApplicationUtil.maxADC; graphControl1.DataSources[0].YD1 = ApplicationUtil.ApplicationUtil.maxADC; } if (graphControl1.gPane.minY > ApplicationUtil.ApplicationUtil.minADC) { graphControl1.DataSources[0].YMin = ApplicationUtil.ApplicationUtil.minADC; graphControl1.DataSources[0].YD0 = ApplicationUtil.ApplicationUtil.minADC; } } //graphControl1.DataSources[0].AutoScaleY = true; graphControl1.DataSources[0].off_Y = 0; graphControl1.gPane.off_X = 0; graphControl1.gPane.grid_distance_y = 5; List<PlotterDisplayEx> graphList = new List<PlotterDisplayEx>(); graphList.Add(graphControl1); DrawGraphWithZoom(graphList,ZoomMultiplier); if (graphControl2 != null) { if (graphControl2.DataSources.Count > 1) graphControl2.DataSources.RemoveRange(1, graphControl2.DataSources.Count - 1); } if (collection.Count == 3) { if (adclistChannelTwo.Count == 0) return; minDate = adclistChannelTwo[0].AdcDate; ApplicationUtil.ApplicationUtil.CalculateMinMaxADCValues(adclistChannelTwo); if (channelB != -1) { if (graphControl2 != null) { if (secondChannelArray == null || configlist[0].mode_operation == EnumAndConstants.TRIGGER || configlist[0].mode_operation == EnumAndConstants.EXTERNAL_SIMULATION || configlist[0].mode_operation == EnumAndConstants.EXTERNAL_RECORDING || configlist[0].mode_operation == EnumAndConstants.LOOK_AHEAD) { secondChannelArray = new List<cPoint>(); secondChannelY = 0; } tempCounter = 0; while (tempCounter < adclistChannelTwo.Count) { ADCVO point = adclistChannelTwo.ElementAt(tempCounter); double adv = Convert.ToDouble(point.AdcValue); secondChannelY += ApplicationUtil.ApplicationUtil.SAMPLING_RATE_DATE_ADD_VALUE; string d = string.Format("{0:0.00}", secondChannelY); double yPoint = double.Parse(d); cPoint cpoint = new cPoint(); cpoint.x = yPoint; cpoint.y = adv; secondChannelArray.Add(cpoint); tempCounter++; } // Changes:MAITREYEE graphControl2.DataSources[0].Samples = secondChannelArray.ToArray<cPoint>(); graphControl2.DataSources[0].SetGridOriginY(0f); graphControl2.DataSources[0].GraphColor = Color.Green; // graphControl2.DataSources[0].Samples = firstChannelArray.ToArray<cPoint>(); if (graphControl2.DataSources[0].YMax == 0 && graphControl2.DataSources[0].YMin == 0) { graphControl2.DataSources[0].YMax = ApplicationUtil.ApplicationUtil.maxADC; graphControl2.DataSources[0].YD1 = ApplicationUtil.ApplicationUtil.maxADC; graphControl2.DataSources[0].YMin = ApplicationUtil.ApplicationUtil.minADC; graphControl2.DataSources[0].YD0 = ApplicationUtil.ApplicationUtil.minADC; } else { if (graphControl2.gPane.maxY < ApplicationUtil.ApplicationUtil.maxADC) { graphControl2.DataSources[0].YMax = ApplicationUtil.ApplicationUtil.maxADC; graphControl2.DataSources[0].YD1 = ApplicationUtil.ApplicationUtil.maxADC; } if (graphControl2.gPane.minY > ApplicationUtil.ApplicationUtil.minADC) { graphControl2.DataSources[0].YMin = ApplicationUtil.ApplicationUtil.minADC; graphControl2.DataSources[0].YD0 = ApplicationUtil.ApplicationUtil.minADC; } } graphControl2.DataSources[0].off_Y = 0; graphControl2.gPane.off_X = 0; graphControl2.gPane.grid_distance_y = 5; graphList = new List<PlotterDisplayEx>(); graphList.Add(graphControl2); DrawGraphWithZoom(graphList, ZoomMultiplier); } } } } if ((DateTime.Now - secondGraphRefreshTime).TotalMilliseconds > graphRefreshTime) { this.Invoke(graphdelegate, graphControl1, graphControl2); secondGraphRefreshTime = DateTime.Now; } }