コード例 #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
            }
        }
コード例 #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;
            }
        }