Esempio n. 1
0
 private bool tryToConnectToCOM(string portName)
 {
     // init COM
     if (SerialPort1 != null)
     {
         SerialPort1.Close();
     }
     SerialPort1 = null;
     try
     {
         SerialPort1 = Utils.InitSerialPort(portName);
         SerialPort1.DataReceived += myPort_DataReceived;
         DataStream.AppendText("Connected\n");
         //lastSerialPortName = portName;
     }
     catch (System.UnauthorizedAccessException) {
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
         DataStream.AppendText("Connection failed\n");
         return(false);
     }
     return(true);
 }
Esempio n. 2
0
        private void map_Load(object sender, EventArgs e)
        {
            GMapProviders.GoogleMap.ApiKey = @"AIzaSyAZouhXULQgPGPckADOmiHqfCc_YvD5QzQ";
            map.DragButton  = MouseButtons.Left;
            map.MapProvider = GMapProviders.GoogleHybridMap;

            // map.Position = new PointLatLng(0, 0);
            map.MinZoom = 0;
            map.MaxZoom = 25;
            map.Zoom    = 20;

            GMapOverlay markersOverlay = new GMapOverlay("markers");

            map.Overlays.Add(markersOverlay);
            GMaps.Instance.Mode = AccessMode.CacheOnly; //cache only means offline , server only online , cache and server online but loads offline files to folder
            //map.CacheLocation = System.IO.Path.GetDirectoryName(Application.ExecutablePath); // ta linijka jest ok, przyda sie
            //https://stackoverflow.com/questions/40847505/gmap-net-explicit-load-cache <^ tu masz link to tego // ta widziałem
            // teraz patrze program do zapisywania cache https://github.com/williamwdu/GMap.NETChacher
            try
            {
                map.CacheLocation = @"E:/Visual Studios/Can-Sat-GUI-/cache";
            }
            catch
            {
                DataStream.AppendText("Couldn't load map cache. Using online map.\n");
                GMaps.Instance.Mode = AccessMode.CacheOnly; //cache only means offline , server only online , cache and server online but loads offline files to folder
            }
        }
Esempio n. 3
0
        private async void SendALineFromTextFileEverySecond()
        {
            string         filepath       = String.Empty;
            String         fileExt        = String.Empty;
            OpenFileDialog openFileDialog = new OpenFileDialog();

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                filepath = openFileDialog.FileName;
                fileExt  = Path.GetExtension(filepath);
                Console.WriteLine(filepath + " " + fileExt);
                try
                {
                    StreamReader reader = new StreamReader(filepath);

                    string line = "";
                    while ((line = reader.ReadLine()) != null && ComboBox1.GetItemText(ComboBox1.SelectedItem) == "Text File")
                    {
                        rxString = line + "\n";
                        this.Invoke(new EventHandler(UpdateWidgets));
                        await Task.Delay(1000);
                    }
                    DataStream.AppendText("EOF");
                    reader.Close();
                }
                catch (Exception ex) {
                    Console.WriteLine(ex);
                }
            }
        }
Esempio n. 4
0
        private async void ComPortConnetionRenewer()
        {
            while (true)
            {
                await Task.Delay(1000);

                if ((SerialPort1 == null || !SerialPort1.IsOpen) &&
                    ComboBox1.GetItemText(ComboBox1.SelectedItem) != "" &&
                    ComboBox1.GetItemText(ComboBox1.SelectedItem) != "Text File")
                {
                    string dropdownText = ComboBox1.GetItemText(ComboBox1.SelectedItem);
                    DataStream.AppendText("Connecting to " + dropdownText + "\n");
                    tryToConnectToCOM(dropdownText);
                }
            }
        }
Esempio n. 5
0
        private bool AutoDetectComPort()
        {
            for (int i = 2; i < 8; i++)
            {
                string portName  = "COM" + i;
                bool   connected = tryToConnectToCOM(portName);
                DataStream.AppendText("Connecting to " + portName + "\n");

                if (connected)
                {
                    ComboBox1.SelectedIndex = ComboBox1.FindStringExact(portName);
                    return(true);
                }
            }
            return(true);
        }
Esempio n. 6
0
 private void start_pressure_Click_2(object sender, EventArgs _)
 {
     //double P, T, h;
     try
     {
         P0 = Convert.ToDouble(startalttxt.Text);    //current preassure read by the cansat
         //T = Convert.ToDouble(temptxt.Text.Substring(0, temptxt.Text.Length - 2));  //current temperature read by the cansat
         //h = Convert.ToDouble(startalttxt.Text); //input box with current altitude
     }
     catch (Exception e)
     {
         DataStream.AppendText("Couldn't set pressure at ground station altitude (P0)\n");
         Console.WriteLine(e);
         return;
     }
     // 321 m
     //P0 = Utils.SeaLevelPressure(h, P, T); // calc once at ground level
     DataStream.AppendText(P0 + " hPa set at ground level\n");
 }
Esempio n. 7
0
        public async void UpdateWidgets(object sender, EventArgs e)
        {
            //162;-0.02;-0.12;0.88;0.06;0.12;0.00;277.36;247.41;384.70;1028.69;25.00;X;X;X;X;X;1:0:0;0.00;1.57;-7.42;-43.99
            // RSSI; framenr; xaccel; yaccel; zaccel; xtilt; ytilt; ztilt; xmag; ymag; zmag; pressure; temp; lat; long; alt; speed; course; h:m:s:ms; hall
            DataStream.AppendText(rxString);
            string[] packetElems = Utils.ParsePacket(rxString);
            double   time        = Convert.ToInt32(timer.Elapsed.TotalSeconds);

            if (packetElems == null || packetElems.Length != 24)
            {
                Console.WriteLine("Skipped corrupted packet");
                return;
            }

            rssitxt.Text    = packetElems[0] + " dBm";
            framenrtxt.Text = packetElems[1];
            xacceltxt.Text  = packetElems[2] + " G";
            yacceltxt.Text  = packetElems[3] + " G";
            zacceltxt.Text  = packetElems[4] + " G";
            xtilttxt.Text   = packetElems[5] + " °/s";
            ytilttxt.Text   = packetElems[6] + " °/s";
            ztilttxt.Text   = packetElems[7] + " °/s";
            xmagtxt.Text    = packetElems[8] + " µT";
            ymagtxt.Text    = packetElems[9] + " µT";
            zmagtxt.Text    = packetElems[10] + " µT";
            psrtxt.Text     = packetElems[11] + " hPa";
            temptxt.Text    = packetElems[12] + " C";

            speedtxt.Text  = packetElems[16] + "m/s";
            coursetxt.Text = packetElems[17] + " °";
            timetxt.Text   = packetElems[18];
            halltxt.Text   = packetElems[19] + " Hz";
            pitchtxt.Text  = packetElems[20] + " °";
            rolltxt.Text   = packetElems[21] + " °";
            yawtxt.Text    = packetElems[22] + " °";
            volttxt.Text   = packetElems[23];

            double pressure    = Convert.ToDouble(packetElems[11]);
            double temperature = Convert.ToDouble(packetElems[12]);

            Upd.UpdateChart(chart2, pressure, time);

            if (packetElems[13] == "x" || packetElems[13] == "X")
            {
                lattxt.Text      = "NO GPS";
                longtxt.Text     = "NO GPS";
                previousAltitude = -1;
            }
            else
            {
                // lat; long; alt; speed; course
                lattxt.Text  = packetElems[13];
                longtxt.Text = packetElems[14];

                double latitude  = Convert.ToDouble(packetElems[13]);
                double Longitude = Convert.ToDouble(packetElems[14]);

                double Altitude;
                if (checkBox2.Checked)
                {
                    Altitude    = Utils.HypsometricFormula(P0, pressure, temperature);
                    alttxt.Text = Altitude + " m";
                }
                else
                {
                    alttxt.Text = packetElems[15] + " m";
                    Altitude    = Convert.ToDouble(packetElems[15]);
                }


                double speed  = Convert.ToDouble(packetElems[16]);
                double course = Convert.ToDouble(packetElems[17]);

                double fallingSpeed;
                if (previousAltitude == -1)
                {
                    fallingSpeed = 0;
                }
                else
                {
                    fallingSpeed = previousAltitude - Altitude;
                }
                gauge1.Update(fallingSpeed);


                Upd.UpdateMap(map, latitude, Longitude, Altitude, fallingSpeed, speed, (int)course);
                lastPoint = new PointLatLng(latitude, Longitude);
                chart3D.Update(latitude, Longitude, Altitude);

                vertveltxt.Text = fallingSpeed.ToString() + " m/s";

                previousAltitude = Altitude;
                Upd.UpdateChart(chart4, Altitude, time);

                Upd.UpdateChart(chart6, speed, time);

                pictureBox1.Image = Compass.DrawCompass(course / 100, 0, 80, 0, 80, pictureBox1.Size);
            }

            pitch = float.Parse(packetElems[20], CultureInfo.InvariantCulture.NumberFormat);
            roll  = float.Parse(packetElems[21], CultureInfo.InvariantCulture.NumberFormat);
            yaw   = float.Parse(packetElems[22], CultureInfo.InvariantCulture.NumberFormat);

            Upd.UpdateChart(chart1, temperature, time);



            // double course = (Convert.ToDouble(packetElems[17])/100);
            //Upd.UpdateChart(chart7, course, time);

            double Hall      = Convert.ToDouble(packetElems[19]);
            double windSpeed = Utils.WindSpeed(Hall);

            Upd.UpdateChart(chart3, windSpeed, time);


            windtxt.Text = Convert.ToString(windSpeed);;


            double signal = Convert.ToDouble(packetElems[0]);
            //gauge2.Update(chart5, signal, time);
            double signalPercent = Utils.SignalStrengthInPercent(signal);

            gauge2.Update(signalPercent);



            // socketio
            string json = JsonConvert.SerializeObject(new { psrtxt = psrtxt.Text, tmptxt = temptxt.Text, txtLat = lattxt.Text, txtLong = longtxt.Text, hghttext = alttxt.Text });

            try
            {
                _ = client.EmitAsync("data", json);
            }
            catch { }
        }