Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            if (System.Threading.Thread.CurrentThread.CurrentCulture.Name != "en-US")
            {
                System.Threading.Thread.CurrentThread.CurrentCulture = new
                                                                       System.Globalization.CultureInfo("en-US");
            }
            Double i    = -49;
            object test = i;

            Console.Write("Running on " + Convert.ToDouble(test));
            if (FlightControlCommons.UsbHelper.IsLinux)
            {
                Console.WriteLine("Linux");
            }
            else
            {
                Console.WriteLine("Windows");
            }

            Console.WriteLine("Flight Control Service");
            Console.WriteLine("Controls the UAV");
            Console.WriteLine("");

            string autosavetimestr = ConfigurationSettings.AppSettings ["AutoSaveTime"];

            if (Int32.TryParse(autosavetimestr, out autoSaveTime))
            {
                autoSaveTimer = new Timer(new TimerCallback(Program.AutoSave), null, 10000, autoSaveTime);
                Console.WriteLine("AutoSaveTimer Set from Config File!");
            }

            filename = ConfigurationSettings.AppSettings ["UAVFilename"];
            bool loadFromFile = false;

            try {
                loadFromFile = Convert.ToBoolean(ConfigurationSettings.AppSettings ["LoadSettingsFromFile"]);
            } catch (Exception ex) {
                Console.WriteLine("Can not parse LoadSettingsFromFile in Config File");
            }


            uav = new VTOLUAV();



            Console.WriteLine("Connecting to GroundControl..");
            if (Convert.ToBoolean(ConfigurationSettings.AppSettings ["WLAN"]))
            {
                // Baue Kommunikationskanal für Befehle in beide Richtungen auf
                TCPCommunicationEndPoint controlconnection = new TCPCommunicationEndPoint();
                controlconnection.commType       = CommunicationEndpoint.Communicationtype.Command;
                controlconnection.endpointAdress = ConfigurationSettings.AppSettings ["GroundIP"];                 // IP Addresse der Gegenstelle (Groundkontroll)
                controlconnection.endpointPort   = Convert.ToInt32(ConfigurationSettings.AppSettings ["GroundCommandPort"]);
                /// Kommunikationskanal muss auf beiden seiten gleich sein
                controlconnection.endpointSpeedType = CommunicationEndpoint.SpeedType.Wifi; // Geschwindigkeit
                controlconnection.listen            = false;                                // einer muss verbindungen annehmen (Server) der andere hinverbinden (Connect)
                controlconnection.cmdHandler        = uav;
                uav.knownEndpoints.Add(controlconnection);                                  // Aktiviere Kommunikationskanal
            }
            if (Convert.ToBoolean(ConfigurationSettings.AppSettings ["VPN"]))
            {
                // Baue Kommunikationskanal für Empfang von Werten von der Bodenstation
                TCPCommunicationEndPoint recieveConnection1 = new TCPCommunicationEndPoint();
                recieveConnection1.commType          = CommunicationEndpoint.Communicationtype.Send;
                recieveConnection1.endpointAdress    = ConfigurationSettings.AppSettings ["VPNGroundIP"];
                recieveConnection1.endpointPort      = Convert.ToInt32(ConfigurationSettings.AppSettings ["VPNSendPort"]);
                recieveConnection1.endpointSpeedType = CommunicationEndpoint.SpeedType.Gprs3G;
                recieveConnection1.listen            = false;
                uav.knownEndpoints.Add(recieveConnection1);

                // Baue Kommunikationskanal für das Senden von Werten zur Bodenstation auf
                TCPCommunicationEndPoint sendConnection1 = new TCPCommunicationEndPoint();
                sendConnection1.commType          = CommunicationEndpoint.Communicationtype.Recieve;
                sendConnection1.endpointAdress    = ConfigurationSettings.AppSettings ["VPNGroundIP"];
                sendConnection1.endpointPort      = Convert.ToInt32(ConfigurationSettings.AppSettings ["VPNRecievePort"]);
                sendConnection1.endpointSpeedType = CommunicationEndpoint.SpeedType.Gprs3G;
                sendConnection1.listen            = false;
                uav.knownEndpoints.Add(sendConnection1);
            }
            if (Convert.ToBoolean(ConfigurationSettings.AppSettings ["WLAN"]))
            {
                TCPCommunicationEndPoint recieveConnection = new TCPCommunicationEndPoint();
                recieveConnection.commType          = CommunicationEndpoint.Communicationtype.Send;
                recieveConnection.endpointAdress    = ConfigurationSettings.AppSettings ["GroundIP"];
                recieveConnection.endpointPort      = Convert.ToInt32(ConfigurationSettings.AppSettings ["SendPort"]);
                recieveConnection.endpointSpeedType = CommunicationEndpoint.SpeedType.Wifi;
                recieveConnection.listen            = false;
                uav.knownEndpoints.Add(recieveConnection);

                // Baue Kommunikationskanal für das Senden von Werten zur Bodenstation auf
                TCPCommunicationEndPoint sendConnection = new TCPCommunicationEndPoint();
                sendConnection.commType          = CommunicationEndpoint.Communicationtype.Recieve;
                sendConnection.endpointAdress    = ConfigurationSettings.AppSettings ["GroundIP"];
                sendConnection.endpointPort      = Convert.ToInt32(ConfigurationSettings.AppSettings ["RecievePort"]);
                sendConnection.endpointSpeedType = CommunicationEndpoint.SpeedType.Wifi;
                sendConnection.listen            = false;
                uav.knownEndpoints.Add(sendConnection);
            }



            if (loadFromFile)
            {
                if (File.Exists(filename))
                {
                    try
                    {
                        Console.WriteLine("Load Values from File");
                        using (FileStream stream = File.OpenRead(filename))
                        {
                            UAVBase.LoadValues(stream, uav);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Fehler beim Einlesen der Config Datei " + filename);
                        File.Delete(filename);
                        throw ex;
                    }
                }
            }

            uav.OnLoad(); //Load all non serialised objects from uav and connect to hardware


            uav.run();
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            //	PWM test = new PWM("",0,"",0);

            //	return;
            Console.Write("Running on ");
            if (FlightControlCommons.UsbHelper.IsLinux)
            {
                Console.WriteLine("Linux");
            }
            else
            {
                Console.WriteLine("Windows");
            }


            Console.WriteLine("Flight Control Service");
            Console.WriteLine("Controls the UAV");
            Console.WriteLine("");

            string autosavetimestr = ConfigurationSettings.AppSettings ["AutoSaveTime"];

            if (Int32.TryParse(autosavetimestr, out autoSaveTime))
            {
                autoSaveTimer = new Timer(new TimerCallback(Program.AutoSave), null, 10000, autoSaveTime);
                Console.WriteLine("AutoSaveTimer Set from Config File!");
            }

            filename = ConfigurationSettings.AppSettings ["UAVFilename"];
            bool loadFromFile = false;

            try {
                loadFromFile = Convert.ToBoolean(ConfigurationSettings.AppSettings ["LoadSettingsFromFile"]);
            } catch (Exception ex) {
                Console.WriteLine("Can not parse LoadSettingsFromFile in Config File");
            }


            uav = new VTOLUAV();



            Console.WriteLine("Connecting to GroundControl..");
            if (Convert.ToBoolean(ConfigurationSettings.AppSettings ["WLAN"]))
            {
                // Baue Kommunikationskanal für Befehle in beide Richtungen auf
                TCPCommunicationEndPoint controlconnection = new TCPCommunicationEndPoint();
                controlconnection.commType       = CommunicationEndpoint.Communicationtype.Command;
                controlconnection.endpointAdress = ConfigurationSettings.AppSettings ["GroundIP"];                 // IP Addresse der Gegenstelle (Groundkontroll)
                controlconnection.endpointPort   = Convert.ToInt32(ConfigurationSettings.AppSettings ["GroundCommandPort"]);
                /// Kommunikationskanal muss auf beiden seiten gleich sein
                controlconnection.endpointSpeedType = CommunicationEndpoint.SpeedType.Wifi; // Geschwindigkeit
                controlconnection.listen            = false;                                // einer muss verbindungen annehmen (Server) der andere hinverbinden (Connect)
                controlconnection.cmdHandler        = uav;
                uav.knownEndpoints.Add(controlconnection);                                  // Aktiviere Kommunikationskanal
            }
            if (Convert.ToBoolean(ConfigurationSettings.AppSettings ["VPN"]))
            {
                // Baue Kommunikationskanal für Empfang von Werten von der Bodenstation
                TCPCommunicationEndPoint recieveConnection1 = new TCPCommunicationEndPoint();
                recieveConnection1.commType          = CommunicationEndpoint.Communicationtype.Send;
                recieveConnection1.endpointAdress    = ConfigurationSettings.AppSettings ["VPNGroundIP"];
                recieveConnection1.endpointPort      = Convert.ToInt32(ConfigurationSettings.AppSettings ["VPNSendPort"]);
                recieveConnection1.endpointSpeedType = CommunicationEndpoint.SpeedType.Gprs3G;
                recieveConnection1.listen            = false;
                uav.knownEndpoints.Add(recieveConnection1);

                // Baue Kommunikationskanal für das Senden von Werten zur Bodenstation auf
                TCPCommunicationEndPoint sendConnection1 = new TCPCommunicationEndPoint();
                sendConnection1.commType          = CommunicationEndpoint.Communicationtype.Recieve;
                sendConnection1.endpointAdress    = ConfigurationSettings.AppSettings ["VPNGroundIP"];
                sendConnection1.endpointPort      = Convert.ToInt32(ConfigurationSettings.AppSettings ["VPNRecievePort"]);
                sendConnection1.endpointSpeedType = CommunicationEndpoint.SpeedType.Gprs3G;
                sendConnection1.listen            = false;
                uav.knownEndpoints.Add(sendConnection1);
            }
            if (Convert.ToBoolean(ConfigurationSettings.AppSettings ["WLAN"]))
            {
                TCPCommunicationEndPoint recieveConnection = new TCPCommunicationEndPoint();
                recieveConnection.commType          = CommunicationEndpoint.Communicationtype.Send;
                recieveConnection.endpointAdress    = ConfigurationSettings.AppSettings ["GroundIP"];
                recieveConnection.endpointPort      = Convert.ToInt32(ConfigurationSettings.AppSettings ["SendPort"]);
                recieveConnection.endpointSpeedType = CommunicationEndpoint.SpeedType.Wifi;
                recieveConnection.listen            = false;
                uav.knownEndpoints.Add(recieveConnection);

                // Baue Kommunikationskanal für das Senden von Werten zur Bodenstation auf
                TCPCommunicationEndPoint sendConnection = new TCPCommunicationEndPoint();
                sendConnection.commType          = CommunicationEndpoint.Communicationtype.Recieve;
                sendConnection.endpointAdress    = ConfigurationSettings.AppSettings ["GroundIP"];
                sendConnection.endpointPort      = Convert.ToInt32(ConfigurationSettings.AppSettings ["RecievePort"]);
                sendConnection.endpointSpeedType = CommunicationEndpoint.SpeedType.Wifi;
                sendConnection.listen            = false;
                uav.knownEndpoints.Add(sendConnection);
            }



            uav.OnLoad();              //Load all non serialised objects from uav and connect to hardware

            uav.run();
        }