//! Get station data for a groundstation from DataBase /*! * \param String name of the Station */ public Ground.Station getStationFromDB(string StaName) { if (!isConnected) { connectDB(); } SQLiteCommand command = new SQLiteCommand(m_dbConnection); Ground.Station station; command.CommandText = String.Format("SELECT * FROM {0} WHERE name='{1}';", Constants.StationDB, StaName); using (SQLiteDataReader read = command.ExecuteReader()) { while (read.Read()) { station = new Ground.Station( read.GetString(0), read.GetDouble(1), read.GetDouble(2), read.GetDouble(3)); return(station); } } return(null); }
private void addButton_Click(object sender, EventArgs e) { if (radioButton3.Checked) { //Manual Input DataBase.DataBase db = new DataBase.DataBase(); double lat = double.Parse(textLat.Text, CultureInfo.GetCultureInfo("en-US")); double lon = double.Parse(textLon.Text, CultureInfo.GetCultureInfo("en-US")); double height = double.Parse(textHeight.Text, CultureInfo.GetCultureInfo("en-US")); Ground.Station station = new Ground.Station(textStationName.Text, lat, lon, height); db.writeStation(station); this.Close(); } if (radioButton1.Checked) { using (var reader = new StreamReader(stationFilePath)) { DataBase.DataBase db = new DataBase.DataBase(); string line; while ((line = reader.ReadLine()) != null) { string _name; double _latitude; double _longitude; double _height; string[] res = line.Split(' '); if (res.Count() >= 3) { _name = res[0]; _latitude = Convert.ToDouble(res[1]); _longitude = Convert.ToDouble(res[2]); if (res.Count() == 4) { _height = Convert.ToDouble(res[3]); } else { _height = 0.0; } Ground.Station station = new Ground.Station(_name, _latitude, _longitude, _height); db.writeStation(station); } } } } }
//! Draw Stations from Database onto image. /*! * \param DataGridViewRowCollections rows of stations to draw * \param DataBase database that holds all the information * \return Image bmp-Image */ public static Image drawStation(DataGridViewRowCollection rows, DataBase.DataBase db) { Image imgStation = Properties.Resources.worldsmaller; Pen penRest = new Pen(Color.Orange, 2); using (var graphics = Graphics.FromImage(imgStation)) { for (int i = 0; i < rows.Count; i++) { Ground.Station item = db.getStationFromDB(rows[i].Cells[0].Value.ToString()); Point p = item.getGeoCoordinate().toPoint(imgStation.Width, imgStation.Height); graphics.DrawRectangle(penRest, p.X - 10, p.Y - 10, 20, 20); } } return(imgStation); }
//! Write GroundStation data to Database /*! * \param Station groundstation data to write into DataBase */ public void writeStation(Ground.Station station) { if (!isConnected) { connectDB(); } SQLiteCommand command = new SQLiteCommand(m_dbConnection); int count = 0; command.CommandText = String.Format("SELECT count(*) FROM {0} WHERE name='{1}';", Constants.StationDB, station.getName()); count = Convert.ToInt32(command.ExecuteScalar()); if (count == 0) { command.CommandText = String.Format( Constants.insertSta, Constants.StationDB, station.getName(), station.getLatitude(), station.getLongitude(), station.getHeight(), station.getNrOfAntennas()); command.ExecuteNonQuery(); } }
public bool runThisRun() { results = new List <string>(); DataBase.DataBase db = new DataBase.DataBase(); bool status = true; List <Ground.Station> stationData = new List <Ground.Station>(); for (int i = 0; i < stationList.Count; i++) { Ground.Station station = db.getStationFromDB(stationList[i]); stationData.Add(station); //updateLog(logfile, "Adding Station: " + station.getName()); } System.Windows.Forms.Application.DoEvents(); List <One_Sgp4.Tle> tleData = new List <Tle>(); for (int i = 0; i < satelliteList.Count; i++) { One_Sgp4.Tle sattle = db.getTleDataFromDB(satelliteList[i]); tleData.Add(sattle); //updateLog(logfile, "Adding Satellite: " + sattle.getName()); } System.Windows.Forms.Application.DoEvents(); ContactWindowsVector contactsVector = MainFunctions2.calculateContactWindows(tleData, stationData, startTime, stopTime); System.Windows.Forms.Application.DoEvents(); scheduler = null; switch (schedulerName) { case "Genetic": string[] settString = settings.Split(';'); scheduler = new GeneticScheduler(Convert.ToInt32(settString[0]), Convert.ToInt32(settString[1]), Convert.ToInt32(settString[2]), Convert.ToInt32(settString[4]), Convert.ToBoolean(settString[5]), Convert.ToDouble(settString[6]), Convert.ToBoolean(settString[7]), Convert.ToBoolean(settString[8])); break; case "Greedy": scheduler = new GreedyScheduler(); break; case "EFT-Greedy": scheduler = new EftGreedyScheduler(); break; case "Hill-Climber": string[] settString2 = settings.Split(';'); scheduler = new HillClimberScheduler(Convert.ToBoolean(settString2[0]), Convert.ToBoolean(settString2[2]), Convert.ToInt32(settString2[1])); break; } ObjectiveFunction objective = new ObjectiveFunction(Forms.ObjectiveBuilderForm.getObjectiveEnumsByName(objectiveFunction)); System.Windows.Forms.Application.DoEvents(); SchedulingProblem problem = new SchedulingProblem(); problem.setContactWindows(contactsVector); problem.removeUnwantedContacts(Properties.Settings.Default.orbit_Minimum_Contact_Duration_sec); problem.setObjectiveFunction(objective); problem.getContactWindows().randomize(Properties.Settings.Default.global_Random_Seed); getScenario(problem, scenario); System.Windows.Forms.Application.DoEvents(); TimeMeasurement tm = new TimeMeasurement(); tm.activate(); scheduler.CalculateSchedule(problem); string time = tm.getValueAndDeactivate(); System.Windows.Forms.Application.DoEvents(); contactsVector = scheduler.getFinischedSchedule(); System.Windows.Forms.Application.DoEvents(); if (scheduler != null) { ObjectiveFunction objfunc = scheduler.getObjectiveFunction(); if (objfunc == null) { objfunc = new ObjectiveFunction(); } objfunc.calculateValues(scheduler.getFinischedSchedule()); double fitness = objfunc.getObjectiveResults(); int _H = scheduler.getFinischedSchedule().getNrOfScheduled(); double _H1 = objfunc.getScheduledContactsValue(); int _H2 = GeneralMeasurments.getNrOfConflicts(scheduler.getFinischedSchedule()); double _H3 = objfunc.getStationFairnessValue(); double _H4 = objfunc.getSatelliteFairnessValue(); double _H5 = GeneralMeasurments.getDurationOfScheduledContacts(scheduler.getFinischedSchedule()); results.Add("Run: " + schedulerName); results.Add("Fitness Value:" + objfunc.getObjectiveResults().ToString()); results.Add("Scheduled Contacts: " + scheduler.getFinischedSchedule().getNrOfScheduled().ToString() + " / " + contactsVector.Count().ToString()); results.Add("Collisions: " + GeneralMeasurments.getNrOfConflicts(scheduler.getFinischedSchedule()).ToString()); results.Add("Fairnes Stations: " + objfunc.getStationFairnessValue().ToString()); results.Add("Fairnes Satellites: " + objfunc.getSatelliteFairnessValue().ToString()); results.Add("Duration: " + GeneralMeasurments.getDurationOfScheduledContacts(scheduler.getFinischedSchedule()).ToString() + " sec."); results.Add("Calculation Time: " + time); results.Add("Scheduled By Priority: " + GeneralMeasurments.getNrOfPrioritysScheduled(scheduler.getFinischedSchedule())); results.Add("Scheduled UWE-3: " + GeneralMeasurments.getNrOfUweContacts(scheduler.getFinischedSchedule()).ToString()); //Log.writeResults(logfile, schedulerName, results); if (results == null) { status = false; } } else { status = false; } cancel = false; return(status); }