Beispiel #1
0
        public static Signal loadSignal()
        {
            //file dialog
            Microsoft.Win32.OpenFileDialog dialog = new Microsoft.Win32.OpenFileDialog();
            dialog.Filter = dialog.Filter = "csv file (.csv)|*.csv";

            //if file was readed
            if (dialog.ShowDialog() == true)
            {
                Signal resultSignal = new Signal();

                //read all text
                string signalString = File.ReadAllText(dialog.FileName);

                //split csv
                string[] signalArray = signalString.Split(',');

                /*content = titleName + "," +
                      chartAreaName + "," +
                      seriesName + "," +
                      title + "," +
                      xTitle + "," +
                      yTitle + "," +
                      regExpMatchString + "," +
                      regExpParseString;*/

                //title
                resultSignal.title.Text = DecodeFrom64(signalArray[3]);
                resultSignal.title.Name = DecodeFrom64(signalArray[0]);

                //chartArea
                resultSignal.chartArea.Name = DecodeFrom64(signalArray[1]);
                resultSignal.chartArea.AxisX.Title = DecodeFrom64(signalArray[4]);
                resultSignal.chartArea.AxisY.Title = DecodeFrom64(signalArray[5]);

                //regExp
                resultSignal.updateRegExpParse(DecodeFrom64(signalArray[7]));
                resultSignal.updateRegExpMatch(DecodeFrom64(signalArray[6]));

                //series
                resultSignal.series.Name = DecodeFrom64(signalArray[2]);

                //color
                resultSignal.lineColor = DecodeFrom64(signalArray[8]);

                //read values
                for (int i = 9; i < signalArray.Length; i++)
                {
                    double valueDouble = double.Parse(signalArray[i], CultureInfo.InvariantCulture);
                    resultSignal.series.Points.AddY(valueDouble);
                }

                //return signal
                return resultSignal;
            }
            else
            {
                return null;
            }
        }
Beispiel #2
0
        public static string saveSignal(Signal sig)
        {
            Microsoft.Win32.SaveFileDialog dialog = new Microsoft.Win32.SaveFileDialog();
            dialog.Filter = dialog.Filter = "csv file (.csv)|*.csv";
            //place where to save
            string path = ""; //replace with save dialog

            string content;

            //title stuff
            string title = EncodeTo64(sig.title.Text);
            string titleName = EncodeTo64(sig.title.Name);

            //chartArea
            string chartAreaName = EncodeTo64(sig.chartArea.Name);
            string xTitle = EncodeTo64(sig.chartArea.AxisX.Title);
            string yTitle = EncodeTo64(sig.chartArea.AxisY.Title);

            //regExp
            string regExpParseString = EncodeTo64(sig.regExpParseString);
            string regExpMatchString = EncodeTo64(sig.regExpMatchString);

            //series
            string seriesName = EncodeTo64(sig.series.Name);

            //color
            string lineColor = EncodeTo64(sig.lineColor);

            content = titleName + "," +
                      chartAreaName + "," +
                      seriesName + "," +
                      title + "," +
                      xTitle + "," +
                      yTitle + "," +
                      regExpMatchString + "," +
                      regExpParseString + "," +
                      lineColor;

            foreach(DataPoint value in sig.series.Points)
            {
                content += "," + value.YValues[0].ToString(CultureInfo.InvariantCulture);
            }

            //save file if dialog ok
            if (dialog.ShowDialog() == true)
            {
                File.WriteAllText(dialog.FileName, content);
            }

            //save in this format
            //<signal title:"xxx", xTitle="", yTitle"", regExpMatch"", regExpParse"", startTime Value="yyyyMMDD">
            //HHMMSSxxxx, 12.32412, //delta from begining
            //34.123,
            //43.234,
            //56.235
            //<signal/>
            return path;
        }
        //edit purposes
        public signalWindow(Signal sig)
        {
            InitializeComponent();

            textBoxTitle.Text = sig.title.Text;
            textBoxXTitle.Text = sig.chartArea.AxisX.Title;
            textBoxYTitle.Text = sig.chartArea.AxisY.Title;
            textBoxRegExpMatch.Text = sig.regExpMatchString;
            textBoxRegExpParse.Text = sig.regExpParseString;
            comboBoxColor.SelectedItem = sig.lineColor;
        }
        /// <summary>
        /// Event function for OK button
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonOK_Click(object sender, RoutedEventArgs e)
        {
            //apply values
            tempSignal.title.Text = textBoxTitle.Text;
            tempSignal.chartArea.AxisX.Title = textBoxXTitle.Text;
            tempSignal.chartArea.AxisY.Title = textBoxYTitle.Text;
            tempSignal.lineColor = comboBoxColor.SelectedItem as string;
            if (tempSignal.updateRegExpMatch(textBoxRegExpMatch.Text)) //match fail
            {
                MessageBox.Show("Regular Expression match pattern error!");
                textBoxRegExpMatch.Focus();
            }
            else if (tempSignal.updateRegExpParse(textBoxRegExpParse.Text)) //parse fail
            {
                MessageBox.Show("Regular Expression parse pattern error!");
                textBoxRegExpParse.Focus();
            }
            else //all ok
            {
                //all ok replace signal
                resultSignal = tempSignal;

                //close window
                this.Close();
            }
        }
 /// <summary> ADD PLOT SIGNAL
 /// </summary>
 private void setSignalToPlot(Signal signal)
 {
     //find if there is signal named that
     if (mainChart.ChartAreas.FindByName(signal.chartArea.Name) == null) //true = not found
     {
         mainChart.ChartAreas.Add(signal.chartArea);
         mainChart.Series.Add(signal.series);
         mainChart.Series[mainChart.Series.Count - 1].ChartArea = signal.chartArea.Name;
         mainChart.Titles.Add(signal.title);
         mainChart.Titles[mainChart.Titles.Count - 1].DockedToChartArea = signal.chartArea.Name;
     }
 }
        /// <summary> Edit signal button
        /// </summary>
        private Signal editSignal(Signal sig)
        {
            //start dialog
            signalWindow signalDialog = new signalWindow(sig);
            signalDialog.ShowDialog();

            if (signalDialog.resultSignal != null) //something was changed
            {
                //copy titles from "created" signal
                sig.title.Text = signalDialog.resultSignal.title.Text;
                sig.chartArea.AxisX.Title = signalDialog.resultSignal.chartArea.AxisX.Title;
                sig.chartArea.AxisY.Title = signalDialog.resultSignal.chartArea.AxisY.Title;

                //series
                sig.lineColor = signalDialog.resultSignal.lineColor;

                //update regexps should be ok because they are checked while creating new signal
                sig.updateRegExpMatch(signalDialog.resultSignal.regExpMatchString);
                sig.updateRegExpParse(signalDialog.resultSignal.regExpParseString);
            }
            return sig;
        }
        /// <summary> DELETE PLOT SIGNAL
        /// </summary>
        private void deleteSignalFromPlot(Signal signal)
        {
            //remove title
            if (mainChart.Titles.FindByName(signal.title.Name) != null)
                mainChart.Titles.Remove(signal.title);
            else
                Debug.WriteLine("deletedSignalFromPlot: tried to remove non existent item" + signal.title.Name, "ERROR");

            //remove series
            if (mainChart.Series.FindByName(signal.series.Name) != null)
                mainChart.Series.Remove(signal.series);
            else
                Debug.WriteLine("deletedSignalFromPlot: tried to remove non existent item" + signal.series.Name, "ERROR");

            //remove chart area
            if (mainChart.ChartAreas.FindByName(signal.chartArea.Name) != null)
                mainChart.ChartAreas.Remove(signal.chartArea);
            else
                Debug.WriteLine("deletedSignalFromPlot: tried to remove non existent item" + signal.chartArea.Name, "ERROR");
        }