示例#1
0
        /// <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;
                    }
                }
            }
        }
示例#2
0
 //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());
     }
 }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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;
                    }
                }
            }
        }
示例#5
0
        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);
                }
            }
        }