V1.4.1.0 Merge with V1.3.x

pull/2/head^2
dl2alf 2022-01-02 09:03:27 +01:00
rodzic c463c0ba5a
commit 342219c9bb
25 zmienionych plików z 1924 dodań i 11 usunięć

Wyświetl plik

@ -136,6 +136,12 @@
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Compile Include="DeleteSingleStationDlg.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DeleteSingleStationDlg.Designer.cs">
<DependentUpon>DeleteSingleStationDlg.cs</DependentUpon>
</Compile>
<Compile Include="Enums.cs" />
<Compile Include="GMapLocatorPolygon.cs" />
<Compile Include="MapPreloader.cs">
@ -339,6 +345,9 @@
<EmbeddedResource Include="DatabaseMaintenanceDlg.resx">
<DependentUpon>DatabaseMaintenanceDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="DeleteSingleStationDlg.resx">
<DependentUpon>DeleteSingleStationDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ElevationCopyrightDlg.resx">
<DependentUpon>ElevationCopyrightDlg.cs</DependentUpon>
</EmbeddedResource>

Wyświetl plik

@ -0,0 +1,140 @@
namespace AirScout
{
partial class DeleteSingleStationDlg
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DeleteSingleStationDlg));
this.label1 = new System.Windows.Forms.Label();
this.cb_Call = new System.Windows.Forms.ComboBox();
this.cb_Locator = new System.Windows.Forms.ComboBox();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.btn_Delete = new System.Windows.Forms.Button();
this.btn_Cancel = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
//
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.Location = new System.Drawing.Point(12, 19);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(464, 92);
this.label1.TabIndex = 0;
this.label1.Text = resources.GetString("label1.Text");
//
// cb_Call
//
this.cb_Call.FormattingEnabled = true;
this.cb_Call.Location = new System.Drawing.Point(55, 132);
this.cb_Call.Name = "cb_Call";
this.cb_Call.Size = new System.Drawing.Size(121, 21);
this.cb_Call.TabIndex = 1;
this.cb_Call.DropDown += new System.EventHandler(this.cb_Call_DropDown);
this.cb_Call.SelectedIndexChanged += new System.EventHandler(this.cb_Call_SelectedIndexChanged);
this.cb_Call.TextChanged += new System.EventHandler(this.cb_Call_TextChanged);
this.cb_Call.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.cb_Call_KeyPress);
//
// cb_Locator
//
this.cb_Locator.FormattingEnabled = true;
this.cb_Locator.Location = new System.Drawing.Point(279, 132);
this.cb_Locator.Name = "cb_Locator";
this.cb_Locator.Size = new System.Drawing.Size(121, 21);
this.cb_Locator.TabIndex = 2;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(22, 135);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(27, 13);
this.label2.TabIndex = 3;
this.label2.Text = "Call:";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(223, 135);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(46, 13);
this.label3.TabIndex = 4;
this.label3.Text = "Locator:";
//
// btn_Delete
//
this.btn_Delete.BackColor = System.Drawing.Color.Tomato;
this.btn_Delete.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btn_Delete.ForeColor = System.Drawing.Color.White;
this.btn_Delete.Location = new System.Drawing.Point(55, 173);
this.btn_Delete.Name = "btn_Delete";
this.btn_Delete.Size = new System.Drawing.Size(121, 35);
this.btn_Delete.TabIndex = 5;
this.btn_Delete.Text = "Delete";
this.btn_Delete.UseVisualStyleBackColor = false;
//
// btn_Cancel
//
this.btn_Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btn_Cancel.Location = new System.Drawing.Point(279, 173);
this.btn_Cancel.Name = "btn_Cancel";
this.btn_Cancel.Size = new System.Drawing.Size(121, 35);
this.btn_Cancel.TabIndex = 6;
this.btn_Cancel.Text = "Cancel";
this.btn_Cancel.UseVisualStyleBackColor = true;
//
// DeleteSingleStationDlg
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btn_Cancel;
this.ClientSize = new System.Drawing.Size(485, 220);
this.Controls.Add(this.btn_Cancel);
this.Controls.Add(this.btn_Delete);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.cb_Locator);
this.Controls.Add(this.cb_Call);
this.Controls.Add(this.label1);
this.Name = "DeleteSingleStationDlg";
this.Text = "Delete Single Station";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox cb_Call;
private System.Windows.Forms.ComboBox cb_Locator;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Button btn_Delete;
private System.Windows.Forms.Button btn_Cancel;
}
}

Wyświetl plik

@ -0,0 +1,71 @@
using ScoutBase.Stations;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace AirScout
{
public partial class DeleteSingleStationDlg : Form
{
bool SelectionChanged = false;
public DeleteSingleStationDlg()
{
InitializeComponent();
}
private void cb_Call_TextChanged(object sender, EventArgs e)
{
if (!SelectionChanged)
{
int start = cb_Call.SelectionStart;
int len = cb_Call.SelectionLength;
string text = cb_Call.Text.ToUpper().Trim();
if (cb_Call.Text != text)
cb_Call.Text = text;
cb_Call.SelectionStart = start;
cb_Call.SelectionLength = len;
}
SelectionChanged = false;
}
private void cb_Call_SelectedIndexChanged(object sender, EventArgs e)
{
// suppress handling on text input
if (!cb_Call.DroppedDown)
return;
if (cb_Call.SelectedItem != null)
{
SelectionChanged = true;
cb_Call.Text = (string)cb_Call.SelectedItem;
}
}
private void cb_Call_KeyPress(object sender, KeyPressEventArgs e)
{
}
private void cb_Call_DropDown(object sender, EventArgs e)
{
if (!cb_Call.DroppedDown && (cb_Call.Text.Length >= 2))
{
List<LocationDesignator> l = StationData.Database.LocationGetAll("%" + cb_Call.Text + "%");
if (l != null)
{
cb_Call.Items.Clear();
cb_Locator.Items.Clear();
foreach (LocationDesignator ld in l)
{
cb_Call.Items.Add(ld.Call);
cb_Locator.Items.Add(ld.Loc);
}
}
}
}
}
}

Wyświetl plik

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="label1.Text" xml:space="preserve">
<value>Use this dialog to find and remove a single station/locator combination from the local station database.
CAUTION: You can only remove own entries permanently. If a station/locator combination is part of the global database it would be re-inserted on next update.</value>
</data>
</root>

Wyświetl plik

@ -46,6 +46,8 @@
this.ud_MinLon = new System.Windows.Forms.NumericUpDown();
this.gm_Coverage = new GMap.NET.WindowsForms.GMapControl();
this.wp_ElevationModel = new AeroWizard.WizardPage();
this.cb_ASTER1 = new System.Windows.Forms.CheckBox();
this.cb_ASTER3 = new System.Windows.Forms.CheckBox();
this.richTextBox2 = new System.Windows.Forms.RichTextBox();
this.cb_SRTM1 = new System.Windows.Forms.CheckBox();
this.cb_SRTM3 = new System.Windows.Forms.CheckBox();
@ -65,6 +67,16 @@
this.label7 = new System.Windows.Forms.Label();
this.cb_SRTM1_EnableCache = new System.Windows.Forms.CheckBox();
this.gm_SRTM1 = new GMap.NET.WindowsForms.GMapControl();
this.wp_ASTER3 = new AeroWizard.WizardPage();
this.lbl_ASTER3_Status = new System.Windows.Forms.Label();
this.label23 = new System.Windows.Forms.Label();
this.cb_ASTER3_EnableCache = new System.Windows.Forms.CheckBox();
this.gm_ASTER3 = new GMap.NET.WindowsForms.GMapControl();
this.wp_ASTER1 = new AeroWizard.WizardPage();
this.lbl_ASTER1_Status = new System.Windows.Forms.Label();
this.label25 = new System.Windows.Forms.Label();
this.cb_ASTER1_EnableCache = new System.Windows.Forms.CheckBox();
this.gm_ASTER1 = new GMap.NET.WindowsForms.GMapControl();
this.wp_UserDetails = new AeroWizard.WizardPage();
this.label19 = new System.Windows.Forms.Label();
this.label18 = new System.Windows.Forms.Label();
@ -98,6 +110,8 @@
this.bw_SRTM1_MapUpdater = new System.ComponentModel.BackgroundWorker();
this.ss_Main = new System.Windows.Forms.StatusStrip();
this.tsl_Status = new System.Windows.Forms.ToolStripStatusLabel();
this.bw_ASTER3_MapUpdater = new System.ComponentModel.BackgroundWorker();
this.bw_ASTER1_MapUpdater = new System.ComponentModel.BackgroundWorker();
((System.ComponentModel.ISupportInitialize)(this.sw_FirstRun)).BeginInit();
this.wp_TermsAndConditions.SuspendLayout();
this.wp_GeneralCoverage.SuspendLayout();
@ -109,6 +123,8 @@
this.wp_GLOBE.SuspendLayout();
this.wp_SRTM3.SuspendLayout();
this.wp_SRTM1.SuspendLayout();
this.wp_ASTER3.SuspendLayout();
this.wp_ASTER1.SuspendLayout();
this.wp_UserDetails.SuspendLayout();
this.wp_PlaneFeeds.SuspendLayout();
this.wp_Finish.SuspendLayout();
@ -128,6 +144,8 @@
this.sw_FirstRun.Pages.Add(this.wp_GLOBE);
this.sw_FirstRun.Pages.Add(this.wp_SRTM3);
this.sw_FirstRun.Pages.Add(this.wp_SRTM1);
this.sw_FirstRun.Pages.Add(this.wp_ASTER3);
this.sw_FirstRun.Pages.Add(this.wp_ASTER1);
this.sw_FirstRun.Pages.Add(this.wp_UserDetails);
this.sw_FirstRun.Pages.Add(this.wp_PlaneFeeds);
this.sw_FirstRun.Pages.Add(this.wp_Finish);
@ -341,6 +359,7 @@
this.gm_Coverage.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter;
this.gm_Coverage.Name = "gm_Coverage";
this.gm_Coverage.NegativeMode = false;
this.gm_Coverage.Opacity = 1D;
this.gm_Coverage.PolygonsEnabled = true;
this.gm_Coverage.RetryLoadTile = 0;
this.gm_Coverage.RoutesEnabled = true;
@ -353,6 +372,8 @@
//
// wp_ElevationModel
//
this.wp_ElevationModel.Controls.Add(this.cb_ASTER1);
this.wp_ElevationModel.Controls.Add(this.cb_ASTER3);
this.wp_ElevationModel.Controls.Add(this.richTextBox2);
this.wp_ElevationModel.Controls.Add(this.cb_SRTM1);
this.wp_ElevationModel.Controls.Add(this.cb_SRTM3);
@ -364,6 +385,30 @@
this.wp_ElevationModel.Text = "Elevation Model";
this.wp_ElevationModel.Enter += new System.EventHandler(this.wp_ElevationModel_Enter);
//
// cb_ASTER1
//
this.cb_ASTER1.AutoSize = true;
this.cb_ASTER1.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.cb_ASTER1.Location = new System.Drawing.Point(85, 355);
this.cb_ASTER1.Name = "cb_ASTER1";
this.cb_ASTER1.Size = new System.Drawing.Size(332, 25);
this.cb_ASTER1.TabIndex = 6;
this.cb_ASTER1.Text = "Use ASTER1 Elevation Model (experimental)";
this.cb_ASTER1.UseVisualStyleBackColor = true;
this.cb_ASTER1.CheckedChanged += new System.EventHandler(this.cb_ASTER1_CheckedChanged);
//
// cb_ASTER3
//
this.cb_ASTER3.AutoSize = true;
this.cb_ASTER3.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.cb_ASTER3.Location = new System.Drawing.Point(85, 329);
this.cb_ASTER3.Name = "cb_ASTER3";
this.cb_ASTER3.Size = new System.Drawing.Size(332, 25);
this.cb_ASTER3.TabIndex = 5;
this.cb_ASTER3.Text = "Use ASTER3 Elevation Model (experimental)";
this.cb_ASTER3.UseVisualStyleBackColor = true;
this.cb_ASTER3.CheckedChanged += new System.EventHandler(this.cb_ASTER3_CheckedChanged);
//
// richTextBox2
//
this.richTextBox2.BackColor = System.Drawing.Color.White;
@ -475,6 +520,7 @@
this.gm_GLOBE.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter;
this.gm_GLOBE.Name = "gm_GLOBE";
this.gm_GLOBE.NegativeMode = false;
this.gm_GLOBE.Opacity = 1D;
this.gm_GLOBE.PolygonsEnabled = true;
this.gm_GLOBE.RetryLoadTile = 0;
this.gm_GLOBE.RoutesEnabled = true;
@ -546,6 +592,7 @@
this.gm_SRTM3.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter;
this.gm_SRTM3.Name = "gm_SRTM3";
this.gm_SRTM3.NegativeMode = false;
this.gm_SRTM3.Opacity = 1D;
this.gm_SRTM3.PolygonsEnabled = true;
this.gm_SRTM3.RetryLoadTile = 0;
this.gm_SRTM3.RoutesEnabled = true;
@ -617,6 +664,7 @@
this.gm_SRTM1.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter;
this.gm_SRTM1.Name = "gm_SRTM1";
this.gm_SRTM1.NegativeMode = false;
this.gm_SRTM1.Opacity = 1D;
this.gm_SRTM1.PolygonsEnabled = true;
this.gm_SRTM1.RetryLoadTile = 0;
this.gm_SRTM1.RoutesEnabled = true;
@ -626,6 +674,150 @@
this.gm_SRTM1.TabIndex = 9;
this.gm_SRTM1.Zoom = 0D;
//
// wp_ASTER3
//
this.wp_ASTER3.Controls.Add(this.lbl_ASTER3_Status);
this.wp_ASTER3.Controls.Add(this.label23);
this.wp_ASTER3.Controls.Add(this.cb_ASTER3_EnableCache);
this.wp_ASTER3.Controls.Add(this.gm_ASTER3);
this.wp_ASTER3.Name = "wp_ASTER3";
this.wp_ASTER3.Size = new System.Drawing.Size(586, 398);
this.sw_FirstRun.SetStepText(this.wp_ASTER3, "ASTER3");
this.wp_ASTER3.TabIndex = 12;
this.wp_ASTER3.Text = "ASTER3";
this.wp_ASTER3.Enter += new System.EventHandler(this.wp_ASTER3_Enter);
this.wp_ASTER3.Leave += new System.EventHandler(this.wp_ASTER3_Leave);
//
// lbl_ASTER3_Status
//
this.lbl_ASTER3_Status.AutoSize = true;
this.lbl_ASTER3_Status.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lbl_ASTER3_Status.Location = new System.Drawing.Point(54, 60);
this.lbl_ASTER3_Status.Name = "lbl_ASTER3_Status";
this.lbl_ASTER3_Status.Size = new System.Drawing.Size(40, 15);
this.lbl_ASTER3_Status.TabIndex = 9;
this.lbl_ASTER3_Status.Text = "Status";
//
// label23
//
this.label23.AutoSize = true;
this.label23.Font = new System.Drawing.Font("Segoe UI Semibold", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))));
this.label23.ForeColor = System.Drawing.Color.SteelBlue;
this.label23.Location = new System.Drawing.Point(53, 8);
this.label23.Name = "label23";
this.label23.Size = new System.Drawing.Size(459, 19);
this.label23.TabIndex = 8;
this.label23.Text = "(A)dvanced (S)paceborne (T)hermal (E)mission and (R)eflection 3 arcsec";
//
// cb_ASTER3_EnableCache
//
this.cb_ASTER3_EnableCache.AutoSize = true;
this.cb_ASTER3_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM3_EnableCache;
this.cb_ASTER3_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM3_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.cb_ASTER3_EnableCache.Location = new System.Drawing.Point(57, 38);
this.cb_ASTER3_EnableCache.Name = "cb_ASTER3_EnableCache";
this.cb_ASTER3_EnableCache.Size = new System.Drawing.Size(243, 19);
this.cb_ASTER3_EnableCache.TabIndex = 7;
this.cb_ASTER3_EnableCache.Text = "Keep downloaded elevation tiles in cache";
this.cb_ASTER3_EnableCache.UseVisualStyleBackColor = true;
//
// gm_ASTER3
//
this.gm_ASTER3.Bearing = 0F;
this.gm_ASTER3.CanDragMap = true;
this.gm_ASTER3.EmptyTileColor = System.Drawing.Color.Navy;
this.gm_ASTER3.GrayScaleMode = false;
this.gm_ASTER3.HelperLineOption = GMap.NET.WindowsForms.HelperLineOptions.DontShow;
this.gm_ASTER3.LevelsKeepInMemmory = 5;
this.gm_ASTER3.Location = new System.Drawing.Point(53, 79);
this.gm_ASTER3.MarkersEnabled = true;
this.gm_ASTER3.MaxZoom = 2;
this.gm_ASTER3.MinZoom = 2;
this.gm_ASTER3.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter;
this.gm_ASTER3.Name = "gm_ASTER3";
this.gm_ASTER3.NegativeMode = false;
this.gm_ASTER3.Opacity = 1D;
this.gm_ASTER3.PolygonsEnabled = true;
this.gm_ASTER3.RetryLoadTile = 0;
this.gm_ASTER3.RoutesEnabled = true;
this.gm_ASTER3.SelectedAreaFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(65)))), ((int)(((byte)(105)))), ((int)(((byte)(225)))));
this.gm_ASTER3.ShowTileGridLines = false;
this.gm_ASTER3.Size = new System.Drawing.Size(480, 311);
this.gm_ASTER3.TabIndex = 6;
this.gm_ASTER3.Zoom = 0D;
//
// wp_ASTER1
//
this.wp_ASTER1.Controls.Add(this.lbl_ASTER1_Status);
this.wp_ASTER1.Controls.Add(this.label25);
this.wp_ASTER1.Controls.Add(this.cb_ASTER1_EnableCache);
this.wp_ASTER1.Controls.Add(this.gm_ASTER1);
this.wp_ASTER1.Name = "wp_ASTER1";
this.wp_ASTER1.Size = new System.Drawing.Size(586, 398);
this.sw_FirstRun.SetStepText(this.wp_ASTER1, "ASTER1");
this.wp_ASTER1.TabIndex = 13;
this.wp_ASTER1.Text = "ASTER1";
this.wp_ASTER1.Enter += new System.EventHandler(this.wp_ASTER1_Enter);
this.wp_ASTER1.Leave += new System.EventHandler(this.wp_ASTER1_Leave);
//
// lbl_ASTER1_Status
//
this.lbl_ASTER1_Status.AutoSize = true;
this.lbl_ASTER1_Status.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lbl_ASTER1_Status.Location = new System.Drawing.Point(54, 60);
this.lbl_ASTER1_Status.Name = "lbl_ASTER1_Status";
this.lbl_ASTER1_Status.Size = new System.Drawing.Size(40, 15);
this.lbl_ASTER1_Status.TabIndex = 9;
this.lbl_ASTER1_Status.Text = "Status";
//
// label25
//
this.label25.AutoSize = true;
this.label25.Font = new System.Drawing.Font("Segoe UI Semibold", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))));
this.label25.ForeColor = System.Drawing.Color.SteelBlue;
this.label25.Location = new System.Drawing.Point(53, 8);
this.label25.Name = "label25";
this.label25.Size = new System.Drawing.Size(458, 19);
this.label25.TabIndex = 8;
this.label25.Text = "(A)dvanced (S)paceborne (T)hermal (E)mission and (R)eflection 1 arcsec";
//
// cb_ASTER1_EnableCache
//
this.cb_ASTER1_EnableCache.AutoSize = true;
this.cb_ASTER1_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM3_EnableCache;
this.cb_ASTER1_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM3_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.cb_ASTER1_EnableCache.Location = new System.Drawing.Point(57, 38);
this.cb_ASTER1_EnableCache.Name = "cb_ASTER1_EnableCache";
this.cb_ASTER1_EnableCache.Size = new System.Drawing.Size(243, 19);
this.cb_ASTER1_EnableCache.TabIndex = 7;
this.cb_ASTER1_EnableCache.Text = "Keep downloaded elevation tiles in cache";
this.cb_ASTER1_EnableCache.UseVisualStyleBackColor = true;
//
// gm_ASTER1
//
this.gm_ASTER1.Bearing = 0F;
this.gm_ASTER1.CanDragMap = true;
this.gm_ASTER1.EmptyTileColor = System.Drawing.Color.Navy;
this.gm_ASTER1.GrayScaleMode = false;
this.gm_ASTER1.HelperLineOption = GMap.NET.WindowsForms.HelperLineOptions.DontShow;
this.gm_ASTER1.LevelsKeepInMemmory = 5;
this.gm_ASTER1.Location = new System.Drawing.Point(53, 79);
this.gm_ASTER1.MarkersEnabled = true;
this.gm_ASTER1.MaxZoom = 2;
this.gm_ASTER1.MinZoom = 2;
this.gm_ASTER1.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter;
this.gm_ASTER1.Name = "gm_ASTER1";
this.gm_ASTER1.NegativeMode = false;
this.gm_ASTER1.Opacity = 1D;
this.gm_ASTER1.PolygonsEnabled = true;
this.gm_ASTER1.RetryLoadTile = 0;
this.gm_ASTER1.RoutesEnabled = true;
this.gm_ASTER1.SelectedAreaFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(65)))), ((int)(((byte)(105)))), ((int)(((byte)(225)))));
this.gm_ASTER1.ShowTileGridLines = false;
this.gm_ASTER1.Size = new System.Drawing.Size(480, 311);
this.gm_ASTER1.TabIndex = 6;
this.gm_ASTER1.Zoom = 0D;
//
// wp_UserDetails
//
this.wp_UserDetails.Controls.Add(this.label19);
@ -767,6 +959,7 @@
this.gm_Callsign.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter;
this.gm_Callsign.Name = "gm_Callsign";
this.gm_Callsign.NegativeMode = false;
this.gm_Callsign.Opacity = 1D;
this.gm_Callsign.PolygonsEnabled = true;
this.gm_Callsign.RetryLoadTile = 0;
this.gm_Callsign.RoutesEnabled = true;
@ -996,6 +1189,22 @@
this.tsl_Status.Size = new System.Drawing.Size(42, 17);
this.tsl_Status.Text = "Status.";
//
// bw_ASTER3_MapUpdater
//
this.bw_ASTER3_MapUpdater.WorkerReportsProgress = true;
this.bw_ASTER3_MapUpdater.WorkerSupportsCancellation = true;
this.bw_ASTER3_MapUpdater.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bw_ASTER3_MapUpdater_DoWork);
this.bw_ASTER3_MapUpdater.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_ASTER3_MapUpdater_ProgressChanged);
this.bw_ASTER3_MapUpdater.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_ASTER3_MapUpdater_RunWorkerCompleted);
//
// bw_ASTER1_MapUpdater
//
this.bw_ASTER1_MapUpdater.WorkerReportsProgress = true;
this.bw_ASTER1_MapUpdater.WorkerSupportsCancellation = true;
this.bw_ASTER1_MapUpdater.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bw_ASTER1_MapUpdater_DoWork);
this.bw_ASTER1_MapUpdater.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_ASTER1_MapUpdater_ProgressChanged);
this.bw_ASTER1_MapUpdater.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_ASTER1_MapUpdater_RunWorkerCompleted);
//
// FirstRunWizard
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -1027,6 +1236,10 @@
this.wp_SRTM3.PerformLayout();
this.wp_SRTM1.ResumeLayout(false);
this.wp_SRTM1.PerformLayout();
this.wp_ASTER3.ResumeLayout(false);
this.wp_ASTER3.PerformLayout();
this.wp_ASTER1.ResumeLayout(false);
this.wp_ASTER1.PerformLayout();
this.wp_UserDetails.ResumeLayout(false);
this.wp_UserDetails.PerformLayout();
this.wp_PlaneFeeds.ResumeLayout(false);
@ -1110,5 +1323,19 @@
private System.Windows.Forms.Label label7;
private System.Windows.Forms.CheckBox cb_SRTM1_EnableCache;
private System.Windows.Forms.Label label6;
private AeroWizard.WizardPage wp_ASTER3;
private System.Windows.Forms.Label lbl_ASTER3_Status;
private System.Windows.Forms.Label label23;
private System.Windows.Forms.CheckBox cb_ASTER3_EnableCache;
private GMap.NET.WindowsForms.GMapControl gm_ASTER3;
private AeroWizard.WizardPage wp_ASTER1;
private System.Windows.Forms.Label lbl_ASTER1_Status;
private System.Windows.Forms.Label label25;
private System.Windows.Forms.CheckBox cb_ASTER1_EnableCache;
private GMap.NET.WindowsForms.GMapControl gm_ASTER1;
private System.ComponentModel.BackgroundWorker bw_ASTER3_MapUpdater;
private System.ComponentModel.BackgroundWorker bw_ASTER1_MapUpdater;
private System.Windows.Forms.CheckBox cb_ASTER1;
private System.Windows.Forms.CheckBox cb_ASTER3;
}
}

Wyświetl plik

@ -30,6 +30,8 @@ namespace AirScout
GMapOverlay GLOBEpolygons = new GMapOverlay("GLOBEpolygons");
GMapOverlay SRTM3polygons = new GMapOverlay("SRTM3polygons");
GMapOverlay SRTM1polygons = new GMapOverlay("SRTM1polygons");
GMapOverlay ASTER3polygons = new GMapOverlay("ASTER3polygons");
GMapOverlay ASTER1polygons = new GMapOverlay("ASTER1polygons");
GMapOverlay Callsignpolygons = new GMapOverlay("Callsignpolygons");
GMapOverlay Callsignspositions = new GMapOverlay("Callsignpositions");
@ -119,6 +121,40 @@ namespace AirScout
gm_SRTM1.MapScaleInfoEnabled = true;
gm_SRTM1.Overlays.Add(SRTM1polygons);
// set initial settings for ASTER3Map
GMap.NET.MapProviders.GMapProvider.UserAgent = "AirScout";
// clearing referrer URL issue 2019-12-14
gm_ASTER3.MapProvider.RefererUrl = "";
gm_ASTER3.MapProvider = GMapProviders.Find(Properties.Settings.Default.Map_Provider);
gm_ASTER3.IgnoreMarkerOnMouseWheel = true;
gm_ASTER3.MinZoom = 0;
gm_ASTER3.MaxZoom = 20;
gm_ASTER3.Zoom = 1;
gm_ASTER3.DragButton = System.Windows.Forms.MouseButtons.Left;
gm_ASTER3.CanDragMap = true;
gm_ASTER3.ScalePen = new Pen(Color.Black, 3);
gm_ASTER3.HelperLinePen = null;
gm_ASTER3.SelectionPen = null;
gm_ASTER3.MapScaleInfoEnabled = true;
gm_ASTER3.Overlays.Add(ASTER3polygons);
// set initial settings for ASTER1Map
GMap.NET.MapProviders.GMapProvider.UserAgent = "AirScout";
// clearing referrer URL issue 2019-12-14
gm_ASTER1.MapProvider.RefererUrl = "";
gm_ASTER1.MapProvider = GMapProviders.Find(Properties.Settings.Default.Map_Provider);
gm_ASTER1.IgnoreMarkerOnMouseWheel = true;
gm_ASTER1.MinZoom = 0;
gm_ASTER1.MaxZoom = 20;
gm_ASTER1.Zoom = 1;
gm_ASTER1.DragButton = System.Windows.Forms.MouseButtons.Left;
gm_ASTER1.CanDragMap = true;
gm_ASTER1.ScalePen = new Pen(Color.Black, 3);
gm_ASTER1.HelperLinePen = null;
gm_ASTER1.SelectionPen = null;
gm_ASTER1.MapScaleInfoEnabled = true;
gm_ASTER1.Overlays.Add(ASTER1polygons);
// set initial settings for user details
GMap.NET.MapProviders.GMapProvider.UserAgent = "AirScout";
// clearing referrer URL issue 2019-12-14
@ -257,12 +293,25 @@ namespace AirScout
#endregion
#region wp_ElevationModel
private void wp_ElevationModel_Enter(object sender, EventArgs e)
{
cb_GLOBE.Checked = Properties.Settings.Default.Elevation_GLOBE_Enabled;
cb_SRTM3.Checked = Properties.Settings.Default.Elevation_SRTM3_Enabled;
cb_SRTM1.Checked = Properties.Settings.Default.Elevation_SRTM1_Enabled;
cb_ASTER3.Checked = Properties.Settings.Default.Elevation_ASTER3_Enabled;
cb_ASTER1.Checked = Properties.Settings.Default.Elevation_ASTER1_Enabled;
UpdateElevationPages();
}
private void UpdateElevationPages()
{
wp_GLOBE.Suppress = !cb_GLOBE.Checked;
wp_SRTM3.Suppress = !cb_SRTM3.Checked;
wp_SRTM1.Suppress = !cb_SRTM1.Checked;
wp_ElevationModel.AllowNext = cb_GLOBE.Checked || cb_SRTM3.Checked || cb_SRTM1.Checked;
wp_ASTER3.Suppress = !cb_ASTER3.Checked;
wp_ASTER1.Suppress = !cb_ASTER1.Checked;
wp_ElevationModel.AllowNext = cb_GLOBE.Checked || cb_SRTM3.Checked || cb_SRTM1.Checked || cb_ASTER3.Checked || cb_ASTER1.Checked;
this.Refresh();
}
@ -284,14 +333,19 @@ namespace AirScout
UpdateElevationPages();
}
#region wp_ElevationModel
private void wp_ElevationModel_Enter(object sender, EventArgs e)
private void cb_ASTER3_CheckedChanged(object sender, EventArgs e)
{
cb_GLOBE.Checked = Properties.Settings.Default.Elevation_GLOBE_Enabled;
cb_SRTM3.Checked = Properties.Settings.Default.Elevation_SRTM3_Enabled;
cb_SRTM1.Checked = Properties.Settings.Default.Elevation_SRTM1_Enabled;
Properties.Settings.Default.Elevation_ASTER3_Enabled = cb_ASTER3.Checked;
UpdateElevationPages();
}
private void cb_ASTER1_CheckedChanged(object sender, EventArgs e)
{
Properties.Settings.Default.Elevation_ASTER1_Enabled = cb_ASTER1.Checked;
UpdateElevationPages();
}
#endregion
#region wp_GLOBE
@ -643,7 +697,7 @@ namespace AirScout
// estimate disk space needed = tilecount * tilesize * 150%
long spaceneeded = (long)tilecount * (long)(100000 * 3 / 2);
string rootdrive = Path.GetPathRoot(ElevationData.Database.DefaultDatabaseDirectory(ELEVATIONMODEL.SRTM1));
long spaceavailable = SupportFunctions.GetDriveAvailableFreeSpace(rootdrive);
long spaceavailable = SupportFunctions.GetDriveAvailableFreeSpace(rootdrive);
// check for available disk space, skip on zero (cannot determine)
if ((spaceavailable > 0) && (spaceavailable < spaceneeded))
{
@ -743,6 +797,302 @@ namespace AirScout
#endregion
#region wp_ASTER3
private void bw_ASTER3_MapUpdater_DoWork(object sender, DoWorkEventArgs e)
{
bw_ASTER3_MapUpdater.ReportProgress(0, "Creating elevation tile catalogue (please wait)...");
// get all locs needed for covered area
ElevationCatalogue availabletiles = ElevationData.Database.ElevationCatalogueCreateCheckBoundsAndLastModified(bw_ASTER3_MapUpdater, ELEVATIONMODEL.ASTER3, Properties.Settings.Default.MinLat, Properties.Settings.Default.MinLon, Properties.Settings.Default.MaxLat, Properties.Settings.Default.MaxLon);
bw_ASTER3_MapUpdater.ReportProgress(0, "Processing tiles...");
// report tile count
bw_ASTER3_MapUpdater.ReportProgress(2, availabletiles.Files.Keys.Count);
int missing = 0;
int found = 0;
foreach (string tilename in availabletiles.Files.Keys)
{
if (ElevationData.Database.ElevationTileExists(tilename.Substring(0, 6), ELEVATIONMODEL.ASTER3))
{
bw_ASTER3_MapUpdater.ReportProgress(1, tilename);
found++;
}
else
{
bw_ASTER3_MapUpdater.ReportProgress(-1, tilename);
missing++;
}
if (bw_ASTER3_MapUpdater.CancellationPending)
{
bw_ASTER3_MapUpdater.ReportProgress(0, "Processing cancelled...");
return;
}
}
bw_ASTER3_MapUpdater.ReportProgress(0, found.ToString() + " tile(s) found, " + missing.ToString() + " more tile(s) available and missing.");
}
private void bw_ASTER3_MapUpdater_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
if (e.ProgressPercentage == 2)
{
try
{
wp_ASTER3.AllowNext = true;
// get tile count = available tiles - tiles already in data base
long tilecount = (int)e.UserState - ElevationData.Database.ElevationTileCount(ELEVATIONMODEL.ASTER3);
if (tilecount < 0)
tilecount = 0;
// check available disk space and file system
// estimate disk space needed = tilecount * tilesize * 150%
long spaceneeded = (long)tilecount * (long)(10000 * 3 / 2);
string rootdrive = Path.GetPathRoot(ElevationData.Database.DefaultDatabaseDirectory(ELEVATIONMODEL.ASTER3));
long spaceavailable = SupportFunctions.GetDriveAvailableFreeSpace(rootdrive);
// check for available disk space, skip on zero (cannot determine)
if ((spaceavailable > 0) && (spaceavailable < spaceneeded))
{
// show message box
MessageBox.Show("Not enough disk space for elevation database.\n\nAvailable: " + spaceavailable + " bytes.\nNeeded: " + spaceneeded + "bytes.\n\nUncheck this option or try to enlarge free space on disk.", "Not enough disk space");
wp_ASTER3.AllowNext = false;
}
long maxfilesize = SupportFunctions.GetDriveMaxFileSize(rootdrive);
if ((maxfilesize > 0) && (maxfilesize < spaceneeded))
{
// show message box
MessageBox.Show("The elevation database will exceed maximum allowed filesize for this file system.\n\nAllowed: " + maxfilesize + " bytes.\nNeeded: " + spaceneeded + "bytes.\n\nUncheck this option or change file system on disk.", "File size exceeded");
wp_ASTER3.AllowNext = false;
}
}
catch (Exception ex)
{
Log.WriteMessage(ex.ToString(), LogLevel.Error);
}
}
else if (e.ProgressPercentage == 1)
{
// add a tile found in database to map polygons
double baselat;
double baselon;
MaidenheadLocator.LatLonFromLoc(((string)e.UserState).Substring(0, 6), PositionInRectangle.BottomLeft, out baselat, out baselon);
List<PointLatLng> l = new List<PointLatLng>();
l.Add(new PointLatLng((decimal)baselat, (decimal)baselon));
l.Add(new PointLatLng((decimal)(baselat + 1 / 24.0), (decimal)baselon));
l.Add(new PointLatLng((decimal)(baselat + 1 / 24.0), (decimal)(baselon + 2 / 24.0)));
l.Add(new PointLatLng((decimal)baselat, (decimal)(baselon + 2 / 24.0)));
GMapPolygon p = new GMapPolygon(l, (string)e.UserState);
p.Stroke = new Pen(Color.FromArgb(50, Color.Green));
p.Fill = new SolidBrush(Color.FromArgb(50, Color.Green));
ASTER3polygons.Polygons.Add(p);
}
else if (e.ProgressPercentage == -1)
{
// add missing tile to map polygons
double baselat;
double baselon;
MaidenheadLocator.LatLonFromLoc(((string)e.UserState).Substring(0, 6), PositionInRectangle.BottomLeft, out baselat, out baselon);
List<PointLatLng> l = new List<PointLatLng>();
l.Add(new PointLatLng((decimal)baselat, (decimal)baselon));
l.Add(new PointLatLng((decimal)(baselat + 1 / 24.0), (decimal)baselon));
l.Add(new PointLatLng((decimal)(baselat + 1 / 24.0), (decimal)(baselon + 2 / 24.0)));
l.Add(new PointLatLng((decimal)baselat, (decimal)(baselon + 2 / 24.0)));
GMapPolygon p = new GMapPolygon(l, (string)e.UserState);
p.Stroke = new Pen(Color.FromArgb(50, Color.Red));
p.Fill = new SolidBrush(Color.FromArgb(50, Color.Red));
ASTER3polygons.Polygons.Add(p);
}
else
{
lbl_ASTER3_Status.Text = (string)e.UserState;
}
}
private void bw_ASTER3_MapUpdater_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
private void wp_ASTER3_Enter(object sender, EventArgs e)
{
wp_ASTER3.AllowNext = false;
// clear map polygons
ASTER3polygons.Clear();
// add coverage to map polygons
List<PointLatLng> cl = new List<PointLatLng>();
cl.Add(new PointLatLng(Properties.Settings.Default.MinLat, Properties.Settings.Default.MinLon));
cl.Add(new PointLatLng(Properties.Settings.Default.MinLat, Properties.Settings.Default.MaxLon));
cl.Add(new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MaxLon));
cl.Add(new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MinLon));
GMapPolygon c = new GMapPolygon(cl, "Coverage");
c.Stroke = new Pen(Color.FromArgb(255, Color.Magenta), 3);
c.Fill = new SolidBrush(Color.FromArgb(0, Color.Magenta));
ASTER3polygons.Polygons.Add(c);
// zoom the map initally
gm_ASTER3.SetZoomToFitRect(RectLatLng.FromLTRB(Properties.Settings.Default.MinLon, Properties.Settings.Default.MaxLat, Properties.Settings.Default.MaxLon, Properties.Settings.Default.MinLat));
// start map updater
if (!bw_ASTER3_MapUpdater.IsBusy)
bw_ASTER3_MapUpdater.RunWorkerAsync();
// zoom the map
gm_ASTER3.SetZoomToFitRect(RectLatLng.FromLTRB(Properties.Settings.Default.MinLon - 1, Properties.Settings.Default.MaxLat + 1, Properties.Settings.Default.MaxLon + 1, Properties.Settings.Default.MinLat - 1));
}
private void wp_ASTER3_Leave(object sender, EventArgs e)
{
// stop map updater
bw_ASTER3_MapUpdater.CancelAsync();
// clear map polygons
ASTER3polygons.Clear();
// do garbage collection
GC.Collect();
lbl_ASTER3_Status.Text = "";
}
#endregion
#region wp_ASTER1
private void bw_ASTER1_MapUpdater_DoWork(object sender, DoWorkEventArgs e)
{
bw_ASTER1_MapUpdater.ReportProgress(0, "Creating elevation tile catalogue (please wait)...");
// get all locs needed for covered area
ElevationCatalogue availabletiles = ElevationData.Database.ElevationCatalogueCreateCheckBoundsAndLastModified(bw_ASTER1_MapUpdater, ELEVATIONMODEL.ASTER1, Properties.Settings.Default.MinLat, Properties.Settings.Default.MinLon, Properties.Settings.Default.MaxLat, Properties.Settings.Default.MaxLon);
bw_ASTER1_MapUpdater.ReportProgress(0, "Processing tiles...");
// report tile count
bw_ASTER1_MapUpdater.ReportProgress(2, availabletiles.Files.Keys.Count);
int missing = 0;
int found = 0;
foreach (string tilename in availabletiles.Files.Keys)
{
if (ElevationData.Database.ElevationTileExists(tilename.Substring(0, 6), ELEVATIONMODEL.ASTER1))
{
bw_ASTER1_MapUpdater.ReportProgress(1, tilename);
found++;
}
else
{
bw_ASTER1_MapUpdater.ReportProgress(-1, tilename);
missing++;
}
if (bw_ASTER1_MapUpdater.CancellationPending)
{
bw_ASTER1_MapUpdater.ReportProgress(0, "Processing cancelled...");
return;
}
}
bw_ASTER1_MapUpdater.ReportProgress(0, found.ToString() + " tile(s) found, " + missing.ToString() + " more tile(s) available and missing.");
}
private void bw_ASTER1_MapUpdater_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
if (e.ProgressPercentage == 2)
{
try
{
wp_ASTER1.AllowNext = true;
// get tile count = available tiles - tiles already in data base
long tilecount = (int)e.UserState - ElevationData.Database.ElevationTileCount(ELEVATIONMODEL.ASTER1);
if (tilecount < 0)
tilecount = 0;
// check available disk space and file system
// estimate disk space needed = tilecount * tilesize * 150%
long spaceneeded = (long)tilecount * (long)(100000 * 3 / 2);
string rootdrive = Path.GetPathRoot(ElevationData.Database.DefaultDatabaseDirectory(ELEVATIONMODEL.ASTER1));
long spaceavailable = SupportFunctions.GetDriveAvailableFreeSpace(rootdrive);
// check for available disk space, skip on zero (cannot determine)
if ((spaceavailable > 0) && (spaceavailable < spaceneeded))
{
// show message box
MessageBox.Show("Not enough disk space for elevation database.\n\nAvailable: " + spaceavailable + " bytes.\nNeeded: " + spaceneeded + "bytes.\n\nUncheck this option or try to enlarge free space on disk.", "Not enough disk space");
wp_ASTER1.AllowNext = false;
}
long maxfilesize = SupportFunctions.GetDriveMaxFileSize(rootdrive);
if ((maxfilesize > 0) && (maxfilesize < spaceneeded))
{
// show message box
MessageBox.Show("The elevation database will exceed maximum allowed filesize for this file system.\n\nAllowed: " + maxfilesize + " bytes.\nNeeded: " + spaceneeded + "bytes.\n\nUncheck this option or change file system on disk.", "File size exceeded");
wp_ASTER1.AllowNext = false;
}
}
catch (Exception ex)
{
Log.WriteMessage(ex.ToString(), LogLevel.Error);
}
}
else if (e.ProgressPercentage == 1)
{
// add a tile found in database to map polygons
double baselat;
double baselon;
MaidenheadLocator.LatLonFromLoc(((string)e.UserState).Substring(0, 6), PositionInRectangle.BottomLeft, out baselat, out baselon);
List<PointLatLng> l = new List<PointLatLng>();
l.Add(new PointLatLng((decimal)baselat, (decimal)baselon));
l.Add(new PointLatLng((decimal)(baselat + 1 / 24.0), (decimal)baselon));
l.Add(new PointLatLng((decimal)(baselat + 1 / 24.0), (decimal)(baselon + 2 / 24.0)));
l.Add(new PointLatLng((decimal)baselat, (decimal)(baselon + 2 / 24.0)));
GMapPolygon p = new GMapPolygon(l, (string)e.UserState);
p.Stroke = new Pen(Color.FromArgb(50, Color.Green));
p.Fill = new SolidBrush(Color.FromArgb(50, Color.Green));
ASTER1polygons.Polygons.Add(p);
}
else if (e.ProgressPercentage == -1)
{
// add missing tile to map polygons
double baselat;
double baselon;
MaidenheadLocator.LatLonFromLoc(((string)e.UserState).Substring(0, 6), PositionInRectangle.BottomLeft, out baselat, out baselon);
List<PointLatLng> l = new List<PointLatLng>();
l.Add(new PointLatLng((decimal)baselat, (decimal)baselon));
l.Add(new PointLatLng((decimal)(baselat + 1 / 24.0), (decimal)baselon));
l.Add(new PointLatLng((decimal)(baselat + 1 / 24.0), (decimal)(baselon + 2 / 24.0)));
l.Add(new PointLatLng((decimal)baselat, (decimal)(baselon + 2 / 24.0)));
GMapPolygon p = new GMapPolygon(l, (string)e.UserState);
p.Stroke = new Pen(Color.FromArgb(50, Color.Red));
p.Fill = new SolidBrush(Color.FromArgb(50, Color.Red));
ASTER1polygons.Polygons.Add(p);
}
else
{
lbl_ASTER1_Status.Text = (string)e.UserState;
}
}
private void bw_ASTER1_MapUpdater_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
private void wp_ASTER1_Enter(object sender, EventArgs e)
{
wp_ASTER1.AllowNext = false;
// clear map polygons
ASTER1polygons.Clear();
// add coverage to map polygons
List<PointLatLng> cl = new List<PointLatLng>();
cl.Add(new PointLatLng(Properties.Settings.Default.MinLat, Properties.Settings.Default.MinLon));
cl.Add(new PointLatLng(Properties.Settings.Default.MinLat, Properties.Settings.Default.MaxLon));
cl.Add(new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MaxLon));
cl.Add(new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MinLon));
GMapPolygon c = new GMapPolygon(cl, "Coverage");
c.Stroke = new Pen(Color.FromArgb(255, Color.Magenta), 3);
c.Fill = new SolidBrush(Color.FromArgb(0, Color.Magenta));
ASTER1polygons.Polygons.Add(c);
// zoom the map initally
gm_ASTER1.SetZoomToFitRect(RectLatLng.FromLTRB(Properties.Settings.Default.MinLon, Properties.Settings.Default.MaxLat, Properties.Settings.Default.MaxLon, Properties.Settings.Default.MinLat));
// start map updater
if (!bw_ASTER1_MapUpdater.IsBusy)
bw_ASTER1_MapUpdater.RunWorkerAsync();
// zoom the map
gm_ASTER1.SetZoomToFitRect(RectLatLng.FromLTRB(Properties.Settings.Default.MinLon - 1, Properties.Settings.Default.MaxLat + 1, Properties.Settings.Default.MaxLon + 1, Properties.Settings.Default.MinLat - 1));
}
private void wp_ASTER1_Leave(object sender, EventArgs e)
{
// stop map updater
bw_ASTER1_MapUpdater.CancelAsync();
// clear map polygons
ASTER1polygons.Clear();
// do garbage collection
GC.Collect();
lbl_ASTER1_Status.Text = "";
}
#endregion
#region wp_Finish
private void wp_Finish_Enter(object sender, EventArgs e)
{
@ -1268,6 +1618,7 @@ namespace AirScout
while (bw_SRTM1_MapUpdater.IsBusy)
Application.DoEvents();
}
}

Wyświetl plik

@ -154,11 +154,13 @@ To view complete license information please refer to "Options/Info".</value>
</data>
<data name="richTextBox2.Text" xml:space="preserve">
<value>Elevation models are essential for work with AirScout. They are needed for calculating radio horizons and propagation paths.
The software can handle the three most common models available for the public:
The software can handle the most common models available for the public:
GLOBE: 1km x 1km resolution, covers whole earth
SRTM3: 90m x 90m resolution, covers only -60° ... +60°
SRTM3: 90m x 90m resolution, covers only -60° ... +60° (with some inoffical extensions to Norh)
SRTM1: 30m x 30m resolution, covers only -60° ... +60°
ASTER3: 90m x 90m resolution, covers -83° ... +83° (aggregated from ASTER1, very raw data )
ASTER1: 30m x 30m resolution, covers -83° ... +83° (very raw data)
Elevation data are provided in files. AirScout is trying to download and stores them locally. If you have them already somewhere on your computer, you can select a user specific path.
@ -7399,6 +7401,12 @@ Please enter at least one plane feed to continue.</value>
<metadata name="ss_Main.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>481, 17</value>
</metadata>
<metadata name="bw_ASTER3_MapUpdater.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>575, 17</value>
</metadata>
<metadata name="bw_ASTER1_MapUpdater.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>763, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>50</value>
</metadata>

Wyświetl plik

@ -0,0 +1,121 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Text;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using GMap.NET;
using GMap.NET.WindowsForms;
namespace AirScout
{
public class GMapLocatorPolygon : GMapPolygon
{
public GMapLocatorPolygon(List<PointLatLng> points, string name) : base(points, name)
{
}
protected GMapLocatorPolygon(SerializationInfo info, StreamingContext context) : base(info, context)
{
}
private int PolygonWidth()
{
if (this.LocalPoints == null)
return 0;
long min = int.MaxValue;
long max = int.MinValue;
foreach (GPoint p in this.LocalPoints)
{
if (p.X < min)
min = p.X;
if (p.X > max)
max = p.X;
}
return (int)(max - min);
}
private int PolygonHeight()
{
if (this.LocalPoints == null)
return 0;
long min = int.MaxValue;
long max = int.MinValue;
foreach (GPoint p in this.LocalPoints)
{
if (p.Y < min)
min = p.Y;
if (p.Y > max)
max = p.Y;
}
return (int)(max - min);
}
private Rectangle PolygonRect()
{
if (this.LocalPoints == null)
return new Rectangle(0,0,0,0);
long minX = int.MaxValue;
long maxX = int.MinValue;
foreach (GPoint p in this.LocalPoints)
{
if (p.X < minX)
minX = p.X;
if (p.X > maxX)
maxX = p.X;
}
long minY = int.MaxValue;
long maxY = int.MinValue;
foreach (GPoint p in this.LocalPoints)
{
if (p.Y < minY)
minY = p.Y;
if (p.Y > maxY)
maxY = p.Y;
}
return new Rectangle((int)minX, (int)minY, (int)(maxX - minX), (int)(maxY - minY));
}
public override void OnRender(Graphics g)
{
base.OnRender(g);
// render Tag on top of polygon, if it is a regular rectangle and contains a string as tag
if (this.Points == null)
return;
if (this.Points.Count == 0)
return;
if (this.Tag == null)
return;
if (this.Tag.GetType() != typeof(string))
return;
// keep old graphics settings
SmoothingMode oldsmoothingmode = g.SmoothingMode;
TextRenderingHint oldtextrenderinghint = g.TextRenderingHint;
// get polygon extension in pixels
Rectangle polyrect = PolygonRect();
g.SmoothingMode = SmoothingMode.AntiAlias;
g.TextRenderingHint = TextRenderingHint.SingleBitPerPixelGridFit;
Font font = new Font("Arial", polyrect.Height / 10);
StringFormat format = new StringFormat();
format.LineAlignment = StringAlignment.Center;
format.Alignment = StringAlignment.Center;
g.DrawString((string)this.Tag, font, new SolidBrush(this.Stroke.Color), polyrect, format);
g.Flush();
font.Dispose();
// restore old graphics settings
g.SmoothingMode = oldsmoothingmode;
g.TextRenderingHint = oldtextrenderinghint;
}
}
}

Wyświetl plik

@ -7162,6 +7162,18 @@
this.bw_StationDataUpdater.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_StationDataUpdater_ProgressChanged);
this.bw_StationDataUpdater.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_StationDataUpdater_RunWorkerCompleted);
//
// btn_DeleteSingleStation
//
this.btn_DeleteSingleStation.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btn_DeleteSingleStation.Location = new System.Drawing.Point(165, 48);
this.btn_DeleteSingleStation.Name = "btn_DeleteSingleStation";
this.btn_DeleteSingleStation.Size = new System.Drawing.Size(122, 23);
this.btn_DeleteSingleStation.TabIndex = 3;
this.btn_DeleteSingleStation.Text = "Delete Single Station";
this.tt_Options.SetToolTip(this.btn_DeleteSingleStation, "Deletes all cached map tiles from database");
this.btn_DeleteSingleStation.UseVisualStyleBackColor = true;
this.btn_DeleteSingleStation.Click += new System.EventHandler(this.btn_DeleteSingleStation_Click);
//
// bw_ASTER3_MapUpdater
//
this.bw_ASTER3_MapUpdater.WorkerReportsProgress = true;
@ -7822,6 +7834,7 @@
private System.Windows.Forms.CheckBox cb_Options_Elevation_ASTER1_EnableCache;
private System.Windows.Forms.CheckBox cb_Options_Elevation_ASTER1;
private System.Windows.Forms.Button btn_Options_Path_Export;
private System.Windows.Forms.Button btn_DeleteSingleStation;
private System.Windows.Forms.Label label147;
private System.Windows.Forms.Label label148;
private PercentageControl ud_Options_Map_Opacity;

Wyświetl plik

@ -397,6 +397,12 @@ namespace AirScout
MapData.Database.TileDeleteAll();
}
private void btn_DeleteSingleStation_Click(object sender, EventArgs e)
{
DeleteSingleStationDlg Dlg = new DeleteSingleStationDlg();
Dlg.ShowDialog();
}
private void btn_Options_ScoutBase_Database_Maintenance_Click(object sender, EventArgs e)
{
DatabaseMaintenanceDlg Dlg = new DatabaseMaintenanceDlg(StationData.Database);

Wyświetl plik

@ -2683,5 +2683,17 @@ Digital data base on the World Wide Web (URL: http://www.ngdc.noaa.gov/mgg/topo/
this["Map_ShowDistances"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public string StationsMap_OverlayElevation {
get {
return ((string)(this["StationsMap_OverlayElevation"]));
}
set {
this["StationsMap_OverlayElevation"] = value;
}
}
}
}

Wyświetl plik

@ -1,5 +1,12 @@
***************** AirScout Requirements **************************
- GreatCircle, distance and locator layer on map (DJ5AR)
- Snooze button for alarm on main window, clickable in PLAY mode ()
- Calculate Doppler
* watch list
- Add/remove call sign from Multi View tab over UDP command
- add stations to watchlist based on DXCC, Loc, QTF range from QTF1 to QTF2

Wyświetl plik

@ -27,8 +27,7 @@ namespace AirScout
Remove = false;
}
public WatchlistItem(string call, string loc, bool oor) : this(call, loc, oor, false, false) { }
public WatchlistItem(string call, string loc, bool oor, bool check, bool selected)
public WatchlistItem(string call, string loc, bool oor, bool check = false, bool selected = false)
{
Call = call;
Loc = loc;

Wyświetl plik

@ -12,6 +12,8 @@ namespace WinTest
PKTRCVD = 2,
SETAZIMUTH = 100,
SETELEVATION = 101,
ASADDWATCH = 247,
ASREMOVEWATCH = 248,
ASWATCHLIST = 249,
ASSETPATH = 252,
ASSHOWPATH = 253,
@ -83,6 +85,8 @@ namespace WinTest
text = text.Remove(0, text.IndexOf(" ") + 1);
// Clean up the message --> scrub last byte
text = text.Substring(0, text.Length - 1).Replace("\"", "");
// clean up newer messages with 2 placeholders
text = text.TrimEnd('?');
// convert bytes coded in UTF8 to text
Data = text.Substring(0, text.Length);
// get checksum

194
WinTestSimulator/MainDlg.Designer.cs wygenerowano 100644
Wyświetl plik

@ -0,0 +1,194 @@
namespace WinTestSimulator
{
partial class MainDlg
{
/// <summary>
/// Erforderliche Designervariable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Verwendete Ressourcen bereinigen.
/// </summary>
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Vom Windows Form-Designer generierter Code
/// <summary>
/// Erforderliche Methode für die Designerunterstützung.
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.btn_Send = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.tb_To = new System.Windows.Forms.TextBox();
this.ud_Port = new System.Windows.Forms.NumericUpDown();
this.tb_From = new System.Windows.Forms.TextBox();
this.tb_Message = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
((System.ComponentModel.ISupportInitialize)(this.ud_Port)).BeginInit();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 41);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(53, 13);
this.label1.TabIndex = 1;
this.label1.Text = "Message:";
//
// btn_Send
//
this.btn_Send.Location = new System.Drawing.Point(498, 86);
this.btn_Send.Name = "btn_Send";
this.btn_Send.Size = new System.Drawing.Size(243, 23);
this.btn_Send.TabIndex = 2;
this.btn_Send.Text = "Send";
this.btn_Send.UseVisualStyleBackColor = true;
this.btn_Send.Click += new System.EventHandler(this.btn_Send_Click);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(176, 93);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(33, 13);
this.label2.TabIndex = 5;
this.label2.Text = "From:";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(25, 91);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(29, 13);
this.label3.TabIndex = 6;
this.label3.Text = "Port:";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(324, 91);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(23, 13);
this.label4.TabIndex = 8;
this.label4.Text = "To:";
//
// tb_To
//
this.tb_To.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::WinTestSimulator.Properties.Settings.Default, "To", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.tb_To.Location = new System.Drawing.Point(363, 88);
this.tb_To.Name = "tb_To";
this.tb_To.Size = new System.Drawing.Size(100, 20);
this.tb_To.TabIndex = 7;
this.tb_To.Text = global::WinTestSimulator.Properties.Settings.Default.To;
//
// ud_Port
//
this.ud_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::WinTestSimulator.Properties.Settings.Default, "Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.ud_Port.Location = new System.Drawing.Point(71, 89);
this.ud_Port.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.ud_Port.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.ud_Port.Name = "ud_Port";
this.ud_Port.Size = new System.Drawing.Size(61, 20);
this.ud_Port.TabIndex = 4;
this.ud_Port.Value = global::WinTestSimulator.Properties.Settings.Default.Port;
//
// tb_From
//
this.tb_From.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::WinTestSimulator.Properties.Settings.Default, "From", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.tb_From.Location = new System.Drawing.Point(215, 89);
this.tb_From.Name = "tb_From";
this.tb_From.Size = new System.Drawing.Size(75, 20);
this.tb_From.TabIndex = 3;
this.tb_From.Text = global::WinTestSimulator.Properties.Settings.Default.From;
//
// tb_Message
//
this.tb_Message.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::WinTestSimulator.Properties.Settings.Default, "Message", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.tb_Message.Location = new System.Drawing.Point(71, 38);
this.tb_Message.Name = "tb_Message";
this.tb_Message.Size = new System.Drawing.Size(107, 20);
this.tb_Message.TabIndex = 0;
this.tb_Message.Text = global::WinTestSimulator.Properties.Settings.Default.Message;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(196, 41);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(33, 13);
this.label5.TabIndex = 10;
this.label5.Text = "Data:";
//
// textBox1
//
this.textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::WinTestSimulator.Properties.Settings.Default, "Data", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.textBox1.Location = new System.Drawing.Point(255, 38);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(486, 20);
this.textBox1.TabIndex = 9;
this.textBox1.Text = global::WinTestSimulator.Properties.Settings.Default.Data;
//
// MainDlg
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(774, 146);
this.Controls.Add(this.label5);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.label4);
this.Controls.Add(this.tb_To);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.ud_Port);
this.Controls.Add(this.tb_From);
this.Controls.Add(this.btn_Send);
this.Controls.Add(this.label1);
this.Controls.Add(this.tb_Message);
this.Name = "MainDlg";
this.Text = "WinTest Message Simulator";
((System.ComponentModel.ISupportInitialize)(this.ud_Port)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox tb_Message;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button btn_Send;
private System.Windows.Forms.TextBox tb_From;
private System.Windows.Forms.NumericUpDown ud_Port;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox tb_To;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox textBox1;
}
}

Wyświetl plik

@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;
using WinTest;
namespace WinTestSimulator
{
public partial class MainDlg : Form
{
public MainDlg()
{
InitializeComponent();
}
private void btn_Send_Click(object sender, EventArgs e)
{
WTMESSAGES msg = WTMESSAGES.NONE;
Enum.TryParse<WTMESSAGES>(Properties.Settings.Default.Message.ToUpper().Trim(), out msg);
wtMessage SendMsg = new wtMessage(msg,
Properties.Settings.Default.From,
Properties.Settings.Default.To,
Properties.Settings.Default.Data);
SendMsg.HasChecksum = true;
// send message
UdpClient client = new UdpClient();
client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
client.Client.ReceiveTimeout = 10000; // 10s Receive timeout
IPEndPoint groupEp = new IPEndPoint(IPAddress.Broadcast, (int)Properties.Settings.Default.Port);
client.Connect(groupEp);
byte[] b = SendMsg.ToBytes();
client.Send(b, b.Length);
client.Close();
}
}
}

Wyświetl plik

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

Wyświetl plik

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace WinTestSimulator
{
internal static class Program
{
/// <summary>
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainDlg());
}
}
}

Wyświetl plik

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Allgemeine Informationen über eine Assembly werden über die folgenden
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
// die einer Assembly zugeordnet sind.
[assembly: AssemblyTitle("WinTestSimulator")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("WinTestSimulator")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
[assembly: ComVisible(false)]
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
[assembly: Guid("b7b00b6b-4288-4562-9773-116556607857")]
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
//
// Hauptversion
// Nebenversion
// Buildnummer
// Revision
//
// 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.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

Wyświetl plik

@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion: 4.0.30319.42000
//
// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
// der Code neu generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WinTestSimulator.Properties
{
/// <summary>
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
/// </summary>
// Diese Klasse wurde von der StronglyTypedResourceBuilder-Klasse
// über ein Tool wie ResGen oder Visual Studio automatisch generiert.
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
// mit der Option /str erneut aus, oder erstellen Sie Ihr VS-Projekt neu.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WinTestSimulator.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
/// Ressourcenlookups, die diese stark typisierte Ressourcenklasse verwenden.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

Wyświetl plik

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

Wyświetl plik

@ -0,0 +1,86 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion:4.0.30319.42000
//
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WinTestSimulator.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("ASADDWATCH")]
public string Message {
get {
return ((string)(this["Message"]));
}
set {
this["Message"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Test")]
public string From {
get {
return ((string)(this["From"]));
}
set {
this["From"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("9872")]
public decimal Port {
get {
return ((decimal)(this["Port"]));
}
set {
this["Port"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("AS")]
public string To {
get {
return ((string)(this["To"]));
}
set {
this["To"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string Data {
get {
return ((string)(this["Data"]));
}
set {
this["Data"] = value;
}
}
}
}

Wyświetl plik

@ -0,0 +1,21 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="WinTestSimulator.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="Message" Type="System.String" Scope="User">
<Value Profile="(Default)">ASADDWATCH</Value>
</Setting>
<Setting Name="From" Type="System.String" Scope="User">
<Value Profile="(Default)">Test</Value>
</Setting>
<Setting Name="Port" Type="System.Decimal" Scope="User">
<Value Profile="(Default)">9872</Value>
</Setting>
<Setting Name="To" Type="System.String" Scope="User">
<Value Profile="(Default)">AS</Value>
</Setting>
<Setting Name="Data" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

Wyświetl plik

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B7B00B6B-4288-4562-9773-116556607857}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>WinTestSimulator</RootNamespace>
<AssemblyName>WinTestSimulator</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="MainDlg.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainDlg.Designer.cs">
<DependentUpon>MainDlg.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="MainDlg.resx">
<DependentUpon>MainDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="app.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\WinTest\WinTest.csproj">
<Project>{7b815c51-6896-4989-bd1b-8d2d7a116aa3}</Project>
<Name>WinTest</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

Wyświetl plik

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="WinTestSimulator.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<WinTestSimulator.Properties.Settings>
<setting name="Message" serializeAs="String">
<value>ASADDWATCH</value>
</setting>
<setting name="From" serializeAs="String">
<value>Test</value>
</setting>
<setting name="Port" serializeAs="String">
<value>9872</value>
</setting>
<setting name="To" serializeAs="String">
<value>AS</value>
</setting>
<setting name="Data" serializeAs="String">
<value />
</setting>
</WinTestSimulator.Properties.Settings>
</userSettings>
</configuration>