From 6b962d23eb26740c585be66615272e210d0375ea Mon Sep 17 00:00:00 2001 From: dl2alf Date: Tue, 21 Apr 2020 06:54:27 +0200 Subject: [PATCH] V1.3.3.3 --- .../Properties/AssemblyInfo.cs | 4 +- AirScout.PlaneFeeds.Plugin.RTL1090/RTL1090.cs | 7 +- AirScout/OptionsDlg.Designer.cs | 84 +++++--- AirScout/OptionsDlg.cs | 191 ++++++++++++++++++ AirScout/OptionsDlg.resx | 104 +++++----- AirScout/Properties/AssemblyInfo.cs | 4 +- AirScout/VersionHistory.txt | 8 +- 7 files changed, 316 insertions(+), 86 deletions(-) diff --git a/AirScout.PlaneFeeds.Plugin.RTL1090/Properties/AssemblyInfo.cs b/AirScout.PlaneFeeds.Plugin.RTL1090/Properties/AssemblyInfo.cs index 1596939..5583e10 100644 --- a/AirScout.PlaneFeeds.Plugin.RTL1090/Properties/AssemblyInfo.cs +++ b/AirScout.PlaneFeeds.Plugin.RTL1090/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, // indem Sie "*" wie unten gezeigt eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.3.0.1")] -[assembly: AssemblyFileVersion("1.3.0.1")] +[assembly: AssemblyVersion("1.3.0.2")] +[assembly: AssemblyFileVersion("1.3.0.2")] diff --git a/AirScout.PlaneFeeds.Plugin.RTL1090/RTL1090.cs b/AirScout.PlaneFeeds.Plugin.RTL1090/RTL1090.cs index 0893ef4..9225c17 100644 --- a/AirScout.PlaneFeeds.Plugin.RTL1090/RTL1090.cs +++ b/AirScout.PlaneFeeds.Plugin.RTL1090/RTL1090.cs @@ -420,7 +420,12 @@ namespace AirScout.PlaneFeeds.Plugin.RTL1090 // report error Console.WriteLine("Error reading from TCP connection: " + ex.Message); // wait 10 sec - Thread.Sleep(10000); + int i = 0; + while ((i < 10) && !bw_Receciver.CancellationPending) + { + Thread.Sleep(1000); + i++; + } } finally { diff --git a/AirScout/OptionsDlg.Designer.cs b/AirScout/OptionsDlg.Designer.cs index c13c38d..5c23f23 100644 --- a/AirScout/OptionsDlg.Designer.cs +++ b/AirScout/OptionsDlg.Designer.cs @@ -46,6 +46,7 @@ this.btn_DeleteAllMapTiles = new System.Windows.Forms.Button(); this.btn_Options_Open_PluginDirectory = new System.Windows.Forms.Button(); this.btn_Options_Open_AirScoutDirectory = new System.Windows.Forms.Button(); + this.pb_Donate = new System.Windows.Forms.PictureBox(); this.tab_Options_Planes = new System.Windows.Forms.TabPage(); this.groupBox48 = new System.Windows.Forms.GroupBox(); this.int32TextBox1 = new ScoutBase.Core.Int32TextBox(); @@ -100,6 +101,8 @@ this.cb_Options_PlaneFeed1 = new System.Windows.Forms.ComboBox(); this.tab_Options_Path = new System.Windows.Forms.TabPage(); this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.label145 = new System.Windows.Forms.Label(); + this.btn_Options_Path_Export = new System.Windows.Forms.Button(); this.tb_Options_Path_MaxLength = new ScoutBase.Core.DoubleTextBox(); this.label131 = new System.Windows.Forms.Label(); this.label130 = new System.Windows.Forms.Label(); @@ -423,6 +426,7 @@ this.label143 = new System.Windows.Forms.Label(); this.groupBox15 = new System.Windows.Forms.GroupBox(); this.tab_Options_Info = new System.Windows.Forms.TabPage(); + this.label105 = new System.Windows.Forms.Label(); this.label30 = new System.Windows.Forms.Label(); this.label45 = new System.Windows.Forms.Label(); this.lbl_Options_Elevation_SRTM1 = new System.Windows.Forms.LinkLabel(); @@ -447,8 +451,7 @@ this.bw_SRTM1_MapUpdater = new System.ComponentModel.BackgroundWorker(); this.bw_GLOBE_MapUpdater = new System.ComponentModel.BackgroundWorker(); this.bw_StationDataUpdater = new System.ComponentModel.BackgroundWorker(); - this.pb_Donate = new System.Windows.Forms.PictureBox(); - this.label105 = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.pb_Donate)).BeginInit(); this.tab_Options_Planes.SuspendLayout(); this.groupBox48.SuspendLayout(); this.groupBox40.SuspendLayout(); @@ -529,7 +532,6 @@ this.groupBox15.SuspendLayout(); this.tab_Options_Info.SuspendLayout(); this.ss_Options.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pb_Donate)).BeginInit(); this.SuspendLayout(); // // btn_Options_OK @@ -725,6 +727,19 @@ this.btn_Options_Open_AirScoutDirectory.UseVisualStyleBackColor = true; this.btn_Options_Open_AirScoutDirectory.Click += new System.EventHandler(this.btn_Options_Open_AirScoutDirectory_Click); // + // pb_Donate + // + this.pb_Donate.Image = ((System.Drawing.Image)(resources.GetObject("pb_Donate.Image"))); + this.pb_Donate.InitialImage = ((System.Drawing.Image)(resources.GetObject("pb_Donate.InitialImage"))); + this.pb_Donate.Location = new System.Drawing.Point(18, 272); + this.pb_Donate.Name = "pb_Donate"; + this.pb_Donate.Size = new System.Drawing.Size(306, 113); + this.pb_Donate.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pb_Donate.TabIndex = 38; + this.pb_Donate.TabStop = false; + this.tt_Options.SetToolTip(this.pb_Donate, "Click here to open a browser window with link."); + this.pb_Donate.Click += new System.EventHandler(this.pb_Donate_Click); + // // tab_Options_Planes // this.tab_Options_Planes.BackColor = System.Drawing.SystemColors.Control; @@ -1377,6 +1392,8 @@ // // groupBox1 // + this.groupBox1.Controls.Add(this.label145); + this.groupBox1.Controls.Add(this.btn_Options_Path_Export); this.groupBox1.Controls.Add(this.tb_Options_Path_MaxLength); this.groupBox1.Controls.Add(this.label131); this.groupBox1.Controls.Add(this.label130); @@ -1388,11 +1405,33 @@ this.groupBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.groupBox1.Location = new System.Drawing.Point(14, 5); this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(581, 440); + this.groupBox1.Size = new System.Drawing.Size(581, 467); this.groupBox1.TabIndex = 3; this.groupBox1.TabStop = false; this.groupBox1.Text = "Path Options"; // + // label145 + // + this.label145.AutoSize = true; + this.label145.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label145.Location = new System.Drawing.Point(6, 438); + this.label145.Name = "label145"; + this.label145.Size = new System.Drawing.Size(430, 13); + this.label145.TabIndex = 41; + this.label145.Text = "Export elevation path to CSV (do not change settings before as they may not have " + + "effect):"; + // + // btn_Options_Path_Export + // + this.btn_Options_Path_Export.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_Options_Path_Export.Location = new System.Drawing.Point(500, 433); + this.btn_Options_Path_Export.Name = "btn_Options_Path_Export"; + this.btn_Options_Path_Export.Size = new System.Drawing.Size(75, 23); + this.btn_Options_Path_Export.TabIndex = 40; + this.btn_Options_Path_Export.Text = "Export"; + this.btn_Options_Path_Export.UseVisualStyleBackColor = true; + this.btn_Options_Path_Export.Click += new System.EventHandler(this.btn_Options_Path_Export_Click); + // // tb_Options_Path_MaxLength // this.tb_Options_Path_MaxLength.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Path_MaxLength", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); @@ -5475,6 +5514,16 @@ this.tab_Options_Info.Text = "Info"; this.tab_Options_Info.Enter += new System.EventHandler(this.tab_Options_Info_Enter); // + // label105 + // + this.label105.AutoSize = true; + this.label105.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label105.Location = new System.Drawing.Point(181, 282); + this.label105.Name = "label105"; + this.label105.Size = new System.Drawing.Size(230, 13); + this.label105.TabIndex = 44; + this.label105.Text = "ASTER GDEM is a product of METI and NASA"; + // // label30 // this.label30.AutoSize = true; @@ -5708,29 +5757,6 @@ this.bw_StationDataUpdater.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_StationDataUpdater_ProgressChanged); this.bw_StationDataUpdater.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_StationDataUpdater_RunWorkerCompleted); // - // pb_Donate - // - this.pb_Donate.Image = ((System.Drawing.Image)(resources.GetObject("pb_Donate.Image"))); - this.pb_Donate.InitialImage = ((System.Drawing.Image)(resources.GetObject("pb_Donate.InitialImage"))); - this.pb_Donate.Location = new System.Drawing.Point(18, 272); - this.pb_Donate.Name = "pb_Donate"; - this.pb_Donate.Size = new System.Drawing.Size(306, 113); - this.pb_Donate.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pb_Donate.TabIndex = 38; - this.pb_Donate.TabStop = false; - this.tt_Options.SetToolTip(this.pb_Donate, "Click here to open a browser window with link."); - this.pb_Donate.Click += new System.EventHandler(this.pb_Donate_Click); - // - // label105 - // - this.label105.AutoSize = true; - this.label105.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label105.Location = new System.Drawing.Point(181, 282); - this.label105.Name = "label105"; - this.label105.Size = new System.Drawing.Size(230, 13); - this.label105.TabIndex = 44; - this.label105.Text = "ASTER GDEM is a product of METI and NASA"; - // // OptionsDlg // this.AcceptButton = this.btn_Options_OK; @@ -5748,6 +5774,7 @@ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OptionsDlg_FormClosing); this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.OptionsDlg_FormClosed); this.Load += new System.EventHandler(this.OptionsDlg_Load); + ((System.ComponentModel.ISupportInitialize)(this.pb_Donate)).EndInit(); this.tab_Options_Planes.ResumeLayout(false); this.groupBox48.ResumeLayout(false); this.groupBox48.PerformLayout(); @@ -5874,7 +5901,6 @@ this.tab_Options_Info.PerformLayout(); this.ss_Options.ResumeLayout(false); this.ss_Options.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pb_Donate)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -6301,5 +6327,7 @@ private System.Windows.Forms.Button btn_Options_Open_AirScoutDirectory; private System.Windows.Forms.PictureBox pb_Donate; private System.Windows.Forms.Label label105; + private System.Windows.Forms.Label label145; + private System.Windows.Forms.Button btn_Options_Path_Export; } } \ No newline at end of file diff --git a/AirScout/OptionsDlg.cs b/AirScout/OptionsDlg.cs index 0d5b8f0..2dbdafb 100644 --- a/AirScout/OptionsDlg.cs +++ b/AirScout/OptionsDlg.cs @@ -1610,6 +1610,197 @@ namespace AirScout } + public short GetElevation(double lat, double lon) + { + if (!GeographicalPoint.Check(lat, lon)) + return 0; + short elv = ElevationData.Database.ElvMissingFlag; + // try to get elevation data from distinct elevation model + // start with detailed one + if (Properties.Settings.Default.Elevation_SRTM1_Enabled && (elv == ElevationData.Database.ElvMissingFlag)) + elv = ElevationData.Database[lat, lon, ELEVATIONMODEL.SRTM1, false]; + if (Properties.Settings.Default.Elevation_SRTM3_Enabled && (elv == ElevationData.Database.ElvMissingFlag)) + elv = ElevationData.Database[lat, lon, ELEVATIONMODEL.SRTM3, false]; + if (Properties.Settings.Default.Elevation_GLOBE_Enabled && (elv == ElevationData.Database.ElvMissingFlag)) + elv = ElevationData.Database[lat, lon, ELEVATIONMODEL.GLOBE, false]; + // set it to zero if still invalid + if (elv <= ElevationData.Database.TileMissingFlag) + elv = 0; + return elv; + } + + public ElvMinMaxInfo GetMinMaxElevationLoc(string loc) + { + ElvMinMaxInfo elv = new ElvMinMaxInfo(); + // try to get elevation data from distinct elevation model + // start with detailed one + if (Properties.Settings.Default.Elevation_SRTM1_Enabled && (elv.MaxElv == ElevationData.Database.ElvMissingFlag)) + { + ElvMinMaxInfo info = ElevationData.Database.GetMaxElvLoc(loc, ELEVATIONMODEL.SRTM1, false); + if (info != null) + { + elv.MaxLat = info.MaxLat; + elv.MaxLon = info.MaxLon; + elv.MaxElv = info.MaxElv; + elv.MinLat = info.MinLat; + elv.MinLon = info.MinLon; + elv.MinElv = info.MinElv; + } + } + if (Properties.Settings.Default.Elevation_SRTM3_Enabled && (elv.MaxElv == ElevationData.Database.ElvMissingFlag)) + { + ElvMinMaxInfo info = ElevationData.Database.GetMaxElvLoc(loc, ELEVATIONMODEL.SRTM3, false); + if (info != null) + { + elv.MaxLat = info.MaxLat; + elv.MaxLon = info.MaxLon; + elv.MaxElv = info.MaxElv; + elv.MinLat = info.MinLat; + elv.MinLon = info.MinLon; + elv.MinElv = info.MinElv; + } + } + if (Properties.Settings.Default.Elevation_GLOBE_Enabled && (elv.MaxElv == ElevationData.Database.ElvMissingFlag)) + { + ElvMinMaxInfo info = ElevationData.Database.GetMaxElvLoc(loc, ELEVATIONMODEL.GLOBE, false); + if (info != null) + { + elv.MaxLat = info.MaxLat; + elv.MaxLon = info.MaxLon; + elv.MaxElv = info.MaxElv; + elv.MinLat = info.MinLat; + elv.MinLon = info.MinLon; + elv.MinElv = info.MinElv; + } + } + /* + // set it to zero if still invalid + if (elv.MaxElv == ElevationData.Database.ElvMissingFlag) + elv.MaxElv = 0; + if (elv.MinElv == ElevationData.Database.ElvMissingFlag) + elv.MinElv = 0; + */ + return elv; + } + + public LocationDesignator LocationFindOrUpdateOrCreate(string call, double lat, double lon) + { + // check all parameters + if (!Callsign.Check(call)) + return null; + if (!GeographicalPoint.Check(lat, lon)) + return null; + // get location info + LocationDesignator ld = StationData.Database.LocationFindOrUpdateOrCreate(call, lat, lon); + // get elevation + ld.Elevation = GetElevation(ld.Lat, ld.Lon); + ld.BestCaseElevation = false; + // modify location in case of best case elevation is selected --> but do not store in database or settings! + if (Properties.Settings.Default.Path_BestCaseElevation) + { + if (!MaidenheadLocator.IsPrecise(ld.Lat, ld.Lon, 3)) + { + ElvMinMaxInfo maxinfo = GetMinMaxElevationLoc(ld.Loc); + if (maxinfo.MaxElv != ElevationData.Database.ElvMissingFlag) + { + ld.Lat = maxinfo.MaxLat; + ld.Lon = maxinfo.MaxLon; + ld.Elevation = maxinfo.MaxElv; + ld.BestCaseElevation = true; + } + } + } + return ld; + } + + private void btn_Options_Path_Export_Click(object sender, EventArgs e) + { + // check and update station database + LocationDesignator myloc = LocationFindOrUpdateOrCreate(Properties.Settings.Default.MyCall, Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon); + Properties.Settings.Default.MyElevation = myloc.Elevation; + + // get qrv info or create default + QRVDesignator myqrv = StationData.Database.QRVFindOrCreateDefault(myloc.Call, myloc.Loc, Properties.Settings.Default.Band); + // set qrv defaults if zero + if (myqrv.AntennaHeight == 0) + myqrv.AntennaHeight = StationData.Database.QRVGetDefaultAntennaHeight(Properties.Settings.Default.Band); + if (myqrv.AntennaGain == 0) + myqrv.AntennaGain = StationData.Database.QRVGetDefaultAntennaGain(Properties.Settings.Default.Band); + if (myqrv.Power == 0) + myqrv.Power = StationData.Database.QRVGetDefaultPower(Properties.Settings.Default.Band); + // check if there are a valid DX settings + if (!Callsign.Check(Properties.Settings.Default.DXCall) || + !GeographicalPoint.Check(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon)) + return; + + // OK valid, lets continue + // check and update station database + LocationDesignator dxloc = LocationFindOrUpdateOrCreate(Properties.Settings.Default.DXCall, Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon); + Properties.Settings.Default.DXElevation = dxloc.Elevation; + + // get qrv info or create default + QRVDesignator dxqrv = StationData.Database.QRVFindOrCreateDefault(dxloc.Call, dxloc.Loc, Properties.Settings.Default.Band); + // set qrv defaults if zero + if (dxqrv.AntennaHeight == 0) + dxqrv.AntennaHeight = StationData.Database.QRVGetDefaultAntennaHeight(Properties.Settings.Default.Band); + if (dxqrv.AntennaGain == 0) + dxqrv.AntennaGain = StationData.Database.QRVGetDefaultAntennaGain(Properties.Settings.Default.Band); + if (dxqrv.Power == 0) + dxqrv.Power = StationData.Database.QRVGetDefaultPower(Properties.Settings.Default.Band); + + // find local obstruction, if any + LocalObstructionDesignator o = ElevationData.Database.LocalObstructionFind(myloc.Lat, myloc.Lon, Properties.Settings.Default.ElevationModel); + double mybearing = LatLon.Bearing(myloc.Lat, myloc.Lon, dxloc.Lat, dxloc.Lon); + double myobstr = (o != null) ? o.GetObstruction(myqrv.AntennaHeight, mybearing) : double.MinValue; + + // try to find elevation path in database or create new one and store + ElevationPathDesignator epath = ElevationData.Database.ElevationPathFindOrCreateFromLatLon( + null, + myloc.Lat, + myloc.Lon, + dxloc.Lat, + dxloc.Lon, + ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.ElevationModel), + Properties.Settings.Default.ElevationModel); + // add additional info to ppath + epath.Location1 = myloc; + epath.Location2 = dxloc; + epath.QRV1 = myqrv; + epath.QRV2 = dxqrv; + + // export path to csv + SaveFileDialog Dlg = new SaveFileDialog(); + Dlg.AddExtension = true; + Dlg.DefaultExt = "csv"; + Dlg.Filter = "Comma Separated Values *.csv |csv"; + Dlg.FileName = "Path Information " + Properties.Settings.Default.MyCall.Replace("/", "_") + " to " + Properties.Settings.Default.DXCall.Replace("/", "_"); + Dlg.InitialDirectory = Application.StartupPath; + Dlg.OverwritePrompt = true; + if (Dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + try + { + using (StreamWriter sw = new StreamWriter(Dlg.FileName)) + { + sw.WriteLine("Distance[km];Lat[deg];Lon[deg];Elevation[m]"); + for (int i = 0; i < epath.Path.Length; i++) + { + double distance = (double)i * epath.StepWidth / 1000.0; + LatLon.GPoint p = LatLon.DestinationPoint(myloc.Lat, myloc.Lon, epath.Bearing12, distance); + sw.WriteLine(distance.ToString("F8") + ";" + + p.Lat.ToString("F8") + ";" + + p.Lon.ToString("F8") + ";" + + epath.Path[i].ToString()); + } + } + } + catch + { + // do nothing, if export is going wrong + } + } + } + #endregion #region tab_Options_Planes diff --git a/AirScout/OptionsDlg.resx b/AirScout/OptionsDlg.resx index 86a2f14..56be83e 100644 --- a/AirScout/OptionsDlg.resx +++ b/AirScout/OptionsDlg.resx @@ -120,58 +120,6 @@ 17, 17 - - You can select different map provider from the list below. Depending on your selection some maps may not be available for your choosen area. Please note that the selection of maps is taken from Great Maps regardless of their legal status. Some of them might be copyrighted or otherwise restricted in use. You were asked to agree with the terms of use first. -Open Street Map is recommended as a default. - - - Information from callsign database and other sources are used to prefill fields. You can overwrite and complete entries here. Your local database is updated. If you want to share the information with the AirScout community please use the "Send Update!" buttons. - - - CAUTION: Running a web service is a potential security hole! You should activate this function only inside a private network. - -Depending on your user profile you will prompted several times by the Operating System on first run. Please accept all security queries with "Yes" or "Accept". -Otherwise the web service will not run properly. - - - AirScout can work as a server in a network. - -UDP Server: -You can ask for a path calculation between two stations and AirScout will return the planes near path and their portential for a reflection. - -HTTP Server: -You can ask for latest plane positions via simple http-request (e.g. from a web browser. The result is delivered as a JSON file which can used to run own services and calculations. - -See documentation for further details. - - - AirScout can get FFT data from Spectrum Lab software via Network. You must have Spectrum Lab software installed with default settings. Do not forget to activate http - server functionaltiy in Spectrum Lab. - - - Watchlist allows you to pick a number of stations out of your database. -This is very helpful especially when working in Multi-Path Mode. - -All stations on watchlist can be shown on map with small markers and callsign labels for quick showing/hiding path to them. - -If a station is selected from watchlist by checking the assigned checkbox, path is shown on map and entry is coloured according to aircraft scatter potential. - -Watchlist can be synchronized with ON4KST chat user list instead of a local managed list to show all stations currently logged in in chat (Needs wtKST software and network functions enabbled). - - - 130, 17 - - - 353, 17 - - - 483, 17 - - - 706, 17 - - - 890, 17 - @@ -291,4 +239,56 @@ Watchlist can be synchronized with ON4KST chat user list instead of a local mana bOQwu7KRw+zKRg6zKxs5zK5s5DC7spHD7MpGDrMrGznMrkwUwn8BkAmqaXV391cAAAAASUVORK5CYII= + + You can select different map provider from the list below. Depending on your selection some maps may not be available for your choosen area. Please note that the selection of maps is taken from Great Maps regardless of their legal status. Some of them might be copyrighted or otherwise restricted in use. You were asked to agree with the terms of use first. +Open Street Map is recommended as a default. + + + Information from callsign database and other sources are used to prefill fields. You can overwrite and complete entries here. Your local database is updated. If you want to share the information with the AirScout community please use the "Send Update!" buttons. + + + CAUTION: Running a web service is a potential security hole! You should activate this function only inside a private network. + +Depending on your user profile you will prompted several times by the Operating System on first run. Please accept all security queries with "Yes" or "Accept". +Otherwise the web service will not run properly. + + + AirScout can work as a server in a network. + +UDP Server: +You can ask for a path calculation between two stations and AirScout will return the planes near path and their portential for a reflection. + +HTTP Server: +You can ask for latest plane positions via simple http-request (e.g. from a web browser. The result is delivered as a JSON file which can used to run own services and calculations. + +See documentation for further details. + + + AirScout can get FFT data from Spectrum Lab software via Network. You must have Spectrum Lab software installed with default settings. Do not forget to activate http - server functionaltiy in Spectrum Lab. + + + Watchlist allows you to pick a number of stations out of your database. +This is very helpful especially when working in Multi-Path Mode. + +All stations on watchlist can be shown on map with small markers and callsign labels for quick showing/hiding path to them. + +If a station is selected from watchlist by checking the assigned checkbox, path is shown on map and entry is coloured according to aircraft scatter potential. + +Watchlist can be synchronized with ON4KST chat user list instead of a local managed list to show all stations currently logged in in chat (Needs wtKST software and network functions enabbled). + + + 130, 17 + + + 353, 17 + + + 483, 17 + + + 706, 17 + + + 890, 17 + \ No newline at end of file diff --git a/AirScout/Properties/AssemblyInfo.cs b/AirScout/Properties/AssemblyInfo.cs index 2d98742..19e3074 100644 --- a/AirScout/Properties/AssemblyInfo.cs +++ b/AirScout/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.3.3.2")] -[assembly: AssemblyFileVersion("1.3.3.2")] +[assembly: AssemblyVersion("1.3.3.3")] +[assembly: AssemblyFileVersion("1.3.3.3")] diff --git a/AirScout/VersionHistory.txt b/AirScout/VersionHistory.txt index 1f6ec34..5b3f540 100644 --- a/AirScout/VersionHistory.txt +++ b/AirScout/VersionHistory.txt @@ -1,4 +1,10 @@ -2020-04-19: V1.3.3.2 +2020-xx-xx: V1.3.3.3 +==================== + +- Feature: export current path to CSV, feature was removed during change to V1.3.x +- Bugfix: RTL1090 plane feed is slowly returning if cancelled and no connection is established (there is a 10sc timeout), fixed + +2020-04-19: V1.3.3.2 ==================== - Bugfix: Commit issues with V1.3.3.1, changes were not synchronized with web repository --> fixed