Пример #1
0
        private void ReceiverReplyParse(string data, int index)
        {
            char[] charsToTrim = { '\r', '\n' };
            try
            {
                switch (Int32.Parse(data[6].ToString()))
                {
                case 0:     //receiver name
                    LogConsole.AppendText(DateTime.Now.ToString() + " Channel " + index + " Receiver name: " + data.Substring(8) + Environment.NewLine);
                    receiver_model[index] = data.Substring(8).TrimEnd(charsToTrim);
                    break;

                case 1:     //FW ver
                    LogConsole.AppendText(DateTime.Now.ToString() + " Channel " + index + " FW version: " + data.Substring(8) + Environment.NewLine);
                    receiver_FW[index] = data.Substring(8).TrimEnd(charsToTrim);
                    break;

                case 2:     //Receiver ID
                    LogConsole.AppendText(DateTime.Now.ToString() + " Channel " + index + " Receiver ID: " + data.Substring(8) + Environment.NewLine);
                    receiver_ID[index] = data.Substring(8).TrimEnd(charsToTrim);
                    break;

                default:
                    LogConsole.AppendText(DateTime.Now.ToString() + " Channel " + index + " " + data + Environment.NewLine);
                    break;
                }
            }
            catch (Exception ex)
            {
                LogConsole.AppendText(DateTime.Now.ToString() + " Channel " + index + ex.Message + Environment.NewLine);
            }
        }
        //write output to log
        //couldbe used in the future to incorporate a log file
        private void WriteToLog(string value)
        {
            string dateTimeFormat = string.Format("{0:yyyy-MM-dd:HH-mm-ss}", DateTime.Now);

            LogConsole.AppendText(string.Format("{0}     {1}{2}", dateTimeFormat, value, "\n"));
            File.AppendAllText("Lab2.log", string.Format("{0}     {1}{2}", dateTimeFormat, value, "\n"));
        }
Пример #3
0
        private void ComListing()
        {
            try
            {
                using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE Caption like '%(COM%'"))
                {
                    var portnames = SerialPort.GetPortNames();
                    var ports     = searcher.Get().Cast <ManagementBaseObject>().ToList().Select(p => p["Caption"].ToString());

                    var portList = portnames.Select(n => n + " - " + ports.FirstOrDefault(s => s.Contains(n + ")"))).ToList();

                    foreach (string s in portList)
                    {
                        LogConsole.AppendText(s + Environment.NewLine);

                        //LogUpdate(s, 10);
                    }

                    /*
                     * foreach (string s in portList)
                     * {
                     *  LogConsole.AppendText(s.Substring(s.IndexOf("(")+1, s.IndexOf(")") - s.IndexOf("(")-1) + Environment.NewLine);
                     *  //LogUpdate(s, 10);
                     * }
                     */
                }
            }
            catch (ManagementException e)
            {
                MessageBox.Show(e.Message);
            }
        }
Пример #4
0
        public void TTFSWStop_Click(object sender, EventArgs e)
        {
            TTFSW_soltypeList.Enabled     = true;
            TTFStartButton.Enabled        = true;
            TTFStopButton.Enabled         = false;
            Timeout1TextBox.Enabled       = true;
            Timeout2TextBox.Enabled       = true;
            Command1TextBox.Enabled       = true;
            Command2TextBox.Enabled       = true;
            NumberOfCyclesTextBox.Enabled = true;
            SyncCheckBox1.Enabled         = true;
            aTimer.Enabled = false;
            aTimer.Close();
            progressBar1.Value = 0;
            //this.BeginInvoke(new StatusUpdate(LogUpdate), new object[] { " progressBar1.Value = 0 ", 0 });
            progressBar1.Refresh();
            progressBar1.Update();

            for (int i = 0; i < 8; i++)
            {
                TTFSWmode[i] = 0;
                if (rcv_connected[i] == true)
                {
                    ButtonClose[i].Enabled = true;
                    this.BeginInvoke(new StatusUpdate(STUpdate), new object[] { "Connected", i });
                    try
                    {
                        this.fstream[i].Close();
                        SendCommand2(i);
                    }
                    catch (Exception ex)
                    {
                        LogConsole.AppendText(DateTime.Now.ToString() + "File close error: " + ex.Message + Environment.NewLine);
                    }
                    fstream[i] = null;
                }
                else
                {
                    ButtonOpen[i].Enabled = true;
                }
            }
            string data = TTF_Timeout1.ToString();

            //saving statistics
            filename = "Result" + " " + DateTime.Now.ToString("yyyy-MM-dd HH.mm") + ".csv";
            filename = @System.IO.Path.Combine(FilepathtextBox3.Text.ToString(), filename);
            WriteCSV(dataGridView1, filename);
            WriteCycles();
        }
Пример #5
0
        private void LoadScriptBtn_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK && !string.IsNullOrWhiteSpace(openFileDialog1.FileName))
            {
                StreamReader Scriptreader = new StreamReader(openFileDialog1.FileName);
                string       line;
                Command1TextBox.Text = "";
                Command2TextBox.Text = "";
                LogConsole.AppendText(DateTime.Now.ToString() + " Script file parsing sarted: " + openFileDialog1.FileName + Environment.NewLine);

                line = Scriptreader.ReadLine().Substring(11);
                Timeout1TextBox.Text = line;
                LogConsole.AppendText("Timeout 1: " + line + Environment.NewLine);

                line = Scriptreader.ReadLine().Substring(11);
                Timeout2TextBox.Text = line;
                LogConsole.AppendText("Timeout 2: " + line + Environment.NewLine);

                line = Scriptreader.ReadLine();
                line = line.Substring(line.Length - 1);
                TTFSW_soltypeList.SelectedIndex = int.Parse(line);
                LogConsole.AppendText("Solution Type index: " + line + Environment.NewLine);

                line = Scriptreader.ReadLine().Substring(18);
                NumberOfCyclesTextBox.Text = line;
                LogConsole.AppendText("Number of cycles: " + line + Environment.NewLine);

                line = Scriptreader.ReadLine();
                LogConsole.AppendText(line + Environment.NewLine);

                while ((line = Scriptreader.ReadLine()) != "Command 2:")
                {
                    Command1TextBox.AppendText(line + Environment.NewLine);
                    LogConsole.AppendText(line + Environment.NewLine);
                }
                LogConsole.AppendText(line + Environment.NewLine);

                while ((line = Scriptreader.ReadLine()) != null)
                {
                    Command2TextBox.AppendText(line + Environment.NewLine);
                    LogConsole.AppendText(line + Environment.NewLine);
                }
            }
        }
Пример #6
0
        private void DrawGraph(int i)
        {
            // Получим панель для рисования
            GraphPane pane = zedGraphMain.GraphPane;

            // Создадим список точек
            PointPairList list = new PointPairList();

            double xmin      = double.Parse(MinPercentile_textBox.Text);
            double xmax      = double.Parse(MaxPercentile_textBox.Text);
            double increment = double.Parse(Increment_textBox.Text);
            //LogConsole.AppendText(DateTime.Now.ToString() + "xmin=" + xmin+ "xmax=" + xmax + Environment.NewLine);

            //вычисляем перцентили для каждого канала
            List <double> ttfS_ = new List <double>();
            List <double> ttfD_ = new List <double>();
            List <double> ttfF_ = new List <double>();
            List <double> ttfR_ = new List <double>();

            foreach (TTFcycle TTFtemp in Cycles)
            {
                if (TTFtemp.channel == i)
                {
                    ttfS_.Add(TTFtemp.TTFS);
                    ttfD_.Add(TTFtemp.TTFD);
                    ttfF_.Add(TTFtemp.TTFF);
                    ttfR_.Add(TTFtemp.TTFR);
                }
            }
            if (ttfS_.Count + ttfD_.Count + ttfF_.Count + ttfR_.Count == 0)
            {
                return;
            }

            switch (CurrentMode)
            {
            case 0:

                // Заполняем список точек
                for (double x = xmax; x >= xmin; x -= increment)
                {
                    // добавим в список точку
                    if (Percentile(ttfR_.ToArray(), Math.Round(x, 2)) != Percentile(ttfR_.ToArray(), Math.Round(x + increment, 2)))
                    {
                        list.Add(Percentile(ttfS_.ToArray(), x), x);
                    }
                }
                break;

            case 1:

                // Заполняем список точек
                for (double x = xmax; x >= xmin; x -= increment)
                {
                    // добавим в список точку
                    if (Percentile(ttfR_.ToArray(), Math.Round(x, 2)) != Percentile(ttfR_.ToArray(), Math.Round(x + increment, 2)))
                    {
                        list.Add(Percentile(ttfD_.ToArray(), x), x);
                    }
                    LogConsole.AppendText("Graph point" + " x=" + x + " y=" + Percentile(ttfD_.ToArray(), (x)) + Environment.NewLine);
                }
                break;

            case 2:
                // Заполняем список точек
                for (double x = xmax; x >= xmin; x -= increment)
                {
                    // добавим в список точку
                    if (Math.Round(Percentile(ttfR_.ToArray(), Math.Round(x, 2)), 2) != Math.Round(Percentile(ttfR_.ToArray(), Math.Round(x + increment, 2)), 2))
                    {
                        list.Add(Math.Round(Percentile(ttfR_.ToArray(), Math.Round(x, 2)), 2), Math.Round(x, 2));
                        LogConsole.AppendText("Graph point" + " x=" + Math.Round(x, 2) + " y=" + Math.Round(Percentile(ttfR_.ToArray(), Math.Round(x, 2)), 2) + Environment.NewLine);
                    }
                }
                break;

            default:
                break;
            }

            LineItem myCurve = pane.AddCurve(dataGridView1[12, i + 1].Value.ToString(), list, dataGridView1[11, i + 1].Style.BackColor, SymbolType.None);

            //myCurve.Line.IsSmooth = true;
            myCurve.Line.Width       = 2;
            myCurve.Line.IsAntiAlias = true;

            // Вызываем метод AxisChange (), чтобы обновить данные об осях.
            // В противном случае на рисунке будет показана только часть графика,
            // которая умещается в интервалы по осям, установленные по умолчанию
            zedGraphMain.AxisChange();

            // Обновляем график
            zedGraphMain.Invalidate();
        }
Пример #7
0
 void LogUpdate(string str, int i)
 {
     LogConsole.AppendText(DateTime.Now.ToString() + " Channel " + i + str + Environment.NewLine);
 }
Пример #8
0
        public string SolType(string data, int i)
        {
            string[] parts = data.Split(',');
            if (parts[0].Equals("$GPGGA"))
            {
                rcv_connected[i] = true;
                if (int.TryParse(parts[6], out int SolTypeInt))
                {
                    try
                    {
                        timestamp_date = DateTime.ParseExact(parts[1], "HHmmss.ff", CultureInfo.InvariantCulture);
                    }
                    catch (FormatException)
                    {
                        LogConsole.AppendText(DateTime.Now.ToString() + " " + parts[6] + " " + "is not in the correct format. " + parts + Environment.NewLine);
                    }

                    timestamp[i] = timestamp_date.TimeOfDay.TotalSeconds;
                    switch (SolTypeInt)
                    {
                    case 0:
                        return("None Solution");

                    case 1:
                        if (SolutionLabel[i].Text == "None Solution")
                        {
                            //ttfS[i] = time;
                            ttfS[i] = timestamp[i] - ttf_stop_timestamp[i];
                        }
                        if (TTFSW_soltypeList.SelectedIndex == 0)
                        {
                            if (TTFSWmode[i] == 0)
                            {
                                TTFSWmode[i] = 1;
                                cycle_counter[i]++;
                            }
                        }
                        return("Standalone");

                    case 2:
                    {
                        if (CurrentMode == 1)
                        {
                            if (TTFSWmode[i] == 0)
                            {
                                TTFSWmode[i] = 1;
                                ttfD[i]      = timestamp[i] - ttf_stop_timestamp[i];
                                cycle_counter[i]++;
                            }
                        }
                    }
                        return("DGNSS");

                    case 3:
                        return("PPS");

                    case 4:
                    {
                        if (CurrentMode == 2)
                        {
                            if (TTFSWmode[i] == 0)
                            {
                                TTFSWmode[i] = 1;
                                ttfR[i]      = timestamp[i] - ttf_stop_timestamp[i];
                                cycle_counter[i]++;
                            }
                        }
                    }
                        return("RTK Fix");

                    case 5:

                        if (SolutionLabel[i].Text == "Standalone" | SolutionLabel[i].Text == "None Solution" | SolutionLabel[i].Text == "DGNSS")
                        {
                            ttfF[i] = timestamp[i] - ttf_stop_timestamp[i];
                        }
                        return("RTK Float");

                    default:
                        return("N/A");
                    }
                }
                return("N/A");
            }
            return("N/A");
        }