/// <summary> /// Sobald der UDP-Server Daten empfängt, wird über Events diese Methode aufgerufen /// </summary> /// <param name="sender">Objekt der UDP-Server-Klasse, dass die Daten empfangen hat</param> /// <param name="e">Übermittelte Informationen</param> public void EmpfangeDaten(object sender, DatenEventArgs e) { Application.DoEvents(); if ((e.Variablen_name == null) && (e.Paket == null)) { return; } if (e.Paket == null) { //Mitteilung vom Server erhalten, z.B. Fehler, Statusbericht if (e.Variablen_name.Equals("error", StringComparison.InvariantCultureIgnoreCase) == true) { error(null, "UDP-Server-Error: " + e.Inhalt); } else if (e.Variablen_name.Equals("hint", StringComparison.InvariantCultureIgnoreCase) == true) { display("Hint from UDP-Server: " + e.Inhalt); } } else { //Paket empfangen //Unterscheidung ob Befehl oder normales Paket if (e.Inhalt == null) { //Normales Paket } else { //Befehl erhalten switch (e.Inhalt) { case "store": if (e.Paket.Timestamp != null) { Server.send_answer(true, "500", e.Paket.Timestamp); //500ms Wartezeit } lastLatitude = Latitude; lastLongitude = Longitude; if (e.Paket.Timestamp != null) { Server.send_answer(false, null, e.Paket.Timestamp); } break; default: display("Unknown Command received!"); break; } } } }
//Empfängt Befehle von der UDP-Multicastgruppe private void EmpfangeDaten(object sender, DatenEventArgs e) { try { //Überprüfung ob richtiges Paket oder nur eine Mitteilung von der Serverklasse erhalten if ((e.Sender_Typ != 0) && (e.Sender_ID != 0)) { if (e.Inhalt == "data") { //Daten über einen Stream erhalten byte[] ByteMessage = Server.getStreamData(e.Sender_Typ, e.Sender_ID); } else { //Paket über UDP empfangen if (e.Paket.isStatus) { evaluateStatusMessage(e.Paket); //Statusnachricht } else { evaluateCommand(e.Paket); //Befehl } } } else { //Mitteilung vom Server erhalten, z.B. Fehler, Statusbericht if (e.Variablen_name == "error") { error(null, "UDP-Server-Error: " + e.Inhalt); } else if (e.Variablen_name == "hint") { statusBox.print("Hint from UDP-Server: " + e.Inhalt); } else { statusBox.print("Warning from UDP-Server: " + e.Inhalt); } } } catch (Exception ex) { statusBox.print("Error @ receive packets: " + ex.Message + ":" + ex.ToString()); } }
/// <summary> /// Sobald der UDP-Server Daten empfängt, wird über Events diese Methode aufgerufen /// </summary> /// <param name="sender">Objekt der UDP-Server-Klasse, dass die Daten empfangen hat</param> /// <param name="e">Übermittelte Informationen</param> public void EmpfangeDaten(object sender, DatenEventArgs e) { Application.DoEvents(); if ((e.Variablen_name == null) && (e.Paket == null)) { return; } //Wenn Funktion aus anderem Thread aufgegerufen wird: if (e.Paket == null) { //Mitteilung vom Server erhalten, z.B. Fehler, Statusbericht if (e.Variablen_name.Equals("error", StringComparison.InvariantCultureIgnoreCase) == true) { error(null, "UDP-Server-Error: " + e.Inhalt); } else if (e.Variablen_name.Equals("hint", StringComparison.InvariantCultureIgnoreCase) == true) { display("Hint from UDP-Server: " + e.Inhalt); } } else { //Paket empfangen //Unterscheidung ob Befehl oder normales Paket if (e.Inhalt == null) { //Normales Paket } else { //Befehl erhalten switch (e.Inhalt) { case "move": //Empfangsbestätigung, wenn angefordert if (e.Paket.Timestamp != null) { Server.send_answer(true, "100", e.Paket.Timestamp); } //Befehl ausführen string x = ""; string y = ""; sbyte status = 0; if (e.Paket.Content.TryGetValue("x", out x) && e.Paket.Content.TryGetValue("y", out y)) { status = xy_tisch_goto(Convert.ToInt32(x), Convert.ToInt32(y)); } else { status = xy_tisch_init(); } Thread.Sleep(500); Application.DoEvents(); display(status_code_to_string(status)); //Ausführungsbestätigung if ((e.Paket.Timestamp != null) && ((status == 100) || (status == 10) || (status == 6))) { Server.send_answer(false, null, e.Paket.Timestamp); } break; default: display("Unknown Command received!"); break; } } } //}; //Invoke(LabelUpdate); }
/// <summary> /// Sobald der UDP-Server Daten empfängt, wird über Events diese Methode aufgerufen /// </summary> /// <param name="sender">Objekt der UDP-Server-Klasse, dass die Daten empfangen hat</param> /// <param name="e">Übermittelte Informationen</param> public void EmpfangeDaten(object sender, DatenEventArgs e) { Application.DoEvents(); if ((e.Variablen_name == null) && (e.Paket == null)) { return; } if (e.Paket == null) { //Mitteilung vom Server erhalten, z.B. Fehler, Statusbericht if (e.Variablen_name.Equals("error", StringComparison.InvariantCultureIgnoreCase) == true) { error(null, "UDP-Server-Error: " + e.Inhalt); } else if (e.Variablen_name.Equals("hint", StringComparison.InvariantCultureIgnoreCase) == true) { display("Hint from UDP-Server: " + e.Inhalt); } } else { //Paket empfangen //Unterscheidung ob Befehl oder normales Paket if (e.Inhalt == null) { //Normales Paket } else { string timestamp = ""; string befehl = null; //Befehl erhalten switch (e.Inhalt) { case "name": if (e.Paket.Timestamp != null) { Server.send_answer(true, "5", timestamp); //500ms Wartezeit } Server.SendData("name", serverName); if (e.Paket.Timestamp != null) { Server.send_answer(false, null, timestamp); } break; case "shutdown": if (e.Paket.Timestamp != null) { Server.send_answer(true, "5", timestamp); //500ms Wartezeit } Shutdown("1"); if (e.Paket.Timestamp != null) { Server.send_answer(false, null, timestamp); } break; case "cmd": if (e.Paket.Timestamp != null) { Server.send_answer(true, "6000", timestamp); //600s Wartezeit } if (e.Paket.Content.TryGetValue("value", out befehl)) { Server.SendData("response", execute_cmd(befehl)); } if (e.Paket.Timestamp != null) { Server.send_answer(false, null, timestamp); } break; case "restart": case "reboot": if (e.Paket.Timestamp != null) { Server.send_answer(true, "5", timestamp); //500ms Wartezeit } Shutdown("6"); if (e.Paket.Timestamp != null) { Server.send_answer(false, null, timestamp); } break; default: display("Unknown Command received!"); Server.SendData("error", "Unknown Command received!"); break; } } } }
public void EmpfangeDaten(object sender, DatenEventArgs e) { if (e.Paket == null) { //Mitteilung vom Server erhalten, z.B. Fehler, Statusbericht if (e.Variablen_name.Equals("error", StringComparison.InvariantCultureIgnoreCase) == true) { error(null, "UDP-Server-Error: " + e.Inhalt); } else if (e.Variablen_name.Equals("hint", StringComparison.InvariantCultureIgnoreCase) == true) { display("Hint from UDP-Server: " + e.Inhalt); } } else { //Paket empfangen //Unterscheidung ob Befehl oder normales Paket if (e.Inhalt == null) { } else { //Wenn Funktion aus anderem Thread aufgegerufen wird: MethodInvoker LabelUpdate = delegate { //Befehle dekodieren switch (e.Inhalt) { case "move": //Empfangsbestätigung, wenn angefordert if (e.Paket.Timestamp != null) { Server.send_answer(true, "450", e.Paket.Timestamp); } //Befehl ausführen string angle = ""; if (e.Paket.Content.TryGetValue("angle", out angle)) { bewege_drehtisch(Convert.ToInt32(angle)); } else { bewege_drehtisch(0); } //Ausführungsbestätigung if (e.Paket.Timestamp != null) { Server.send_answer(false, null, e.Paket.Timestamp); } break; default: display("Unknown Command! " + e.Inhalt); break; } }; Invoke(LabelUpdate); } } }