Пример #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 ();
        }
Пример #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 ();
        }