Example #1
0
        // Logowanie do serwera sędziów
        private void buttonLogin_Click(object sender, EventArgs e)
        {
            string url = textBoxURL.Text;

            interopURL = url;                                                                    // Tylko ponowne zalogowanie zmienia url serwera
            string uri          = "/api/login";
            string username     = textBoxUsername.Text;
            string password     = textBoxPassword.Text;
            string myParameters = "username="******"&" + "password="******"application/x-www-form-urlencoded"; // Potrzebne
                string httpResult = wc.UploadString(uri, myParameters);
                cookies = wc.CookieContainer;                                                    // Zapisuje otrzymane cookies
                textBoxHTTPResult.Text = httpResult;
                zalogowano             = true;
                // textBoxHTTPResult.Text += "\nCookies: " + cookies.GetCookieHeader(new Uri(url + uri)); // Wyświetla cookies
            }
        }
Example #2
0
        // Wyslanie telemetrii
        private void buttonWysylajTelemetrie_Click(object sender, EventArgs e)
        {
            Thread myThread = new Thread(() =>
            {
                int cnt = 10;
                Thread.CurrentThread.IsBackground = true;
                string url        = interopURL;
                string uri        = "/api/telemetry";
                string httpResult = "Error: Bad URL or not logged in";
                double latitude, longitude, altitude, course;

                while (true)
                {
                    latitude  = plugin.Host.cs.lat;
                    longitude = plugin.Host.cs.lng;
                    altitude  = plugin.Host.cs.alt;
                    course    = plugin.Host.cs.groundcourse;


                    string myParameters = "latitude=" + latitude.ToString(System.Globalization.CultureInfo.InvariantCulture) + "&" +          // Kropki zamiast przecinków
                                          "longitude=" + longitude.ToString(System.Globalization.CultureInfo.InvariantCulture) + "&" +        // Kropki zamiast przecinków
                                          "altitude_msl=" + altitude.ToString(System.Globalization.CultureInfo.InvariantCulture) + "&" +      // Kropki zamiast przecinków
                                          "uas_heading=" + course.ToString(System.Globalization.CultureInfo.InvariantCulture);                // Kropki zamiast przecinków


                    using (CookieWebClient wc = new CookieWebClient(cookies))
                    {
                        try
                        {
                            wc.BaseAddress = url;
                            wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; //  Za każdym razem trzeba dodać
                            httpResult = wc.UploadString(uri, myParameters);
                        }
                        catch (WebException)
                        {
                            telemetryThreadStop = true;
                        }
                        catch (Exception ex)
                        {
                            telemetryThreadStop = true;
                        }
                    }

                    cnt++;
                    if (cnt >= 10)               // Co dziesiąte wysłanie telemetri wyświetla komunikat
                    {
                        cnt = 0;
                        this.Invoke(new MethodInvoker(delegate()
                        {
                            updateTextBoxTelem(httpResult);
                        }));
                    }

                    if (telemetryThreadStop)
                    {
                        break;                                      // Kończy wątek
                    }
                }
            });

            if (buttonWysylajTelemetrie.Text == "START Telemetria")
            {
                if (myThread.IsAlive == true)
                {
                    return;
                }

                buttonWysylajTelemetrie.Text      = "STOP Telemetria";
                buttonWysylajTelemetrie.BackColor = Color.Red;
                telemetryThreadStop = false;
                myThread.Start();
            }
            else if (buttonWysylajTelemetrie.Text == "STOP Telemetria")
            {
                buttonWysylajTelemetrie.Text      = "START Telemetria";
                buttonWysylajTelemetrie.BackColor = Color.Green;
                telemetryThreadStop = true;
            }
        }
Example #3
0
        // Wyświetla przeszkody ruchome
        private void buttonWyswietlPrzeszkodyRuchome_Click(object sender, EventArgs e) // Korzysta z cookies, zapisanych przy logowaniu
        {
            Thread myThread = new Thread(() =>
            {
                Thread.CurrentThread.IsBackground = true;
                string url        = interopURL;
                string uri        = "/api/obstacles";
                string httpResult = "Error: Bad URL or not logged in";

                while (true)
                {
                    using (CookieWebClient wc = new CookieWebClient(cookies))
                    {
                        try
                        {
                            wc.BaseAddress = url;
                            httpResult     = wc.DownloadString(uri);
                            //   dynamic obstacles = JsonConvert.DeserializeObject(httpResult);

                            // Dane do testów bez konieczności łączenia z serwerem
                            string jsonDataObstacles = "{'stationary_obstacles': [{'latitude': 38.14792, 'cylinder_height': 200.0, 'cylinder_radius': 150.0, 'longitude': -76.427995}, {'latitude': 38.145823, 'cylinder_height': 300.0, 'cylinder_radius': 50.0, 'longitude': -76.422396}], 'moving_obstacles': [{'latitude': 38.14231360808151, 'sphere_radius': 50.0, 'altitude_msl': 269.53771210358616, 'longitude': -76.42518343430758}]}";
                            dynamic obstacles        = JsonConvert.DeserializeObject(jsonDataObstacles);

                            foreach (var movingObstacle in obstacles.moving_obstacles)
                            {
                                double lat          = movingObstacle.latitude;
                                double lng          = movingObstacle.longitude;
                                double alt          = movingObstacle.altitude_msl;
                                double radiusMeters = movingObstacle.sphere_radius;
                                double radius       = movingObstacle.sphere_radius / 111200.0;
                                double aspect       = 1.271438; // Stosunek 1m szerok. geograf do 1m dł geograficznej

                                List <PointLatLng> gpollist = new List <PointLatLng>();
                                int segments = 15;
                                double seg   = Math.PI * 2 / segments;
                                for (int i = 0; i < segments; i++)
                                {
                                    double theta     = seg * i;
                                    double a         = lat + Math.Cos(theta) * radius;
                                    double b         = lng + Math.Sin(theta) * radius * aspect;
                                    PointLatLng gpoi = new PointLatLng(a, b);
                                    gpollist.Add(gpoi);
                                }
                                GMapPolygon gpol = new GMapPolygon(gpollist, "pol");
                                gpol.Fill        = new SolidBrush(Color.FromArgb(50, Color.Yellow));
                                gpol.Stroke      = new Pen(Color.Yellow, 1);
                                movingObstaclesOverlay.Polygons.Add(gpol);

                                GMarkerGoogle marker = new GMarkerGoogle(new PointLatLng(lat, lng), GMarkerGoogleType.blue);
                                myMarkersOverlay.Markers.Add(marker);
                                marker.ToolTipMode = MarkerTooltipMode.Always;
                                marker.ToolTip     = new GMapRoundedToolTip(marker);
                                marker.ToolTipText = ((int)alt - radiusMeters / 2).ToString() + "-" + ((int)alt + radiusMeters / 2).ToString() + "msl";
                            }
                        }
                        catch (WebException)
                        {
                            ruchomePrzeszkodyThreadStop = true;
                        }
                        catch (Exception ex)
                        {
                            ruchomePrzeszkodyThreadStop = true;
                        }
                    }

                    if (ruchomePrzeszkodyThreadStop)
                    {
                        break;                                      // Kończy wątek
                    }
                    Thread.Sleep(1000);                             // Czeka
                }
            });

            if (buttonWyswietlPrzeszkodyRuchome.Text == "START Ruchome Przeszkody")
            {
                if (myThread.IsAlive == true)
                {
                    return;
                }

                buttonWyswietlPrzeszkodyRuchome.Text      = "STOP Ruchome Przeszkody";
                buttonWyswietlPrzeszkodyRuchome.BackColor = Color.Red;
                ruchomePrzeszkodyThreadStop = false;
                myThread.Start();
            }
            else if (buttonWyswietlPrzeszkodyRuchome.Text == "STOP Ruchome Przeszkody")
            {
                buttonWyswietlPrzeszkodyRuchome.Text      = "START Ruchome Przeszkody";
                buttonWyswietlPrzeszkodyRuchome.BackColor = Color.Green;
                ruchomePrzeszkodyThreadStop = true;
            }
        }