// 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 } }
// 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; } }