private void BTN_RECORD_Click(object sender, EventArgs e)
        {
            if (isRunning)
            {
                //Stop the Running and Save
                RdgEndTime = Convert.ToDouble(DB.GetTimeMs()) / 1000;
                SW.Stop();
                lbl_status.Text      = "Stopped...";
                BTN_RECORD.Text      = "Record";
                isRunning            = false;
                cmb_sampleHz.Enabled = true;
                SW.Reset();

                //Ask User to Store the Data
                SaveFileDialog saveFileDialog1 = new SaveFileDialog();

                saveFileDialog1.Filter           = "csv files (*.csv)|*.csv";
                saveFileDialog1.FilterIndex      = 2;
                saveFileDialog1.RestoreDirectory = true;

                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    Single sampleHz = Single.Parse(cmb_sampleHz.Text);
                    Single sampleRt = 1 / sampleHz;
                    bool   result   = DB.storeCSV(saveFileDialog1.FileName, Convert.ToSingle(RdgStartTime), Convert.ToSingle(RdgEndTime), sampleRt);
                    if (!result)
                    {
                        MessageBox.Show("Error Writing Output. Data May be Corrupted");
                    }
                }
            }
            else
            {
                RdgStartTime = Convert.ToDouble(DB.GetTimeMs()) / 1000;
                SW.Start();
                lbl_status.Text      = "Running...";
                BTN_RECORD.Text      = "Stop and Save";
                cmb_sampleHz.Enabled = false;
                isRunning            = true;
            }
        }
示例#2
0
        /**Plotting Stuff************************************************************/

        private void Update(Object stateInfo)
        {
            if (!(btn_PauseRun.Checked))
            {
                if (this.IsDisposed)
                {
                    return;
                }

                int Lock = DB.requestLock();
                if (Lock >= 0)
                {
                    for (int rw = 0; rw < dgvplots.Rows.Count; rw++)
                    {
                        DataGridViewCheckBoxCell visibleCell   = (DataGridViewCheckBoxCell)dgvplots.Rows[rw].Cells[0];
                        DataGridViewComboBoxCell paramNameCell = (DataGridViewComboBoxCell)dgvplots.Rows[rw].Cells[1];

                        if (!(paramNameCell.Value == null) && (DB.Signals().Contains(paramNameCell.Value.ToString())))
                        {
                            if ((bool)visibleCell.EditedFormattedValue)
                            {
                                //Find the series which goes with this rw.
                                LineSeries Ser = null;
                                foreach (LineSeries CSer in DataPlot.Series)
                                {
                                    if (CSer.Tag.Equals(rw))
                                    {
                                        Ser = CSer;
                                        break;
                                    }
                                }

                                //If Series is still void, its not being plotted to add a new series to plot
                                if (Ser == null)
                                {
                                    Ser       = new LineSeries();
                                    Ser.Title = paramNameCell.Value.ToString().Trim();
                                    Ser.Tag   = rw;
                                    AddChartSeries(Ser);
                                    //Ser = new Series(rw.ToString());
                                    //Ser.ChartType = SeriesChartType.FastLine;
                                    //Ser.ChartArea = Chart.ChartAreas[0].Name;
                                    //Ser.BorderWidth = 2;
                                    //Ser.LegendText = paramNameCell.Value.ToString();

                                    if (!(this.Plot.IsDisposed))
                                    {
                                        if (this.Plot.InvokeRequired)
                                        {
                                            addSeriesDelegate d = new addSeriesDelegate(AddChartSeries);
                                            this.Invoke(d, new object[] { Ser });
                                        }
                                        else
                                        {
                                            AddChartSeries(Ser);
                                        }
                                    }
                                }
                                else
                                {
                                    if (!(Ser.Tag.Equals(rw)))
                                    {
                                        LineSeries Ser2 = new LineSeries();
                                        Ser2.Title = paramNameCell.Value.ToString();
                                        Ser2.Tag   = rw;

                                        if (!(this.Plot.IsDisposed))
                                        {
                                            if (this.Plot.InvokeRequired)
                                            {
                                                removeSeriesDelegate d_rem = new removeSeriesDelegate(RemovedChartSeries);
                                                this.Invoke(d_rem, new object[] { Ser });

                                                addSeriesDelegate d_add = new addSeriesDelegate(AddChartSeries);
                                                this.Invoke(d_add, new object[] { Ser2 });
                                            }
                                            else
                                            {
                                                RemovedChartSeries(Ser);
                                                AddChartSeries(Ser2);
                                            }
                                        }
                                    }
                                }


                                if (!(this.Plot.IsDisposed))
                                {
                                    if (this.Plot.InvokeRequired)
                                    {
                                        updateChartDelegate d = new updateChartDelegate(UpdateSeriesData);
                                        try
                                        {
                                            this.Invoke(d, new object[] { Ser, DB.Read(paramNameCell.Value.ToString(), Convert.ToSingle(DB.GetTimeMs() / 1000 - XAxisLength - 10), Convert.ToSingle(DB.GetTimeMs() / 1000)) });
                                        }
                                        catch (Exception ex)
                                        {
                                        }
                                    }
                                    else
                                    {
                                        String SignalName = paramNameCell.Value.ToString();
                                        UpdateSeriesData(Ser, DB.Read(SignalName, Convert.ToSingle(DB.GetTimeMs() / 1000 - XAxisLength - 10), Convert.ToSingle(DB.GetTimeMs() / 1000)));
                                    }
                                }
                            }
                            else
                            {
                                //Find the series which goes with this rw.
                                LineSeries Ser = null;
                                foreach (LineSeries CSer in DataPlot.Series)
                                {
                                    if (CSer.Tag.Equals(rw))
                                    {
                                        Ser = CSer;
                                        break;
                                    }
                                }

                                if (!(Ser == null))
                                {
                                    if (!(this.Plot.IsDisposed))
                                    {
                                        if (this.Plot.InvokeRequired)
                                        {
                                            removeSeriesDelegate d_rem = new removeSeriesDelegate(RemovedChartSeries);
                                            this.Invoke(d_rem, new object[] { Ser });
                                        }
                                        else
                                        {
                                            RemovedChartSeries(Ser);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                DB.returnLock(Lock);
            }
        }