diff --git a/DroneSimulator/Drone.cs b/DroneSimulator/Drone.cs index 5d1d024..ca450cd 100644 --- a/DroneSimulator/Drone.cs +++ b/DroneSimulator/Drone.cs @@ -2,6 +2,9 @@ using System.Numerics; using System.Runtime.InteropServices; using System.Security.Cryptography; +using static DroneSimulator.Drone; +using static System.Windows.Forms.VisualStyles.VisualStyleElement; +using static System.Windows.Forms.VisualStyles.VisualStyleElement.Rebar; namespace DroneSimulator { @@ -31,7 +34,13 @@ namespace DroneSimulator private Thread DroneThread; private int Timer; - private static int CounterID = 0; + private Random MainRandom = new Random(); + + RealMode.Accelerometer RealAcc = new RealMode.Accelerometer(); + RealMode.Gyroscope RealGyr = new RealMode.Gyroscope(); + RealMode.Position RealPos = new RealMode.Position(); + RealMode.Barometer RealBar = new RealMode.Barometer(); + RealMode.Range RealRange = new RealMode.Range(); public static byte[] getBytes(object data) { @@ -240,6 +249,12 @@ namespace DroneSimulator else LaserRange = float.MaxValue; } + RealAcc.Update(Acc, (uint)tick); + RealGyr.Update(Gyr, (uint)tick); + RealRange.Update(LaserRange, (uint)tick); + RealBar.Update(PosXYZ.Z * 11, (uint)tick); + RealPos.Update(PosXYZ, (uint)tick); + DataTimer = (uint)tick; } @@ -278,8 +293,8 @@ namespace DroneSimulator acc.Head.Type = DroneData.DataType.DataAcc; acc.Head.Time = (uint)Environment.TickCount; - acc.Acc.X = Acc.X; acc.Acc.Y = Acc.Y; acc.Acc.Z = Acc.Z; - acc.Time = DataTimer; + acc.Acc.X = RealAcc.result.X; acc.Acc.Y = RealAcc.result.Y; acc.Acc.Z = RealAcc.result.Z; + acc.Time = RealAcc.timer; return getBytes(acc); } @@ -293,8 +308,8 @@ namespace DroneSimulator gyr.Head.Type = DroneData.DataType.DataGyr; gyr.Head.Time = (uint)Environment.TickCount; - gyr.Gyr.X = Gyr.X; gyr.Gyr.Y = Gyr.Y; gyr.Gyr.Z = Gyr.Z; - gyr.Time = DataTimer; + gyr.Gyr.X = RealGyr.result.X; gyr.Gyr.Y = RealGyr.result.Y; gyr.Gyr.Z = RealGyr.result.Z; + gyr.Time = RealGyr.timer; return getBytes(gyr); } @@ -323,8 +338,8 @@ namespace DroneSimulator range.Head.Type = DroneData.DataType.DataRange; range.Head.Time = (uint)Environment.TickCount; - range.LiDAR = LaserRange; - range.Time = DataTimer; + range.LiDAR = RealRange.result; + range.Time = RealRange.timer; return getBytes(range); } @@ -338,12 +353,27 @@ namespace DroneSimulator local.Head.Type = DroneData.DataType.DataLocal; local.Head.Time = (uint)Environment.TickCount; - local.Local.X = PosXYZ.X; local.Local.Y = PosXYZ.Y; local.Local.Z = PosXYZ.Z; - local.Time = DataTimer; + local.Local.X = RealPos.result.X; local.Local.Y = RealPos.result.Y; local.Local.Z = RealPos.result.Z; + local.Time = RealPos.timer; return getBytes(local); } + private byte[] SendDataBarometer() + { + DroneData.DataBar bar = new DroneData.DataBar(); + + bar.Head.Size = Marshal.SizeOf(typeof(DroneData.DataBar)); + bar.Head.Mode = DroneData.DataMode.Response; + bar.Head.Type = DroneData.DataType.DataBar; + bar.Head.Time = (uint)Environment.TickCount; + + bar.Pressure = RealBar.result; + bar.Time = RealBar.timer; + + return getBytes(bar); + } + private byte[]? ServerRequestResponse(DroneData.DataHead head, byte[] body) { byte[] zero = new byte[0]; @@ -366,86 +396,17 @@ namespace DroneSimulator } } - case DroneData.DataType.DataGyr: - { - if (head.Mode == DroneData.DataMode.Request) - { - // Запрос данных - return SendDataGyr(); - } - else - { - // Пришли данные - // ... // - // - return zero; - } - } + case DroneData.DataType.DataGyr: if (head.Mode == DroneData.DataMode.Request) return SendDataGyr(); else return zero; - case DroneData.DataType.DataMag: - { - if (head.Mode == DroneData.DataMode.Request) - { - // Запрос данных - return SendDataMag(); - } - else - { - // Пришли данные - // ... // - // - return zero; - } - } + case DroneData.DataType.DataMag: if (head.Mode == DroneData.DataMode.Request) return SendDataMag(); else return zero; - case DroneData.DataType.DataRange: - { - if (head.Mode == DroneData.DataMode.Request) - { - // Запрос данных - return SendDataRange(); - } - else - { - // Пришли данные - // ... // - // - return zero; - } - } + case DroneData.DataType.DataRange: if (head.Mode == DroneData.DataMode.Request) return SendDataRange(); else return zero; - case DroneData.DataType.DataLocal: - { - if (head.Mode == DroneData.DataMode.Request) - { - // Запрос данных - return SendDataLocal(); - } - else - { - // Пришли данные - // ... // - // - return zero; - } - } + case DroneData.DataType.DataLocal: if (head.Mode == DroneData.DataMode.Request) return SendDataLocal(); else return zero; - case DroneData.DataType.DataMotor4: - { - if (head.Mode == DroneData.DataMode.Request) - { - // Запрос данных - // ... // - // - return zero; - } - else - { - // Пришли данные - RecvDataMotor4(body); - return zero; - } - } + case DroneData.DataType.DataBar: if (head.Mode == DroneData.DataMode.Request) return SendDataBarometer(); else return zero; + + case DroneData.DataType.DataMotor4: if (head.Mode == DroneData.DataMode.Response) RecvDataMotor4(body); return zero; } return zero; diff --git a/DroneSimulator/DroneData.cs b/DroneSimulator/DroneData.cs index 3fc0675..ac1310f 100644 --- a/DroneSimulator/DroneData.cs +++ b/DroneSimulator/DroneData.cs @@ -1,4 +1,4 @@ -using System.Runtime.InteropServices; +using System.Runtime.InteropServices; namespace DroneData { @@ -12,7 +12,7 @@ namespace DroneData None = 0, Head = 1, // Output - DataAcc = 1001, DataGyr = 1002, DataMag = 1003, DataRange = 1004, DataLocal = 1005, + DataAcc = 1001, DataGyr = 1002, DataMag = 1003, DataRange = 1004, DataLocal = 1005, DataBar = 1006, // Input DataMotor4 = 2001, DataMotor6 = 2002 @@ -25,7 +25,7 @@ namespace DroneData public DataMode Mode; public DataType Type; - public uint Time; // + public uint Time; // Общее время static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataHead)); } @@ -37,7 +37,7 @@ namespace DroneData public DataHead Head; public XYZ Acc; - public uint Time; // + public uint Time; // Последнее время изменения данных static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataAcc)); } @@ -47,7 +47,7 @@ namespace DroneData public DataHead Head; public XYZ Gyr; - public uint Time; // + public uint Time; // Последнее время изменения данных static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataGyr)); } @@ -57,31 +57,41 @@ namespace DroneData public DataHead Head; public XYZ Mag; - public uint Time; // + public uint Time; // Последнее время изменения данных static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataMag)); } - public struct DataLocal - { - public DataHead Head; - public XYZ Local; // - - public uint Time; // - - static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataLocal)); - } - public struct DataRange { public DataHead Head; - public float LiDAR; // + public float LiDAR; // Датчик посадки - public uint Time; // + public uint Time; // Последнее время изменения данных static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataRange)); } + public struct DataLocal + { + public DataHead Head; + public XYZ Local; // Локальные координаты + + public uint Time; // Последнее время изменения данных + + static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataLocal)); + } + + public struct DataBar + { + public DataHead Head; + public float Pressure; // Давление + + public uint Time; // Последнее время изменения данных + + static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataBar)); + } + public struct DataMotor4 { public DataHead Head; @@ -97,4 +107,4 @@ namespace DroneData static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataMotor6)); } -} \ No newline at end of file +} diff --git a/DroneSimulator/FormMain.Designer.cs b/DroneSimulator/FormMain.Designer.cs index 481fdfd..3f80daa 100644 --- a/DroneSimulator/FormMain.Designer.cs +++ b/DroneSimulator/FormMain.Designer.cs @@ -54,6 +54,104 @@ numericUpDown_Clients_Port = new NumericUpDown(); label_Clients_Port = new Label(); tabPage_Model = new TabPage(); + panel_Menu_Model = new Panel(); + groupBox1 = new GroupBox(); + label55 = new Label(); + numericUpDown_Range_Laten = new NumericUpDown(); + label56 = new Label(); + checkBox_Range_Enable = new CheckBox(); + numericUpDown_Range_Max = new NumericUpDown(); + label42 = new Label(); + label43 = new Label(); + label44 = new Label(); + numericUpDown_Range_Noise = new NumericUpDown(); + label45 = new Label(); + numericUpDown_Range_Freq = new NumericUpDown(); + label46 = new Label(); + label47 = new Label(); + groupBox_OF = new GroupBox(); + label53 = new Label(); + numericUpDown17 = new NumericUpDown(); + label54 = new Label(); + numericUpDown8 = new NumericUpDown(); + numericUpDown7 = new NumericUpDown(); + label41 = new Label(); + label40 = new Label(); + label39 = new Label(); + label38 = new Label(); + label37 = new Label(); + numericUpDown1 = new NumericUpDown(); + checkBox_OF_Enable = new CheckBox(); + label17 = new Label(); + label16 = new Label(); + label12 = new Label(); + numericUpDown_OF_Noise = new NumericUpDown(); + label13 = new Label(); + numericUpDown_OF_Freq = new NumericUpDown(); + label14 = new Label(); + label15 = new Label(); + groupBox_Barometer = new GroupBox(); + label30 = new Label(); + numericUpDown_Bar_Laten = new NumericUpDown(); + label29 = new Label(); + label19 = new Label(); + textBox_Bar_Pressure = new TextBox(); + label18 = new Label(); + checkBox_Bar_Enable = new CheckBox(); + label9 = new Label(); + numericUpDown_Bar_Noise = new NumericUpDown(); + label8 = new Label(); + numericUpDown_Bar_Freq = new NumericUpDown(); + label5 = new Label(); + label7 = new Label(); + groupBox_GPS = new GroupBox(); + label2 = new Label(); + numericUpDown_Pos_Laten = new NumericUpDown(); + label4 = new Label(); + label6 = new Label(); + numericUpDown_Pos_Noise = new NumericUpDown(); + label10 = new Label(); + numericUpDown_Pos_Freq = new NumericUpDown(); + label11 = new Label(); + label48 = new Label(); + checkBox_Pos_Enable = new CheckBox(); + groupBox_Mag = new GroupBox(); + label27 = new Label(); + numericUpDown_Mag_Noise = new NumericUpDown(); + label28 = new Label(); + numericUpDown_Mag_Freq = new NumericUpDown(); + label22 = new Label(); + groupBox_Gyr = new GroupBox(); + label51 = new Label(); + numericUpDown_Gyr_Laten = new NumericUpDown(); + label52 = new Label(); + label36 = new Label(); + label35 = new Label(); + label34 = new Label(); + numericUpDown_Gyr_Shift_Z = new NumericUpDown(); + numericUpDown_Gyr_Shift_Y = new NumericUpDown(); + numericUpDown_Gyr_Shift_X = new NumericUpDown(); + label33 = new Label(); + numericUpDown_Gyr_Noise = new NumericUpDown(); + label25 = new Label(); + label26 = new Label(); + numericUpDown_Gyr_Freq = new NumericUpDown(); + label21 = new Label(); + groupBox_Acc = new GroupBox(); + label49 = new Label(); + numericUpDown_Acc_Laten = new NumericUpDown(); + label50 = new Label(); + numericUpDown_Acc_Scale_Left = new NumericUpDown(); + numericUpDown_Acc_Scale_Rigth = new NumericUpDown(); + label32 = new Label(); + label31 = new Label(); + label24 = new Label(); + numericUpDown_Acc_Noise = new NumericUpDown(); + label23 = new Label(); + numericUpDown_Acc_Freq = new NumericUpDown(); + label20 = new Label(); + groupBox2 = new GroupBox(); + checkBox_Mode_Real = new CheckBox(); tabPage_Area = new TabPage(); groupBox_Navi = new GroupBox(); panel1 = new Panel(); @@ -61,37 +159,6 @@ comboBox_Drone_Rotor = new ComboBox(); comboBox_Drone = new ComboBox(); timer_Test = new System.Windows.Forms.Timer(components); - textBox_GPS_Lat = new TextBox(); - label2 = new Label(); - groupBox_GPS = new GroupBox(); - textBox_GPS_Lon = new TextBox(); - label4 = new Label(); - numericUpDown_GPS_Freq = new NumericUpDown(); - label_GPS_Frequency = new Label(); - label6 = new Label(); - groupBox_Barometer = new GroupBox(); - numericUpDown_Bar_Freq = new NumericUpDown(); - label5 = new Label(); - label7 = new Label(); - label8 = new Label(); - numericUpDown_Bar_Accur = new NumericUpDown(); - label9 = new Label(); - label10 = new Label(); - textBox_GPS_Accur = new NumericUpDown(); - label11 = new Label(); - groupBox1 = new GroupBox(); - label12 = new Label(); - numericUpDown_OF_Accur = new NumericUpDown(); - label13 = new Label(); - numericUpDown_OF_Freq = new NumericUpDown(); - label14 = new Label(); - label15 = new Label(); - checkBox_GPS_Enable = new CheckBox(); - label16 = new Label(); - numericUpDown1 = new NumericUpDown(); - label17 = new Label(); - checkBox_OF_Enable = new CheckBox(); - checkBox_Bar_Enable = new CheckBox(); menuStrip_Menu.SuspendLayout(); groupBox_Screen.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)pictureBox_2D).BeginInit(); @@ -104,18 +171,46 @@ ((System.ComponentModel.ISupportInitialize)numericUpDown_Clients_Limit).BeginInit(); ((System.ComponentModel.ISupportInitialize)numericUpDown_Clients_Port).BeginInit(); tabPage_Model.SuspendLayout(); + panel_Menu_Model.SuspendLayout(); + groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Range_Laten).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Range_Max).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Range_Noise).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Range_Freq).BeginInit(); + groupBox_OF.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown17).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown8).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown7).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown1).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_OF_Noise).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_OF_Freq).BeginInit(); + groupBox_Barometer.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Bar_Laten).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Bar_Noise).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Bar_Freq).BeginInit(); + groupBox_GPS.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Pos_Laten).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Pos_Noise).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Pos_Freq).BeginInit(); + groupBox_Mag.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Mag_Noise).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Mag_Freq).BeginInit(); + groupBox_Gyr.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Gyr_Laten).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Gyr_Shift_Z).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Gyr_Shift_Y).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Gyr_Shift_X).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Gyr_Noise).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Gyr_Freq).BeginInit(); + groupBox_Acc.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Acc_Laten).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Acc_Scale_Left).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Acc_Scale_Rigth).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Acc_Noise).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Acc_Freq).BeginInit(); + groupBox2.SuspendLayout(); groupBox_Navi.SuspendLayout(); panel1.SuspendLayout(); - groupBox_GPS.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)numericUpDown_GPS_Freq).BeginInit(); - groupBox_Barometer.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)numericUpDown_Bar_Freq).BeginInit(); - ((System.ComponentModel.ISupportInitialize)numericUpDown_Bar_Accur).BeginInit(); - ((System.ComponentModel.ISupportInitialize)textBox_GPS_Accur).BeginInit(); - groupBox1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)numericUpDown_OF_Accur).BeginInit(); - ((System.ComponentModel.ISupportInitialize)numericUpDown_OF_Freq).BeginInit(); - ((System.ComponentModel.ISupportInitialize)numericUpDown1).BeginInit(); SuspendLayout(); // // menuStrip_Menu @@ -149,7 +244,7 @@ groupBox_Screen.Dock = DockStyle.Fill; groupBox_Screen.Location = new Point(218, 24); groupBox_Screen.Name = "groupBox_Screen"; - groupBox_Screen.Size = new Size(466, 437); + groupBox_Screen.Size = new Size(466, 917); groupBox_Screen.TabIndex = 1; groupBox_Screen.TabStop = false; // @@ -159,7 +254,7 @@ pictureBox_2D.Dock = DockStyle.Fill; pictureBox_2D.Location = new Point(3, 19); pictureBox_2D.Name = "pictureBox_2D"; - pictureBox_2D.Size = new Size(460, 415); + pictureBox_2D.Size = new Size(460, 895); pictureBox_2D.SizeMode = PictureBoxSizeMode.Zoom; pictureBox_2D.TabIndex = 0; pictureBox_2D.TabStop = false; @@ -173,7 +268,7 @@ tabControl_Menu.Location = new Point(0, 24); tabControl_Menu.Name = "tabControl_Menu"; tabControl_Menu.SelectedIndex = 0; - tabControl_Menu.Size = new Size(218, 437); + tabControl_Menu.Size = new Size(218, 917); tabControl_Menu.TabIndex = 2; // // tabPage_Main @@ -183,7 +278,7 @@ tabPage_Main.Location = new Point(4, 24); tabPage_Main.Name = "tabPage_Main"; tabPage_Main.Padding = new Padding(3); - tabPage_Main.Size = new Size(210, 409); + tabPage_Main.Size = new Size(210, 889); tabPage_Main.TabIndex = 0; tabPage_Main.Tag = "#main"; tabPage_Main.Text = "Main"; @@ -368,23 +463,1108 @@ // // tabPage_Model // - tabPage_Model.Controls.Add(groupBox1); - tabPage_Model.Controls.Add(groupBox_Barometer); - tabPage_Model.Controls.Add(groupBox_GPS); + tabPage_Model.Controls.Add(panel_Menu_Model); tabPage_Model.Location = new Point(4, 24); tabPage_Model.Name = "tabPage_Model"; tabPage_Model.Padding = new Padding(3); - tabPage_Model.Size = new Size(210, 409); + tabPage_Model.Size = new Size(210, 889); tabPage_Model.TabIndex = 1; tabPage_Model.Tag = "#model"; tabPage_Model.Text = "Model"; tabPage_Model.UseVisualStyleBackColor = true; // + // panel_Menu_Model + // + panel_Menu_Model.Controls.Add(groupBox1); + panel_Menu_Model.Controls.Add(groupBox_OF); + panel_Menu_Model.Controls.Add(groupBox_Barometer); + panel_Menu_Model.Controls.Add(groupBox_GPS); + panel_Menu_Model.Controls.Add(groupBox_Mag); + panel_Menu_Model.Controls.Add(groupBox_Gyr); + panel_Menu_Model.Controls.Add(groupBox_Acc); + panel_Menu_Model.Controls.Add(groupBox2); + panel_Menu_Model.Dock = DockStyle.Fill; + panel_Menu_Model.Location = new Point(3, 3); + panel_Menu_Model.Name = "panel_Menu_Model"; + panel_Menu_Model.Size = new Size(204, 883); + panel_Menu_Model.TabIndex = 5; + // + // groupBox1 + // + groupBox1.Controls.Add(label55); + groupBox1.Controls.Add(numericUpDown_Range_Laten); + groupBox1.Controls.Add(label56); + groupBox1.Controls.Add(checkBox_Range_Enable); + groupBox1.Controls.Add(numericUpDown_Range_Max); + groupBox1.Controls.Add(label42); + groupBox1.Controls.Add(label43); + groupBox1.Controls.Add(label44); + groupBox1.Controls.Add(numericUpDown_Range_Noise); + groupBox1.Controls.Add(label45); + groupBox1.Controls.Add(numericUpDown_Range_Freq); + groupBox1.Controls.Add(label46); + groupBox1.Controls.Add(label47); + groupBox1.Dock = DockStyle.Top; + groupBox1.Location = new Point(0, 749); + groupBox1.Name = "groupBox1"; + groupBox1.Size = new Size(204, 133); + groupBox1.TabIndex = 8; + groupBox1.TabStop = false; + groupBox1.Text = "Range"; + // + // label55 + // + label55.AutoSize = true; + label55.Location = new Point(115, 105); + label55.Name = "label55"; + label55.Size = new Size(24, 15); + label55.TabIndex = 35; + label55.Text = "sec"; + // + // numericUpDown_Range_Laten + // + numericUpDown_Range_Laten.DecimalPlaces = 2; + numericUpDown_Range_Laten.Increment = new decimal(new int[] { 2, 0, 0, 131072 }); + numericUpDown_Range_Laten.Location = new Point(68, 103); + numericUpDown_Range_Laten.Maximum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_Range_Laten.Name = "numericUpDown_Range_Laten"; + numericUpDown_Range_Laten.Size = new Size(41, 23); + numericUpDown_Range_Laten.TabIndex = 34; + numericUpDown_Range_Laten.Value = new decimal(new int[] { 1, 0, 0, 65536 }); + numericUpDown_Range_Laten.ValueChanged += numericUpDown_Range_Update; + // + // label56 + // + label56.AutoSize = true; + label56.Location = new Point(5, 105); + label56.Name = "label56"; + label56.Size = new Size(55, 15); + label56.TabIndex = 33; + label56.Text = "Lateness:"; + // + // checkBox_Range_Enable + // + checkBox_Range_Enable.AutoSize = true; + checkBox_Range_Enable.Checked = true; + checkBox_Range_Enable.CheckState = CheckState.Checked; + checkBox_Range_Enable.Location = new Point(158, 108); + checkBox_Range_Enable.Name = "checkBox_Range_Enable"; + checkBox_Range_Enable.Size = new Size(39, 19); + checkBox_Range_Enable.TabIndex = 31; + checkBox_Range_Enable.Tag = "#en"; + checkBox_Range_Enable.Text = "En"; + checkBox_Range_Enable.UseVisualStyleBackColor = true; + checkBox_Range_Enable.CheckedChanged += numericUpDown_Range_Update; + // + // numericUpDown_Range_Max + // + numericUpDown_Range_Max.Location = new Point(69, 74); + numericUpDown_Range_Max.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_Range_Max.Name = "numericUpDown_Range_Max"; + numericUpDown_Range_Max.Size = new Size(40, 23); + numericUpDown_Range_Max.TabIndex = 29; + numericUpDown_Range_Max.Value = new decimal(new int[] { 8, 0, 0, 0 }); + numericUpDown_Range_Max.ValueChanged += numericUpDown_Range_Update; + // + // label42 + // + label42.AutoSize = true; + label42.Location = new Point(113, 76); + label42.Name = "label42"; + label42.Size = new Size(18, 15); + label42.TabIndex = 30; + label42.Text = "m"; + // + // label43 + // + label43.AutoSize = true; + label43.Location = new Point(0, 76); + label43.Name = "label43"; + label43.Size = new Size(70, 15); + label43.TabIndex = 28; + label43.Tag = "#max_height"; + label43.Text = "Max height:"; + // + // label44 + // + label44.AutoSize = true; + label44.Location = new Point(119, 47); + label44.Name = "label44"; + label44.Size = new Size(18, 15); + label44.TabIndex = 27; + label44.Text = "m"; + // + // numericUpDown_Range_Noise + // + numericUpDown_Range_Noise.DecimalPlaces = 3; + numericUpDown_Range_Noise.Location = new Point(70, 45); + numericUpDown_Range_Noise.Maximum = new decimal(new int[] { 10, 0, 0, 0 }); + numericUpDown_Range_Noise.Name = "numericUpDown_Range_Noise"; + numericUpDown_Range_Noise.Size = new Size(47, 23); + numericUpDown_Range_Noise.TabIndex = 26; + numericUpDown_Range_Noise.Value = new decimal(new int[] { 1, 0, 0, 131072 }); + numericUpDown_Range_Noise.ValueChanged += numericUpDown_Range_Update; + // + // label45 + // + label45.AutoSize = true; + label45.Location = new Point(24, 47); + label45.Name = "label45"; + label45.Size = new Size(40, 15); + label45.TabIndex = 25; + label45.Tag = "#accuracy"; + label45.Text = "Noise:"; + // + // numericUpDown_Range_Freq + // + numericUpDown_Range_Freq.Location = new Point(70, 16); + numericUpDown_Range_Freq.Maximum = new decimal(new int[] { 200, 0, 0, 0 }); + numericUpDown_Range_Freq.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_Range_Freq.Name = "numericUpDown_Range_Freq"; + numericUpDown_Range_Freq.Size = new Size(40, 23); + numericUpDown_Range_Freq.TabIndex = 22; + numericUpDown_Range_Freq.Value = new decimal(new int[] { 50, 0, 0, 0 }); + numericUpDown_Range_Freq.ValueChanged += numericUpDown_Range_Update; + // + // label46 + // + label46.AutoSize = true; + label46.Location = new Point(113, 18); + label46.Name = "label46"; + label46.Size = new Size(21, 15); + label46.TabIndex = 24; + label46.Text = "Hz"; + // + // label47 + // + label47.AutoSize = true; + label47.Location = new Point(2, 18); + label47.Name = "label47"; + label47.Size = new Size(65, 15); + label47.TabIndex = 23; + label47.Tag = "#frequency"; + label47.Text = "Frequency:"; + // + // groupBox_OF + // + groupBox_OF.Controls.Add(label53); + groupBox_OF.Controls.Add(numericUpDown17); + groupBox_OF.Controls.Add(label54); + groupBox_OF.Controls.Add(numericUpDown8); + groupBox_OF.Controls.Add(numericUpDown7); + groupBox_OF.Controls.Add(label41); + groupBox_OF.Controls.Add(label40); + groupBox_OF.Controls.Add(label39); + groupBox_OF.Controls.Add(label38); + groupBox_OF.Controls.Add(label37); + groupBox_OF.Controls.Add(numericUpDown1); + groupBox_OF.Controls.Add(checkBox_OF_Enable); + groupBox_OF.Controls.Add(label17); + groupBox_OF.Controls.Add(label16); + groupBox_OF.Controls.Add(label12); + groupBox_OF.Controls.Add(numericUpDown_OF_Noise); + groupBox_OF.Controls.Add(label13); + groupBox_OF.Controls.Add(numericUpDown_OF_Freq); + groupBox_OF.Controls.Add(label14); + groupBox_OF.Controls.Add(label15); + groupBox_OF.Dock = DockStyle.Top; + groupBox_OF.Enabled = false; + groupBox_OF.Location = new Point(0, 563); + groupBox_OF.Name = "groupBox_OF"; + groupBox_OF.Size = new Size(204, 186); + groupBox_OF.TabIndex = 4; + groupBox_OF.TabStop = false; + groupBox_OF.Text = "Optical flow"; + // + // label53 + // + label53.AutoSize = true; + label53.Location = new Point(113, 155); + label53.Name = "label53"; + label53.Size = new Size(24, 15); + label53.TabIndex = 32; + label53.Text = "sec"; + // + // numericUpDown17 + // + numericUpDown17.DecimalPlaces = 2; + numericUpDown17.Increment = new decimal(new int[] { 2, 0, 0, 131072 }); + numericUpDown17.Location = new Point(66, 153); + numericUpDown17.Maximum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown17.Name = "numericUpDown17"; + numericUpDown17.Size = new Size(41, 23); + numericUpDown17.TabIndex = 31; + numericUpDown17.Value = new decimal(new int[] { 1, 0, 0, 65536 }); + // + // label54 + // + label54.AutoSize = true; + label54.Location = new Point(3, 155); + label54.Name = "label54"; + label54.Size = new Size(55, 15); + label54.TabIndex = 30; + label54.Text = "Lateness:"; + // + // numericUpDown8 + // + numericUpDown8.DecimalPlaces = 2; + numericUpDown8.Increment = new decimal(new int[] { 1, 0, 0, 65536 }); + numericUpDown8.Location = new Point(126, 125); + numericUpDown8.Maximum = new decimal(new int[] { 10, 0, 0, 0 }); + numericUpDown8.Name = "numericUpDown8"; + numericUpDown8.Size = new Size(46, 23); + numericUpDown8.TabIndex = 26; + numericUpDown8.Value = new decimal(new int[] { 1, 0, 0, 65536 }); + // + // numericUpDown7 + // + numericUpDown7.DecimalPlaces = 1; + numericUpDown7.Increment = new decimal(new int[] { 1, 0, 0, 65536 }); + numericUpDown7.Location = new Point(45, 125); + numericUpDown7.Name = "numericUpDown7"; + numericUpDown7.Size = new Size(40, 23); + numericUpDown7.TabIndex = 24; + numericUpDown7.Value = new decimal(new int[] { 3, 0, 0, 0 }); + // + // label41 + // + label41.AutoSize = true; + label41.Location = new Point(171, 127); + label41.Name = "label41"; + label41.Size = new Size(24, 15); + label41.TabIndex = 29; + label41.Text = "sec"; + // + // label40 + // + label40.AutoSize = true; + label40.Location = new Point(37, 107); + label40.Name = "label40"; + label40.Size = new Size(64, 15); + label40.TabIndex = 28; + label40.Text = "probability"; + // + // label39 + // + label39.AutoSize = true; + label39.Location = new Point(135, 107); + label39.Name = "label39"; + label39.Size = new Size(31, 15); + label39.TabIndex = 27; + label39.Text = "time"; + // + // label38 + // + label38.AutoSize = true; + label38.Location = new Point(84, 127); + label38.Name = "label38"; + label38.Size = new Size(17, 15); + label38.TabIndex = 25; + label38.Text = "%"; + // + // label37 + // + label37.AutoSize = true; + label37.Location = new Point(1, 127); + label37.Name = "label37"; + label37.Size = new Size(35, 15); + label37.TabIndex = 23; + label37.Text = "Error:"; + // + // numericUpDown1 + // + numericUpDown1.Location = new Point(68, 80); + numericUpDown1.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown1.Name = "numericUpDown1"; + numericUpDown1.Size = new Size(40, 23); + numericUpDown1.TabIndex = 20; + numericUpDown1.Value = new decimal(new int[] { 8, 0, 0, 0 }); + // + // checkBox_OF_Enable + // + checkBox_OF_Enable.AutoSize = true; + checkBox_OF_Enable.Checked = true; + checkBox_OF_Enable.CheckState = CheckState.Checked; + checkBox_OF_Enable.Location = new Point(159, 157); + checkBox_OF_Enable.Name = "checkBox_OF_Enable"; + checkBox_OF_Enable.Size = new Size(39, 19); + checkBox_OF_Enable.TabIndex = 22; + checkBox_OF_Enable.Tag = "#en"; + checkBox_OF_Enable.Text = "En"; + checkBox_OF_Enable.UseVisualStyleBackColor = true; + // + // label17 + // + label17.AutoSize = true; + label17.Location = new Point(111, 82); + label17.Name = "label17"; + label17.Size = new Size(18, 15); + label17.TabIndex = 21; + label17.Text = "m"; + // + // label16 + // + label16.AutoSize = true; + label16.Location = new Point(-1, 82); + label16.Name = "label16"; + label16.Size = new Size(70, 15); + label16.TabIndex = 19; + label16.Tag = "#max_height"; + label16.Text = "Max height:"; + // + // label12 + // + label12.AutoSize = true; + label12.Location = new Point(111, 53); + label12.Name = "label12"; + label12.Size = new Size(28, 15); + label12.TabIndex = 18; + label12.Text = "Deg"; + // + // numericUpDown_OF_Noise + // + numericUpDown_OF_Noise.DecimalPlaces = 1; + numericUpDown_OF_Noise.Location = new Point(69, 51); + numericUpDown_OF_Noise.Maximum = new decimal(new int[] { 10, 0, 0, 0 }); + numericUpDown_OF_Noise.Name = "numericUpDown_OF_Noise"; + numericUpDown_OF_Noise.Size = new Size(40, 23); + numericUpDown_OF_Noise.TabIndex = 17; + numericUpDown_OF_Noise.Value = new decimal(new int[] { 1, 0, 0, 0 }); + // + // label13 + // + label13.AutoSize = true; + label13.Location = new Point(7, 53); + label13.Name = "label13"; + label13.Size = new Size(40, 15); + label13.TabIndex = 16; + label13.Tag = "#accuracy"; + label13.Text = "Noise:"; + // + // numericUpDown_OF_Freq + // + numericUpDown_OF_Freq.Location = new Point(69, 22); + numericUpDown_OF_Freq.Maximum = new decimal(new int[] { 200, 0, 0, 0 }); + numericUpDown_OF_Freq.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_OF_Freq.Name = "numericUpDown_OF_Freq"; + numericUpDown_OF_Freq.Size = new Size(40, 23); + numericUpDown_OF_Freq.TabIndex = 13; + numericUpDown_OF_Freq.Value = new decimal(new int[] { 100, 0, 0, 0 }); + // + // label14 + // + label14.AutoSize = true; + label14.Location = new Point(112, 24); + label14.Name = "label14"; + label14.Size = new Size(21, 15); + label14.TabIndex = 15; + label14.Text = "Hz"; + // + // label15 + // + label15.AutoSize = true; + label15.Location = new Point(6, 24); + label15.Name = "label15"; + label15.Size = new Size(65, 15); + label15.TabIndex = 14; + label15.Tag = "#frequency"; + label15.Text = "Frequency:"; + // + // groupBox_Barometer + // + groupBox_Barometer.Controls.Add(label30); + groupBox_Barometer.Controls.Add(numericUpDown_Bar_Laten); + groupBox_Barometer.Controls.Add(label29); + groupBox_Barometer.Controls.Add(label19); + groupBox_Barometer.Controls.Add(textBox_Bar_Pressure); + groupBox_Barometer.Controls.Add(label18); + groupBox_Barometer.Controls.Add(checkBox_Bar_Enable); + groupBox_Barometer.Controls.Add(label9); + groupBox_Barometer.Controls.Add(numericUpDown_Bar_Noise); + groupBox_Barometer.Controls.Add(label8); + groupBox_Barometer.Controls.Add(numericUpDown_Bar_Freq); + groupBox_Barometer.Controls.Add(label5); + groupBox_Barometer.Controls.Add(label7); + groupBox_Barometer.Dock = DockStyle.Top; + groupBox_Barometer.Location = new Point(0, 433); + groupBox_Barometer.Name = "groupBox_Barometer"; + groupBox_Barometer.Size = new Size(204, 130); + groupBox_Barometer.TabIndex = 3; + groupBox_Barometer.TabStop = false; + groupBox_Barometer.Tag = "#barometer"; + groupBox_Barometer.Text = "Barometer"; + // + // label30 + // + label30.AutoSize = true; + label30.Location = new Point(115, 103); + label30.Name = "label30"; + label30.Size = new Size(24, 15); + label30.TabIndex = 23; + label30.Text = "sec"; + // + // numericUpDown_Bar_Laten + // + numericUpDown_Bar_Laten.DecimalPlaces = 2; + numericUpDown_Bar_Laten.Increment = new decimal(new int[] { 2, 0, 0, 131072 }); + numericUpDown_Bar_Laten.Location = new Point(68, 101); + numericUpDown_Bar_Laten.Maximum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_Bar_Laten.Name = "numericUpDown_Bar_Laten"; + numericUpDown_Bar_Laten.Size = new Size(41, 23); + numericUpDown_Bar_Laten.TabIndex = 22; + numericUpDown_Bar_Laten.Value = new decimal(new int[] { 3, 0, 0, 65536 }); + numericUpDown_Bar_Laten.ValueChanged += numericUpDown_Bar_Update; + // + // label29 + // + label29.AutoSize = true; + label29.Location = new Point(9, 103); + label29.Name = "label29"; + label29.Size = new Size(55, 15); + label29.TabIndex = 21; + label29.Text = "Lateness:"; + // + // label19 + // + label19.AutoSize = true; + label19.Location = new Point(135, 19); + label19.Name = "label19"; + label19.Size = new Size(20, 15); + label19.TabIndex = 20; + label19.Text = "Pa"; + // + // textBox_Bar_Pressure + // + textBox_Bar_Pressure.Location = new Point(68, 16); + textBox_Bar_Pressure.Name = "textBox_Bar_Pressure"; + textBox_Bar_Pressure.Size = new Size(61, 23); + textBox_Bar_Pressure.TabIndex = 19; + textBox_Bar_Pressure.Text = "102258"; + textBox_Bar_Pressure.TextChanged += numericUpDown_Bar_Update; + // + // label18 + // + label18.AutoSize = true; + label18.Location = new Point(6, 19); + label18.Name = "label18"; + label18.Size = new Size(54, 15); + label18.TabIndex = 18; + label18.Tag = "#pressure"; + label18.Text = "Pressure:"; + // + // checkBox_Bar_Enable + // + checkBox_Bar_Enable.AutoSize = true; + checkBox_Bar_Enable.Checked = true; + checkBox_Bar_Enable.CheckState = CheckState.Checked; + checkBox_Bar_Enable.Location = new Point(162, 99); + checkBox_Bar_Enable.Name = "checkBox_Bar_Enable"; + checkBox_Bar_Enable.Size = new Size(39, 19); + checkBox_Bar_Enable.TabIndex = 17; + checkBox_Bar_Enable.Tag = "#en"; + checkBox_Bar_Enable.Text = "En"; + checkBox_Bar_Enable.UseVisualStyleBackColor = true; + checkBox_Bar_Enable.CheckedChanged += numericUpDown_Bar_Update; + // + // label9 + // + label9.AutoSize = true; + label9.Location = new Point(111, 74); + label9.Name = "label9"; + label9.Size = new Size(20, 15); + label9.TabIndex = 12; + label9.Text = "Pa"; + // + // numericUpDown_Bar_Noise + // + numericUpDown_Bar_Noise.DecimalPlaces = 1; + numericUpDown_Bar_Noise.Location = new Point(68, 72); + numericUpDown_Bar_Noise.Maximum = new decimal(new int[] { 10, 0, 0, 0 }); + numericUpDown_Bar_Noise.Name = "numericUpDown_Bar_Noise"; + numericUpDown_Bar_Noise.Size = new Size(40, 23); + numericUpDown_Bar_Noise.TabIndex = 11; + numericUpDown_Bar_Noise.Value = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_Bar_Noise.ValueChanged += numericUpDown_Bar_Update; + // + // label8 + // + label8.AutoSize = true; + label8.Location = new Point(23, 74); + label8.Name = "label8"; + label8.Size = new Size(40, 15); + label8.TabIndex = 10; + label8.Tag = "#accuracy"; + label8.Text = "Noise:"; + // + // numericUpDown_Bar_Freq + // + numericUpDown_Bar_Freq.Location = new Point(68, 43); + numericUpDown_Bar_Freq.Maximum = new decimal(new int[] { 200, 0, 0, 0 }); + numericUpDown_Bar_Freq.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_Bar_Freq.Name = "numericUpDown_Bar_Freq"; + numericUpDown_Bar_Freq.Size = new Size(40, 23); + numericUpDown_Bar_Freq.TabIndex = 7; + numericUpDown_Bar_Freq.Value = new decimal(new int[] { 50, 0, 0, 0 }); + numericUpDown_Bar_Freq.ValueChanged += numericUpDown_Bar_Update; + // + // label5 + // + label5.AutoSize = true; + label5.Location = new Point(110, 45); + label5.Name = "label5"; + label5.Size = new Size(21, 15); + label5.TabIndex = 9; + label5.Text = "Hz"; + // + // label7 + // + label7.AutoSize = true; + label7.Location = new Point(1, 45); + label7.Name = "label7"; + label7.Size = new Size(65, 15); + label7.TabIndex = 8; + label7.Tag = "#frequency"; + label7.Text = "Frequency:"; + // + // groupBox_GPS + // + groupBox_GPS.Controls.Add(label2); + groupBox_GPS.Controls.Add(numericUpDown_Pos_Laten); + groupBox_GPS.Controls.Add(label4); + groupBox_GPS.Controls.Add(label6); + groupBox_GPS.Controls.Add(numericUpDown_Pos_Noise); + groupBox_GPS.Controls.Add(label10); + groupBox_GPS.Controls.Add(numericUpDown_Pos_Freq); + groupBox_GPS.Controls.Add(label11); + groupBox_GPS.Controls.Add(label48); + groupBox_GPS.Controls.Add(checkBox_Pos_Enable); + groupBox_GPS.Dock = DockStyle.Top; + groupBox_GPS.Location = new Point(0, 327); + groupBox_GPS.Name = "groupBox_GPS"; + groupBox_GPS.Size = new Size(204, 106); + groupBox_GPS.TabIndex = 2; + groupBox_GPS.TabStop = false; + groupBox_GPS.Text = "Position"; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(116, 77); + label2.Name = "label2"; + label2.Size = new Size(24, 15); + label2.TabIndex = 32; + label2.Text = "sec"; + // + // numericUpDown_Pos_Laten + // + numericUpDown_Pos_Laten.DecimalPlaces = 2; + numericUpDown_Pos_Laten.Increment = new decimal(new int[] { 2, 0, 0, 131072 }); + numericUpDown_Pos_Laten.Location = new Point(69, 75); + numericUpDown_Pos_Laten.Maximum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_Pos_Laten.Name = "numericUpDown_Pos_Laten"; + numericUpDown_Pos_Laten.Size = new Size(41, 23); + numericUpDown_Pos_Laten.TabIndex = 31; + numericUpDown_Pos_Laten.Value = new decimal(new int[] { 3, 0, 0, 65536 }); + numericUpDown_Pos_Laten.ValueChanged += numericUpDown_Pos_Update; + // + // label4 + // + label4.AutoSize = true; + label4.Location = new Point(6, 77); + label4.Name = "label4"; + label4.Size = new Size(55, 15); + label4.TabIndex = 30; + label4.Text = "Lateness:"; + // + // label6 + // + label6.AutoSize = true; + label6.Location = new Point(112, 48); + label6.Name = "label6"; + label6.Size = new Size(18, 15); + label6.TabIndex = 29; + label6.Text = "m"; + // + // numericUpDown_Pos_Noise + // + numericUpDown_Pos_Noise.DecimalPlaces = 1; + numericUpDown_Pos_Noise.Increment = new decimal(new int[] { 1, 0, 0, 65536 }); + numericUpDown_Pos_Noise.Location = new Point(69, 46); + numericUpDown_Pos_Noise.Maximum = new decimal(new int[] { 10, 0, 0, 0 }); + numericUpDown_Pos_Noise.Name = "numericUpDown_Pos_Noise"; + numericUpDown_Pos_Noise.Size = new Size(40, 23); + numericUpDown_Pos_Noise.TabIndex = 28; + numericUpDown_Pos_Noise.Value = new decimal(new int[] { 1, 0, 0, 65536 }); + numericUpDown_Pos_Noise.ValueChanged += numericUpDown_Pos_Update; + // + // label10 + // + label10.AutoSize = true; + label10.Location = new Point(23, 48); + label10.Name = "label10"; + label10.Size = new Size(40, 15); + label10.TabIndex = 27; + label10.Tag = "#accuracy"; + label10.Text = "Noise:"; + // + // numericUpDown_Pos_Freq + // + numericUpDown_Pos_Freq.Location = new Point(69, 17); + numericUpDown_Pos_Freq.Maximum = new decimal(new int[] { 200, 0, 0, 0 }); + numericUpDown_Pos_Freq.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_Pos_Freq.Name = "numericUpDown_Pos_Freq"; + numericUpDown_Pos_Freq.Size = new Size(40, 23); + numericUpDown_Pos_Freq.TabIndex = 24; + numericUpDown_Pos_Freq.Value = new decimal(new int[] { 50, 0, 0, 0 }); + numericUpDown_Pos_Freq.ValueChanged += numericUpDown_Pos_Update; + // + // label11 + // + label11.AutoSize = true; + label11.Location = new Point(111, 19); + label11.Name = "label11"; + label11.Size = new Size(21, 15); + label11.TabIndex = 26; + label11.Text = "Hz"; + // + // label48 + // + label48.AutoSize = true; + label48.Location = new Point(2, 19); + label48.Name = "label48"; + label48.Size = new Size(65, 15); + label48.TabIndex = 25; + label48.Tag = "#frequency"; + label48.Text = "Frequency:"; + // + // checkBox_Pos_Enable + // + checkBox_Pos_Enable.AutoSize = true; + checkBox_Pos_Enable.Checked = true; + checkBox_Pos_Enable.CheckState = CheckState.Checked; + checkBox_Pos_Enable.Location = new Point(158, 78); + checkBox_Pos_Enable.Name = "checkBox_Pos_Enable"; + checkBox_Pos_Enable.Size = new Size(39, 19); + checkBox_Pos_Enable.TabIndex = 16; + checkBox_Pos_Enable.Tag = "#en"; + checkBox_Pos_Enable.Text = "En"; + checkBox_Pos_Enable.UseVisualStyleBackColor = true; + checkBox_Pos_Enable.CheckedChanged += numericUpDown_Pos_Update; + // + // groupBox_Mag + // + groupBox_Mag.Controls.Add(label27); + groupBox_Mag.Controls.Add(numericUpDown_Mag_Noise); + groupBox_Mag.Controls.Add(label28); + groupBox_Mag.Controls.Add(numericUpDown_Mag_Freq); + groupBox_Mag.Controls.Add(label22); + groupBox_Mag.Dock = DockStyle.Top; + groupBox_Mag.Enabled = false; + groupBox_Mag.Location = new Point(0, 276); + groupBox_Mag.Name = "groupBox_Mag"; + groupBox_Mag.Size = new Size(204, 51); + groupBox_Mag.TabIndex = 5; + groupBox_Mag.TabStop = false; + groupBox_Mag.Text = "Magnetometer"; + // + // label27 + // + label27.AutoSize = true; + label27.Location = new Point(172, 20); + label27.Name = "label27"; + label27.Size = new Size(12, 15); + label27.TabIndex = 14; + label27.Text = "?"; + // + // numericUpDown_Mag_Noise + // + numericUpDown_Mag_Noise.DecimalPlaces = 1; + numericUpDown_Mag_Noise.Location = new Point(126, 18); + numericUpDown_Mag_Noise.Name = "numericUpDown_Mag_Noise"; + numericUpDown_Mag_Noise.Size = new Size(40, 23); + numericUpDown_Mag_Noise.TabIndex = 13; + // + // label28 + // + label28.AutoSize = true; + label28.Location = new Point(83, 20); + label28.Name = "label28"; + label28.Size = new Size(40, 15); + label28.TabIndex = 12; + label28.Text = "Noise:"; + // + // numericUpDown_Mag_Freq + // + numericUpDown_Mag_Freq.Location = new Point(37, 18); + numericUpDown_Mag_Freq.Maximum = new decimal(new int[] { 200, 0, 0, 0 }); + numericUpDown_Mag_Freq.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_Mag_Freq.Name = "numericUpDown_Mag_Freq"; + numericUpDown_Mag_Freq.Size = new Size(40, 23); + numericUpDown_Mag_Freq.TabIndex = 10; + numericUpDown_Mag_Freq.Value = new decimal(new int[] { 200, 0, 0, 0 }); + // + // label22 + // + label22.AutoSize = true; + label22.Location = new Point(3, 20); + label22.Name = "label22"; + label22.Size = new Size(33, 15); + label22.TabIndex = 9; + label22.Text = "Freq:"; + // + // groupBox_Gyr + // + groupBox_Gyr.Controls.Add(label51); + groupBox_Gyr.Controls.Add(numericUpDown_Gyr_Laten); + groupBox_Gyr.Controls.Add(label52); + groupBox_Gyr.Controls.Add(label36); + groupBox_Gyr.Controls.Add(label35); + groupBox_Gyr.Controls.Add(label34); + groupBox_Gyr.Controls.Add(numericUpDown_Gyr_Shift_Z); + groupBox_Gyr.Controls.Add(numericUpDown_Gyr_Shift_Y); + groupBox_Gyr.Controls.Add(numericUpDown_Gyr_Shift_X); + groupBox_Gyr.Controls.Add(label33); + groupBox_Gyr.Controls.Add(numericUpDown_Gyr_Noise); + groupBox_Gyr.Controls.Add(label25); + groupBox_Gyr.Controls.Add(label26); + groupBox_Gyr.Controls.Add(numericUpDown_Gyr_Freq); + groupBox_Gyr.Controls.Add(label21); + groupBox_Gyr.Dock = DockStyle.Top; + groupBox_Gyr.Location = new Point(0, 154); + groupBox_Gyr.Name = "groupBox_Gyr"; + groupBox_Gyr.Size = new Size(204, 122); + groupBox_Gyr.TabIndex = 7; + groupBox_Gyr.TabStop = false; + groupBox_Gyr.Text = "Gyroscope"; + // + // label51 + // + label51.AutoSize = true; + label51.Location = new Point(126, 94); + label51.Name = "label51"; + label51.Size = new Size(24, 15); + label51.TabIndex = 35; + label51.Text = "sec"; + // + // numericUpDown_Gyr_Laten + // + numericUpDown_Gyr_Laten.DecimalPlaces = 3; + numericUpDown_Gyr_Laten.Increment = new decimal(new int[] { 2, 0, 0, 131072 }); + numericUpDown_Gyr_Laten.Location = new Point(68, 92); + numericUpDown_Gyr_Laten.Maximum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_Gyr_Laten.Name = "numericUpDown_Gyr_Laten"; + numericUpDown_Gyr_Laten.Size = new Size(49, 23); + numericUpDown_Gyr_Laten.TabIndex = 34; + numericUpDown_Gyr_Laten.Value = new decimal(new int[] { 1, 0, 0, 131072 }); + numericUpDown_Gyr_Laten.ValueChanged += numericUpDown_Gyr_Update; + // + // label52 + // + label52.AutoSize = true; + label52.Location = new Point(5, 94); + label52.Name = "label52"; + label52.Size = new Size(55, 15); + label52.TabIndex = 33; + label52.Text = "Lateness:"; + // + // label36 + // + label36.AutoSize = true; + label36.Location = new Point(158, 44); + label36.Name = "label36"; + label36.Size = new Size(14, 15); + label36.TabIndex = 21; + label36.Text = "Z"; + // + // label35 + // + label35.AutoSize = true; + label35.Location = new Point(103, 44); + label35.Name = "label35"; + label35.Size = new Size(14, 15); + label35.TabIndex = 20; + label35.Text = "Y"; + // + // label34 + // + label34.AutoSize = true; + label34.Location = new Point(47, 44); + label34.Name = "label34"; + label34.Size = new Size(14, 15); + label34.TabIndex = 19; + label34.Text = "X"; + // + // numericUpDown_Gyr_Shift_Z + // + numericUpDown_Gyr_Shift_Z.DecimalPlaces = 2; + numericUpDown_Gyr_Shift_Z.Increment = new decimal(new int[] { 1, 0, 0, 65536 }); + numericUpDown_Gyr_Shift_Z.Location = new Point(145, 62); + numericUpDown_Gyr_Shift_Z.Maximum = new decimal(new int[] { 10, 0, 0, 0 }); + numericUpDown_Gyr_Shift_Z.Minimum = new decimal(new int[] { 10, 0, 0, int.MinValue }); + numericUpDown_Gyr_Shift_Z.Name = "numericUpDown_Gyr_Shift_Z"; + numericUpDown_Gyr_Shift_Z.Size = new Size(48, 23); + numericUpDown_Gyr_Shift_Z.TabIndex = 18; + numericUpDown_Gyr_Shift_Z.Value = new decimal(new int[] { 1, 0, 0, 131072 }); + numericUpDown_Gyr_Shift_Z.ValueChanged += numericUpDown_Gyr_Update; + // + // numericUpDown_Gyr_Shift_Y + // + numericUpDown_Gyr_Shift_Y.DecimalPlaces = 2; + numericUpDown_Gyr_Shift_Y.Increment = new decimal(new int[] { 1, 0, 0, 65536 }); + numericUpDown_Gyr_Shift_Y.Location = new Point(91, 62); + numericUpDown_Gyr_Shift_Y.Maximum = new decimal(new int[] { 10, 0, 0, 0 }); + numericUpDown_Gyr_Shift_Y.Minimum = new decimal(new int[] { 10, 0, 0, int.MinValue }); + numericUpDown_Gyr_Shift_Y.Name = "numericUpDown_Gyr_Shift_Y"; + numericUpDown_Gyr_Shift_Y.Size = new Size(48, 23); + numericUpDown_Gyr_Shift_Y.TabIndex = 17; + numericUpDown_Gyr_Shift_Y.Value = new decimal(new int[] { 2, 0, 0, -2147352576 }); + numericUpDown_Gyr_Shift_Y.ValueChanged += numericUpDown_Gyr_Update; + // + // numericUpDown_Gyr_Shift_X + // + numericUpDown_Gyr_Shift_X.DecimalPlaces = 2; + numericUpDown_Gyr_Shift_X.Increment = new decimal(new int[] { 1, 0, 0, 65536 }); + numericUpDown_Gyr_Shift_X.Location = new Point(37, 62); + numericUpDown_Gyr_Shift_X.Maximum = new decimal(new int[] { 10, 0, 0, 0 }); + numericUpDown_Gyr_Shift_X.Minimum = new decimal(new int[] { 10, 0, 0, int.MinValue }); + numericUpDown_Gyr_Shift_X.Name = "numericUpDown_Gyr_Shift_X"; + numericUpDown_Gyr_Shift_X.Size = new Size(48, 23); + numericUpDown_Gyr_Shift_X.TabIndex = 16; + numericUpDown_Gyr_Shift_X.Value = new decimal(new int[] { 1, 0, 0, -2147352576 }); + numericUpDown_Gyr_Shift_X.ValueChanged += numericUpDown_Gyr_Update; + // + // label33 + // + label33.AutoSize = true; + label33.Location = new Point(1, 64); + label33.Name = "label33"; + label33.Size = new Size(34, 15); + label33.TabIndex = 15; + label33.Text = "Shift:"; + // + // numericUpDown_Gyr_Noise + // + numericUpDown_Gyr_Noise.DecimalPlaces = 1; + numericUpDown_Gyr_Noise.Increment = new decimal(new int[] { 1, 0, 0, 65536 }); + numericUpDown_Gyr_Noise.Location = new Point(126, 19); + numericUpDown_Gyr_Noise.Maximum = new decimal(new int[] { 10, 0, 0, 0 }); + numericUpDown_Gyr_Noise.Name = "numericUpDown_Gyr_Noise"; + numericUpDown_Gyr_Noise.Size = new Size(40, 23); + numericUpDown_Gyr_Noise.TabIndex = 13; + numericUpDown_Gyr_Noise.Value = new decimal(new int[] { 1, 0, 0, 65536 }); + numericUpDown_Gyr_Noise.ValueChanged += numericUpDown_Gyr_Update; + // + // label25 + // + label25.AutoSize = true; + label25.Location = new Point(168, 22); + label25.Name = "label25"; + label25.Size = new Size(33, 15); + label25.TabIndex = 14; + label25.Text = "dgps"; + // + // label26 + // + label26.AutoSize = true; + label26.Location = new Point(83, 22); + label26.Name = "label26"; + label26.Size = new Size(40, 15); + label26.TabIndex = 12; + label26.Text = "Noise:"; + // + // numericUpDown_Gyr_Freq + // + numericUpDown_Gyr_Freq.Location = new Point(37, 19); + numericUpDown_Gyr_Freq.Maximum = new decimal(new int[] { 200, 0, 0, 0 }); + numericUpDown_Gyr_Freq.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_Gyr_Freq.Name = "numericUpDown_Gyr_Freq"; + numericUpDown_Gyr_Freq.Size = new Size(40, 23); + numericUpDown_Gyr_Freq.TabIndex = 10; + numericUpDown_Gyr_Freq.Value = new decimal(new int[] { 200, 0, 0, 0 }); + numericUpDown_Gyr_Freq.ValueChanged += numericUpDown_Gyr_Update; + // + // label21 + // + label21.AutoSize = true; + label21.Location = new Point(3, 21); + label21.Name = "label21"; + label21.Size = new Size(33, 15); + label21.TabIndex = 9; + label21.Text = "Freq:"; + // + // groupBox_Acc + // + groupBox_Acc.Controls.Add(label49); + groupBox_Acc.Controls.Add(numericUpDown_Acc_Laten); + groupBox_Acc.Controls.Add(label50); + groupBox_Acc.Controls.Add(numericUpDown_Acc_Scale_Left); + groupBox_Acc.Controls.Add(numericUpDown_Acc_Scale_Rigth); + groupBox_Acc.Controls.Add(label32); + groupBox_Acc.Controls.Add(label31); + groupBox_Acc.Controls.Add(label24); + groupBox_Acc.Controls.Add(numericUpDown_Acc_Noise); + groupBox_Acc.Controls.Add(label23); + groupBox_Acc.Controls.Add(numericUpDown_Acc_Freq); + groupBox_Acc.Controls.Add(label20); + groupBox_Acc.Dock = DockStyle.Top; + groupBox_Acc.Location = new Point(0, 44); + groupBox_Acc.Name = "groupBox_Acc"; + groupBox_Acc.Size = new Size(204, 110); + groupBox_Acc.TabIndex = 6; + groupBox_Acc.TabStop = false; + groupBox_Acc.Text = "Accelerometer"; + // + // label49 + // + label49.AutoSize = true; + label49.Location = new Point(126, 80); + label49.Name = "label49"; + label49.Size = new Size(24, 15); + label49.TabIndex = 35; + label49.Text = "sec"; + // + // numericUpDown_Acc_Laten + // + numericUpDown_Acc_Laten.DecimalPlaces = 3; + numericUpDown_Acc_Laten.Increment = new decimal(new int[] { 1, 0, 0, 131072 }); + numericUpDown_Acc_Laten.Location = new Point(68, 78); + numericUpDown_Acc_Laten.Maximum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_Acc_Laten.Name = "numericUpDown_Acc_Laten"; + numericUpDown_Acc_Laten.Size = new Size(49, 23); + numericUpDown_Acc_Laten.TabIndex = 34; + numericUpDown_Acc_Laten.Value = new decimal(new int[] { 2, 0, 0, 131072 }); + numericUpDown_Acc_Laten.ValueChanged += numericUpDown_Acc_Update; + // + // label50 + // + label50.AutoSize = true; + label50.Location = new Point(5, 80); + label50.Name = "label50"; + label50.Size = new Size(55, 15); + label50.TabIndex = 33; + label50.Text = "Lateness:"; + // + // numericUpDown_Acc_Scale_Left + // + numericUpDown_Acc_Scale_Left.DecimalPlaces = 3; + numericUpDown_Acc_Scale_Left.Increment = new decimal(new int[] { 1, 0, 0, 196608 }); + numericUpDown_Acc_Scale_Left.Location = new Point(48, 50); + numericUpDown_Acc_Scale_Left.Maximum = new decimal(new int[] { 5, 0, 0, -2147418112 }); + numericUpDown_Acc_Scale_Left.Minimum = new decimal(new int[] { 15, 0, 0, -2147418112 }); + numericUpDown_Acc_Scale_Left.Name = "numericUpDown_Acc_Scale_Left"; + numericUpDown_Acc_Scale_Left.Size = new Size(60, 23); + numericUpDown_Acc_Scale_Left.TabIndex = 13; + numericUpDown_Acc_Scale_Left.Value = new decimal(new int[] { 101, 0, 0, -2147352576 }); + numericUpDown_Acc_Scale_Left.ValueChanged += numericUpDown_Acc_Update; + // + // numericUpDown_Acc_Scale_Rigth + // + numericUpDown_Acc_Scale_Rigth.DecimalPlaces = 3; + numericUpDown_Acc_Scale_Rigth.Increment = new decimal(new int[] { 1, 0, 0, 196608 }); + numericUpDown_Acc_Scale_Rigth.Location = new Point(136, 50); + numericUpDown_Acc_Scale_Rigth.Maximum = new decimal(new int[] { 15, 0, 0, 65536 }); + numericUpDown_Acc_Scale_Rigth.Minimum = new decimal(new int[] { 5, 0, 0, 65536 }); + numericUpDown_Acc_Scale_Rigth.Name = "numericUpDown_Acc_Scale_Rigth"; + numericUpDown_Acc_Scale_Rigth.Size = new Size(59, 23); + numericUpDown_Acc_Scale_Rigth.TabIndex = 14; + numericUpDown_Acc_Scale_Rigth.Value = new decimal(new int[] { 102, 0, 0, 131072 }); + numericUpDown_Acc_Scale_Rigth.ValueChanged += numericUpDown_Acc_Update; + // + // label32 + // + label32.AutoSize = true; + label32.Location = new Point(109, 52); + label32.Name = "label32"; + label32.Size = new Size(28, 15); + label32.TabIndex = 15; + label32.Text = "<->"; + // + // label31 + // + label31.AutoSize = true; + label31.Location = new Point(5, 52); + label31.Name = "label31"; + label31.Size = new Size(37, 15); + label31.TabIndex = 12; + label31.Text = "Scale:"; + // + // label24 + // + label24.AutoSize = true; + label24.Location = new Point(180, 24); + label24.Name = "label24"; + label24.Size = new Size(15, 15); + label24.TabIndex = 11; + label24.Text = "G"; + // + // numericUpDown_Acc_Noise + // + numericUpDown_Acc_Noise.DecimalPlaces = 3; + numericUpDown_Acc_Noise.Increment = new decimal(new int[] { 1, 0, 0, 196608 }); + numericUpDown_Acc_Noise.Location = new Point(126, 21); + numericUpDown_Acc_Noise.Maximum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_Acc_Noise.Name = "numericUpDown_Acc_Noise"; + numericUpDown_Acc_Noise.Size = new Size(49, 23); + numericUpDown_Acc_Noise.TabIndex = 10; + numericUpDown_Acc_Noise.Value = new decimal(new int[] { 1, 0, 0, 196608 }); + numericUpDown_Acc_Noise.ValueChanged += numericUpDown_Acc_Update; + // + // label23 + // + label23.AutoSize = true; + label23.Location = new Point(83, 24); + label23.Name = "label23"; + label23.Size = new Size(40, 15); + label23.TabIndex = 9; + label23.Text = "Noise:"; + // + // numericUpDown_Acc_Freq + // + numericUpDown_Acc_Freq.Location = new Point(37, 21); + numericUpDown_Acc_Freq.Maximum = new decimal(new int[] { 200, 0, 0, 0 }); + numericUpDown_Acc_Freq.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_Acc_Freq.Name = "numericUpDown_Acc_Freq"; + numericUpDown_Acc_Freq.Size = new Size(40, 23); + numericUpDown_Acc_Freq.TabIndex = 8; + numericUpDown_Acc_Freq.Value = new decimal(new int[] { 200, 0, 0, 0 }); + numericUpDown_Acc_Freq.ValueChanged += numericUpDown_Acc_Update; + // + // label20 + // + label20.AutoSize = true; + label20.Location = new Point(1, 23); + label20.Name = "label20"; + label20.Size = new Size(33, 15); + label20.TabIndex = 2; + label20.Text = "Freq:"; + // + // groupBox2 + // + groupBox2.Controls.Add(checkBox_Mode_Real); + groupBox2.Dock = DockStyle.Top; + groupBox2.Location = new Point(0, 0); + groupBox2.Name = "groupBox2"; + groupBox2.Size = new Size(204, 44); + groupBox2.TabIndex = 9; + groupBox2.TabStop = false; + groupBox2.Text = "Mode"; + // + // checkBox_Mode_Real + // + checkBox_Mode_Real.AutoSize = true; + checkBox_Mode_Real.Location = new Point(10, 22); + checkBox_Mode_Real.Name = "checkBox_Mode_Real"; + checkBox_Mode_Real.Size = new Size(107, 19); + checkBox_Mode_Real.TabIndex = 0; + checkBox_Mode_Real.Text = "Real simulation"; + checkBox_Mode_Real.UseVisualStyleBackColor = true; + checkBox_Mode_Real.CheckedChanged += checkBox_Mode_Real_CheckedChanged; + // // tabPage_Area // tabPage_Area.Location = new Point(4, 24); tabPage_Area.Name = "tabPage_Area"; - tabPage_Area.Size = new Size(210, 409); + tabPage_Area.Size = new Size(210, 889); tabPage_Area.TabIndex = 2; tabPage_Area.Tag = "#area"; tabPage_Area.Text = "Area"; @@ -397,7 +1577,7 @@ groupBox_Navi.Dock = DockStyle.Right; groupBox_Navi.Location = new Point(684, 24); groupBox_Navi.Name = "groupBox_Navi"; - groupBox_Navi.Size = new Size(200, 437); + groupBox_Navi.Size = new Size(200, 917); groupBox_Navi.TabIndex = 3; groupBox_Navi.TabStop = false; groupBox_Navi.Tag = "#navigation"; @@ -410,7 +1590,7 @@ panel1.Dock = DockStyle.Fill; panel1.Location = new Point(3, 42); panel1.Name = "panel1"; - panel1.Size = new Size(194, 392); + panel1.Size = new Size(194, 872); panel1.TabIndex = 3; // // button_Drone_Color @@ -447,353 +1627,18 @@ timer_Test.Interval = 10; timer_Test.Tick += timer_Test_Tick; // - // textBox_GPS_Lat - // - textBox_GPS_Lat.Location = new Point(37, 22); - textBox_GPS_Lat.Name = "textBox_GPS_Lat"; - textBox_GPS_Lat.Size = new Size(92, 23); - textBox_GPS_Lat.TabIndex = 0; - textBox_GPS_Lat.Text = "47.2125649"; - // - // label2 - // - label2.AutoSize = true; - label2.Location = new Point(5, 25); - label2.Name = "label2"; - label2.Size = new Size(26, 15); - label2.TabIndex = 1; - label2.Text = "Lat:"; - // - // groupBox_GPS - // - groupBox_GPS.Controls.Add(checkBox_GPS_Enable); - groupBox_GPS.Controls.Add(label10); - groupBox_GPS.Controls.Add(textBox_GPS_Accur); - groupBox_GPS.Controls.Add(label11); - groupBox_GPS.Controls.Add(numericUpDown_GPS_Freq); - groupBox_GPS.Controls.Add(label6); - groupBox_GPS.Controls.Add(label_GPS_Frequency); - groupBox_GPS.Controls.Add(label4); - groupBox_GPS.Controls.Add(textBox_GPS_Lon); - groupBox_GPS.Controls.Add(label2); - groupBox_GPS.Controls.Add(textBox_GPS_Lat); - groupBox_GPS.Dock = DockStyle.Top; - groupBox_GPS.Enabled = false; - groupBox_GPS.Location = new Point(3, 3); - groupBox_GPS.Name = "groupBox_GPS"; - groupBox_GPS.Size = new Size(204, 112); - groupBox_GPS.TabIndex = 2; - groupBox_GPS.TabStop = false; - groupBox_GPS.Text = "GPS"; - // - // textBox_GPS_Lon - // - textBox_GPS_Lon.Location = new Point(37, 51); - textBox_GPS_Lon.Name = "textBox_GPS_Lon"; - textBox_GPS_Lon.Size = new Size(92, 23); - textBox_GPS_Lon.TabIndex = 2; - textBox_GPS_Lon.Text = "38.9160740"; - // - // label4 - // - label4.AutoSize = true; - label4.Location = new Point(5, 54); - label4.Name = "label4"; - label4.Size = new Size(30, 15); - label4.TabIndex = 3; - label4.Text = "Lon:"; - // - // numericUpDown_GPS_Freq - // - numericUpDown_GPS_Freq.Location = new Point(135, 51); - numericUpDown_GPS_Freq.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); - numericUpDown_GPS_Freq.Name = "numericUpDown_GPS_Freq"; - numericUpDown_GPS_Freq.Size = new Size(40, 23); - numericUpDown_GPS_Freq.TabIndex = 4; - numericUpDown_GPS_Freq.Value = new decimal(new int[] { 10, 0, 0, 0 }); - // - // label_GPS_Frequency - // - label_GPS_Frequency.AutoSize = true; - label_GPS_Frequency.Location = new Point(135, 25); - label_GPS_Frequency.Name = "label_GPS_Frequency"; - label_GPS_Frequency.Size = new Size(62, 15); - label_GPS_Frequency.TabIndex = 5; - label_GPS_Frequency.Tag = "#frequency"; - label_GPS_Frequency.Text = "Frequency"; - // - // label6 - // - label6.AutoSize = true; - label6.Location = new Point(176, 54); - label6.Name = "label6"; - label6.Size = new Size(21, 15); - label6.TabIndex = 6; - label6.Text = "Hz"; - // - // groupBox_Barometer - // - groupBox_Barometer.Controls.Add(checkBox_Bar_Enable); - groupBox_Barometer.Controls.Add(label9); - groupBox_Barometer.Controls.Add(numericUpDown_Bar_Accur); - groupBox_Barometer.Controls.Add(label8); - groupBox_Barometer.Controls.Add(numericUpDown_Bar_Freq); - groupBox_Barometer.Controls.Add(label5); - groupBox_Barometer.Controls.Add(label7); - groupBox_Barometer.Dock = DockStyle.Top; - groupBox_Barometer.Location = new Point(3, 115); - groupBox_Barometer.Name = "groupBox_Barometer"; - groupBox_Barometer.Size = new Size(204, 88); - groupBox_Barometer.TabIndex = 3; - groupBox_Barometer.TabStop = false; - groupBox_Barometer.Tag = "#barometer"; - groupBox_Barometer.Text = "Barometer"; - // - // numericUpDown_Bar_Freq - // - numericUpDown_Bar_Freq.Location = new Point(69, 22); - numericUpDown_Bar_Freq.Maximum = new decimal(new int[] { 200, 0, 0, 0 }); - numericUpDown_Bar_Freq.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); - numericUpDown_Bar_Freq.Name = "numericUpDown_Bar_Freq"; - numericUpDown_Bar_Freq.Size = new Size(40, 23); - numericUpDown_Bar_Freq.TabIndex = 7; - numericUpDown_Bar_Freq.Value = new decimal(new int[] { 50, 0, 0, 0 }); - // - // label5 - // - label5.AutoSize = true; - label5.Location = new Point(111, 24); - label5.Name = "label5"; - label5.Size = new Size(21, 15); - label5.TabIndex = 9; - label5.Text = "Hz"; - // - // label7 - // - label7.AutoSize = true; - label7.Location = new Point(6, 24); - label7.Name = "label7"; - label7.Size = new Size(62, 15); - label7.TabIndex = 8; - label7.Tag = "#frequency"; - label7.Text = "Frequency"; - // - // label8 - // - label8.AutoSize = true; - label8.Location = new Point(7, 53); - label8.Name = "label8"; - label8.Size = new Size(56, 15); - label8.TabIndex = 10; - label8.Tag = "#accuracy"; - label8.Text = "Accuracy"; - // - // numericUpDown_Bar_Accur - // - numericUpDown_Bar_Accur.DecimalPlaces = 1; - numericUpDown_Bar_Accur.Location = new Point(69, 51); - numericUpDown_Bar_Accur.Maximum = new decimal(new int[] { 10, 0, 0, 0 }); - numericUpDown_Bar_Accur.Name = "numericUpDown_Bar_Accur"; - numericUpDown_Bar_Accur.Size = new Size(40, 23); - numericUpDown_Bar_Accur.TabIndex = 11; - numericUpDown_Bar_Accur.Value = new decimal(new int[] { 1, 0, 0, 0 }); - // - // label9 - // - label9.AutoSize = true; - label9.Location = new Point(112, 53); - label9.Name = "label9"; - label9.Size = new Size(20, 15); - label9.TabIndex = 12; - label9.Text = "Pa"; - // - // label10 - // - label10.AutoSize = true; - label10.Location = new Point(111, 82); - label10.Name = "label10"; - label10.Size = new Size(18, 15); - label10.TabIndex = 15; - label10.Text = "m"; - // - // textBox_GPS_Accur - // - textBox_GPS_Accur.DecimalPlaces = 1; - textBox_GPS_Accur.Location = new Point(68, 80); - textBox_GPS_Accur.Maximum = new decimal(new int[] { 10, 0, 0, 0 }); - textBox_GPS_Accur.Name = "textBox_GPS_Accur"; - textBox_GPS_Accur.Size = new Size(40, 23); - textBox_GPS_Accur.TabIndex = 14; - textBox_GPS_Accur.Value = new decimal(new int[] { 1, 0, 0, 0 }); - // - // label11 - // - label11.AutoSize = true; - label11.Location = new Point(6, 82); - label11.Name = "label11"; - label11.Size = new Size(56, 15); - label11.TabIndex = 13; - label11.Tag = "#accuracy"; - label11.Text = "Accuracy"; - // - // groupBox1 - // - groupBox1.Controls.Add(checkBox_OF_Enable); - groupBox1.Controls.Add(label17); - groupBox1.Controls.Add(numericUpDown1); - groupBox1.Controls.Add(label16); - groupBox1.Controls.Add(label12); - groupBox1.Controls.Add(numericUpDown_OF_Accur); - groupBox1.Controls.Add(label13); - groupBox1.Controls.Add(numericUpDown_OF_Freq); - groupBox1.Controls.Add(label14); - groupBox1.Controls.Add(label15); - groupBox1.Dock = DockStyle.Top; - groupBox1.Enabled = false; - groupBox1.Location = new Point(3, 203); - groupBox1.Name = "groupBox1"; - groupBox1.Size = new Size(204, 114); - groupBox1.TabIndex = 4; - groupBox1.TabStop = false; - groupBox1.Text = "Optical flow"; - // - // label12 - // - label12.AutoSize = true; - label12.Location = new Point(111, 53); - label12.Name = "label12"; - label12.Size = new Size(28, 15); - label12.TabIndex = 18; - label12.Text = "Deg"; - // - // numericUpDown_OF_Accur - // - numericUpDown_OF_Accur.DecimalPlaces = 1; - numericUpDown_OF_Accur.Location = new Point(69, 51); - numericUpDown_OF_Accur.Maximum = new decimal(new int[] { 10, 0, 0, 0 }); - numericUpDown_OF_Accur.Name = "numericUpDown_OF_Accur"; - numericUpDown_OF_Accur.Size = new Size(40, 23); - numericUpDown_OF_Accur.TabIndex = 17; - numericUpDown_OF_Accur.Value = new decimal(new int[] { 1, 0, 0, 0 }); - // - // label13 - // - label13.AutoSize = true; - label13.Location = new Point(7, 53); - label13.Name = "label13"; - label13.Size = new Size(56, 15); - label13.TabIndex = 16; - label13.Tag = "#accuracy"; - label13.Text = "Accuracy"; - // - // numericUpDown_OF_Freq - // - numericUpDown_OF_Freq.Location = new Point(69, 22); - numericUpDown_OF_Freq.Maximum = new decimal(new int[] { 200, 0, 0, 0 }); - numericUpDown_OF_Freq.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); - numericUpDown_OF_Freq.Name = "numericUpDown_OF_Freq"; - numericUpDown_OF_Freq.Size = new Size(40, 23); - numericUpDown_OF_Freq.TabIndex = 13; - numericUpDown_OF_Freq.Value = new decimal(new int[] { 100, 0, 0, 0 }); - // - // label14 - // - label14.AutoSize = true; - label14.Location = new Point(112, 24); - label14.Name = "label14"; - label14.Size = new Size(21, 15); - label14.TabIndex = 15; - label14.Text = "Hz"; - // - // label15 - // - label15.AutoSize = true; - label15.Location = new Point(6, 24); - label15.Name = "label15"; - label15.Size = new Size(62, 15); - label15.TabIndex = 14; - label15.Tag = "#frequency"; - label15.Text = "Frequency"; - // - // checkBox_GPS_Enable - // - checkBox_GPS_Enable.AutoSize = true; - checkBox_GPS_Enable.Checked = true; - checkBox_GPS_Enable.CheckState = CheckState.Checked; - checkBox_GPS_Enable.Location = new Point(158, 87); - checkBox_GPS_Enable.Name = "checkBox_GPS_Enable"; - checkBox_GPS_Enable.Size = new Size(39, 19); - checkBox_GPS_Enable.TabIndex = 16; - checkBox_GPS_Enable.Tag = "#en"; - checkBox_GPS_Enable.Text = "En"; - checkBox_GPS_Enable.UseVisualStyleBackColor = true; - // - // label16 - // - label16.AutoSize = true; - label16.Location = new Point(1, 82); - label16.Name = "label16"; - label16.Size = new Size(67, 15); - label16.TabIndex = 19; - label16.Tag = "#max_height"; - label16.Text = "Max height"; - // - // numericUpDown1 - // - numericUpDown1.Location = new Point(68, 80); - numericUpDown1.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); - numericUpDown1.Name = "numericUpDown1"; - numericUpDown1.Size = new Size(40, 23); - numericUpDown1.TabIndex = 20; - numericUpDown1.Value = new decimal(new int[] { 8, 0, 0, 0 }); - // - // label17 - // - label17.AutoSize = true; - label17.Location = new Point(111, 82); - label17.Name = "label17"; - label17.Size = new Size(18, 15); - label17.TabIndex = 21; - label17.Text = "m"; - // - // checkBox_OF_Enable - // - checkBox_OF_Enable.AutoSize = true; - checkBox_OF_Enable.Checked = true; - checkBox_OF_Enable.CheckState = CheckState.Checked; - checkBox_OF_Enable.Location = new Point(158, 89); - checkBox_OF_Enable.Name = "checkBox_OF_Enable"; - checkBox_OF_Enable.Size = new Size(39, 19); - checkBox_OF_Enable.TabIndex = 22; - checkBox_OF_Enable.Tag = "#en"; - checkBox_OF_Enable.Text = "En"; - checkBox_OF_Enable.UseVisualStyleBackColor = true; - // - // checkBox_Bar_Enable - // - checkBox_Bar_Enable.AutoSize = true; - checkBox_Bar_Enable.Checked = true; - checkBox_Bar_Enable.CheckState = CheckState.Checked; - checkBox_Bar_Enable.Location = new Point(158, 63); - checkBox_Bar_Enable.Name = "checkBox_Bar_Enable"; - checkBox_Bar_Enable.Size = new Size(39, 19); - checkBox_Bar_Enable.TabIndex = 17; - checkBox_Bar_Enable.Tag = "#en"; - checkBox_Bar_Enable.Text = "En"; - checkBox_Bar_Enable.UseVisualStyleBackColor = true; - // // Form_Main // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(884, 461); + ClientSize = new Size(884, 941); Controls.Add(groupBox_Screen); Controls.Add(groupBox_Navi); Controls.Add(tabControl_Menu); Controls.Add(menuStrip_Menu); Icon = (Icon)resources.GetObject("$this.Icon"); MainMenuStrip = menuStrip_Menu; - MinimumSize = new Size(900, 500); + MinimumSize = new Size(900, 980); Name = "Form_Main"; Text = "Drone Simulator V1.0"; FormClosing += Form_Main_FormClosing; @@ -812,21 +1657,54 @@ ((System.ComponentModel.ISupportInitialize)numericUpDown_Clients_Limit).EndInit(); ((System.ComponentModel.ISupportInitialize)numericUpDown_Clients_Port).EndInit(); tabPage_Model.ResumeLayout(false); - groupBox_Navi.ResumeLayout(false); - panel1.ResumeLayout(false); - groupBox_GPS.ResumeLayout(false); - groupBox_GPS.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)numericUpDown_GPS_Freq).EndInit(); - groupBox_Barometer.ResumeLayout(false); - groupBox_Barometer.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)numericUpDown_Bar_Freq).EndInit(); - ((System.ComponentModel.ISupportInitialize)numericUpDown_Bar_Accur).EndInit(); - ((System.ComponentModel.ISupportInitialize)textBox_GPS_Accur).EndInit(); + panel_Menu_Model.ResumeLayout(false); groupBox1.ResumeLayout(false); groupBox1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)numericUpDown_OF_Accur).EndInit(); - ((System.ComponentModel.ISupportInitialize)numericUpDown_OF_Freq).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Range_Laten).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Range_Max).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Range_Noise).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Range_Freq).EndInit(); + groupBox_OF.ResumeLayout(false); + groupBox_OF.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown17).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown8).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown7).EndInit(); ((System.ComponentModel.ISupportInitialize)numericUpDown1).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_OF_Noise).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_OF_Freq).EndInit(); + groupBox_Barometer.ResumeLayout(false); + groupBox_Barometer.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Bar_Laten).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Bar_Noise).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Bar_Freq).EndInit(); + groupBox_GPS.ResumeLayout(false); + groupBox_GPS.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Pos_Laten).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Pos_Noise).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Pos_Freq).EndInit(); + groupBox_Mag.ResumeLayout(false); + groupBox_Mag.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Mag_Noise).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Mag_Freq).EndInit(); + groupBox_Gyr.ResumeLayout(false); + groupBox_Gyr.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Gyr_Laten).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Gyr_Shift_Z).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Gyr_Shift_Y).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Gyr_Shift_X).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Gyr_Noise).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Gyr_Freq).EndInit(); + groupBox_Acc.ResumeLayout(false); + groupBox_Acc.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Acc_Laten).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Acc_Scale_Left).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Acc_Scale_Rigth).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Acc_Noise).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Acc_Freq).EndInit(); + groupBox2.ResumeLayout(false); + groupBox2.PerformLayout(); + groupBox_Navi.ResumeLayout(false); + panel1.ResumeLayout(false); ResumeLayout(false); PerformLayout(); } @@ -865,35 +1743,102 @@ private Label label_Visual_Num; private Label label3; private GroupBox groupBox_GPS; - private TextBox textBox_GPS_Lon; - private Label label2; - private TextBox textBox_GPS_Lat; - private NumericUpDown numericUpDown_GPS_Freq; - private Label label6; - private Label label_GPS_Frequency; - private Label label4; private GroupBox groupBox_Barometer; private NumericUpDown numericUpDown_Bar_Freq; private Label label5; private Label label7; private Label label9; - private NumericUpDown numericUpDown_Bar_Accur; + private NumericUpDown numericUpDown_Bar_Noise; private Label label8; - private Label label10; - private NumericUpDown textBox_GPS_Accur; - private Label label11; - private GroupBox groupBox1; + private GroupBox groupBox_OF; private Label label12; - private NumericUpDown numericUpDown_OF_Accur; + private NumericUpDown numericUpDown_OF_Noise; private Label label13; private NumericUpDown numericUpDown_OF_Freq; private Label label14; private Label label15; - private CheckBox checkBox_GPS_Enable; + private CheckBox checkBox_Pos_Enable; private Label label17; private NumericUpDown numericUpDown1; private Label label16; private CheckBox checkBox_OF_Enable; private CheckBox checkBox_Bar_Enable; + private Label label19; + private TextBox textBox_Bar_Pressure; + private Label label18; + private Panel panel_Menu_Model; + private GroupBox groupBox_Mag; + private NumericUpDown numericUpDown_Mag_Freq; + private Label label22; + private GroupBox groupBox_Gyr; + private NumericUpDown numericUpDown_Gyr_Freq; + private Label label21; + private GroupBox groupBox_Acc; + private NumericUpDown numericUpDown_Acc_Freq; + private Label label20; + private Label label27; + private NumericUpDown numericUpDown_Mag_Noise; + private Label label28; + private Label label25; + private NumericUpDown numericUpDown_Gyr_Noise; + private Label label26; + private Label label24; + private NumericUpDown numericUpDown_Acc_Noise; + private Label label23; + private Label label30; + private NumericUpDown numericUpDown_Bar_Laten; + private Label label29; + private NumericUpDown numericUpDown_Acc_Scale_Left; + private NumericUpDown numericUpDown_Acc_Scale_Rigth; + private Label label32; + private Label label31; + private Label label33; + private NumericUpDown numericUpDown_Gyr_Shift_Z; + private NumericUpDown numericUpDown_Gyr_Shift_Y; + private NumericUpDown numericUpDown_Gyr_Shift_X; + private Label label34; + private Label label36; + private Label label35; + private NumericUpDown numericUpDown7; + private Label label37; + private Label label41; + private Label label40; + private Label label39; + private NumericUpDown numericUpDown8; + private Label label38; + private GroupBox groupBox1; + private CheckBox checkBox_Range_Enable; + private NumericUpDown numericUpDown_Range_Max; + private Label label42; + private Label label43; + private Label label44; + private NumericUpDown numericUpDown_Range_Noise; + private Label label45; + private NumericUpDown numericUpDown_Range_Freq; + private Label label46; + private Label label47; + private Label label2; + private NumericUpDown numericUpDown_Pos_Laten; + private Label label4; + private Label label6; + private NumericUpDown numericUpDown_Pos_Noise; + private Label label10; + private NumericUpDown numericUpDown_Pos_Freq; + private Label label11; + private Label label48; + private Label label51; + private NumericUpDown numericUpDown_Gyr_Laten; + private Label label52; + private Label label49; + private NumericUpDown numericUpDown_Acc_Laten; + private Label label50; + private Label label53; + private NumericUpDown numericUpDown17; + private Label label54; + private Label label55; + private NumericUpDown numericUpDown_Range_Laten; + private Label label56; + private GroupBox groupBox2; + private CheckBox checkBox_Mode_Real; } } diff --git a/DroneSimulator/FormMain.cs b/DroneSimulator/FormMain.cs index 469e08b..4eab543 100644 --- a/DroneSimulator/FormMain.cs +++ b/DroneSimulator/FormMain.cs @@ -1,4 +1,4 @@ -using System.Text; +using System.Text; using System.Numerics; using System.Windows.Forms; using static System.Net.Mime.MediaTypeNames; @@ -22,6 +22,13 @@ namespace DroneSimulator public Form_Main() { InitializeComponent(); + + RealMode.RealSimulation = checkBox_Mode_Real.Checked; + numericUpDown_Acc_Update(null, null); + numericUpDown_Gyr_Update(null, null); + numericUpDown_Pos_Update(null, null); + numericUpDown_Bar_Update(null, null); + numericUpDown_Range_Update(null, null); } private void ClientConnectionCallback(object o) @@ -75,7 +82,7 @@ namespace DroneSimulator List? send = drone.DataStream(data.Buffer, data.Size); if (send == null) return; - try + try { foreach (byte[]? b in send) { @@ -204,5 +211,65 @@ namespace DroneSimulator } } } + + private void numericUpDown_Bar_Update(object sender, EventArgs e) + { + try { RealMode.Barometer.Pressure = uint.Parse(textBox_Bar_Pressure.Text); } + catch + { + RealMode.Barometer.Pressure = 102258; + MessageBox.Show("Pressure invalid format", "Barometer error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + + RealMode.Barometer.Freq = (uint)numericUpDown_Bar_Freq.Value; + RealMode.Barometer.Noise = (float)numericUpDown_Bar_Noise.Value; + RealMode.Barometer.Lateness = (float)numericUpDown_Bar_Laten.Value; + RealMode.Barometer.Enable = checkBox_Bar_Enable.Checked; + } + + private void checkBox_Mode_Real_CheckedChanged(object sender, EventArgs e) + { + RealMode.RealSimulation = checkBox_Mode_Real.Checked; + } + + private void numericUpDown_Acc_Update(object sender, EventArgs e) + { + RealMode.Accelerometer.Freq = (uint)numericUpDown_Acc_Freq.Value; + RealMode.Accelerometer.Noise = (float)numericUpDown_Acc_Noise.Value; + RealMode.Accelerometer.Lateness = (float)numericUpDown_Acc_Laten.Value; + + RealMode.Accelerometer.ScaleLeft = (float)numericUpDown_Acc_Scale_Left.Value; + RealMode.Accelerometer.ScaleRight = (float)numericUpDown_Acc_Scale_Rigth.Value; + } + + private void numericUpDown_Gyr_Update(object sender, EventArgs e) + { + RealMode.Gyroscope.Freq = (uint)numericUpDown_Gyr_Freq.Value; + RealMode.Gyroscope.Noise = (float)numericUpDown_Gyr_Noise.Value; + RealMode.Gyroscope.Lateness = (float)numericUpDown_Gyr_Laten.Value; + + RealMode.Gyroscope.Shift.X = (float)numericUpDown_Gyr_Shift_X.Value; + RealMode.Gyroscope.Shift.Y = (float)numericUpDown_Gyr_Shift_Y.Value; + RealMode.Gyroscope.Shift.Z = (float)numericUpDown_Gyr_Shift_Z.Value; + } + + private void numericUpDown_Pos_Update(object sender, EventArgs e) + { + RealMode.Position.Freq = (uint)numericUpDown_Pos_Freq.Value; + RealMode.Position.Noise = (float)numericUpDown_Pos_Noise.Value; + RealMode.Position.Lateness = (float)numericUpDown_Pos_Laten.Value; + RealMode.Position.Enable = checkBox_Pos_Enable.Checked; + } + + private void numericUpDown_Range_Update(object sender, EventArgs e) + { + RealMode.Range.Freq = (uint)numericUpDown_Range_Freq.Value; + RealMode.Range.Noise = (float)numericUpDown_Range_Noise.Value; + RealMode.Range.Lateness = (float)numericUpDown_Range_Laten.Value; + RealMode.Range.Enable = checkBox_Range_Enable.Checked; + + RealMode.Range.MaxHeight = (float)numericUpDown_Range_Max.Value; + } } } diff --git a/DroneSimulator/RealMode.cs b/DroneSimulator/RealMode.cs new file mode 100644 index 0000000..342e33f --- /dev/null +++ b/DroneSimulator/RealMode.cs @@ -0,0 +1,333 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Numerics; +using System.Reflection; + +namespace DroneSimulator +{ + internal class RealMode + { + public static bool RealSimulation; + + internal class Accelerometer + { + public static uint Freq; + public static float Noise; + public static float ScaleLeft; + public static float ScaleRight; + public static float Lateness; + + private uint last = 0; + + private Random rand = new Random(); + + private const int count = 1000; + private Vector3[] laten = new Vector3[count]; + private uint index = 0; + + public uint timer = 0; + public Vector3 result; + + public void Update(Vector3 value, uint time) + { + if (!RealSimulation) + { + result = value; + timer = time; + return; + } + + float scale = (ScaleRight - ScaleLeft) / 2; + float shift = scale + ScaleLeft; + + value.X = (value.X * scale) + shift; + value.Y = (value.Y * scale) + shift; + value.Z = (value.Z * scale) + shift; + + int noise = (int)(Noise * 1000); + value.X += ((float)rand.Next(-noise, noise)) / 1000; + value.Y += ((float)rand.Next(-noise, noise)) / 1000; + value.Z += ((float)rand.Next(-noise, noise)) / 1000; + + uint clock = (uint)(Lateness * 1000); + + uint tick = time - last; + last = time; + while (tick != 0) + { + tick--; + laten[index++] = value; + if (index >= clock) index = 0; + } + + value = laten[index]; + + uint freq = 1000 / Freq; + + if (timer + freq < time) + { + result = value; + timer = time; + } + } + } + + internal class Gyroscope + { + public static uint Freq; + public static float Noise; + public static Vector3 Shift; + public static float Lateness; + + private uint last = 0; + + private Random rand = new Random(); + + private const int count = 1000; + private Vector3[] laten = new Vector3[count]; + private uint index = 0; + + public uint timer = 0; + public Vector3 result; + + public void Update(Vector3 value, uint time) + { + if (!RealSimulation) + { + result = value; + timer = time; + return; + } + + value.X += Shift.X; + value.Y += Shift.Y; + value.Z += Shift.Z; + + int noise = (int)(Noise * 1000); + value.X += ((float)rand.Next(-noise, noise)) / 1000; + value.Y += ((float)rand.Next(-noise, noise)) / 1000; + value.Z += ((float)rand.Next(-noise, noise)) / 1000; + + uint clock = (uint)(Lateness * 1000); + + uint tick = time - last; + last = time; + while (tick != 0) + { + tick--; + laten[index++] = value; + if (index >= clock) index = 0; + } + + value = laten[index]; + + uint freq = 1000 / Freq; + + if (timer + freq < time) + { + result = value; + timer = time; + } + } + } + + internal class Magnetometer + { + + } + + internal class Position + { + public static bool Enable; + public static uint Freq; + public static float Noise; + public static float Lateness; + + private uint last = 0; + + private Random rand = new Random(); + + private const int count = 1000; + private Vector3[] laten = new Vector3[count]; + private uint index = 0; + + public uint timer = 0; + public Vector3 result; + + public void Update(Vector3 value, uint time) + { + if (!RealSimulation) + { + result = value; + timer = time; + return; + } + + if (!Enable) + { + result = Vector3.NaN; + return; + } + + int noise = (int)(Noise * 1000); + value.X += ((float)rand.Next(-noise, noise)) / 1000; + value.Y += ((float)rand.Next(-noise, noise)) / 1000; + value.Z += ((float)rand.Next(-noise, noise)) / 1000; + + uint clock = (uint)(Lateness * 1000); + + uint tick = time - last; + last = time; + while (tick != 0) + { + tick--; + laten[index++] = value; + if (index >= clock) index = 0; + } + + value = laten[index]; + + uint freq = 1000 / Freq; + + if (timer + freq < time) + { + result = value; + timer = time; + } + } + } + + internal class Barometer + { + public static bool Enable; + public static float Pressure; + public static uint Freq; + public static float Noise; + public static float Lateness; + + private uint last = 0; + + private Random rand = new Random(); + + private const int count = 1000; + private float[] laten = new float[count]; + private uint index = 0; + + public uint timer = 0; + public float result; + + public void Update(float value, uint time) + { + value = Pressure - value; + + if (!RealSimulation) + { + result = value; + timer = time; + return; + } + + if (!Enable) + { + result = float.NaN; + return; + } + + int noise = (int)(Noise * 1000); + value += ((float)rand.Next(-noise, noise)) / 1000; + + uint clock = (uint)(Lateness * 1000); + + uint tick = time - last; + last = time; + while (tick != 0) + { + tick--; + laten[index++] = value; + if (index >= clock) index = 0; + } + + value = laten[index]; + + uint freq = 1000 / Freq; + + if (timer + freq < time) + { + result = value; + timer = time; + } + } + } + + internal class OpticalFlow + { + + } + + internal class Range + { + public static bool Enable; + public static float MaxHeight; + public static uint Freq; + public static float Noise; + public static float Lateness; + + private uint last = 0; + + private Random rand = new Random(); + + private const int count = 1000; + private float[] laten = new float[count]; + private uint index = 0; + + public uint timer = 0; + public float result; + + public void Update(float value, uint time) + { + if (!RealSimulation) + { + result = value; + timer = time; + return; + } + + if (!Enable) + { + result = float.NaN; + return; + } + + if (value > MaxHeight) value = -1; + else + { + int noise = (int)(Noise * 1000); + value += ((float)rand.Next(-noise, noise)) / 1000; + } + + uint clock = (uint)(Lateness * 1000); + + uint tick = time - last; + last = time; + while (tick != 0) + { + tick--; + laten[index++] = value; + if (index >= clock) index = 0; + } + + value = laten[index]; + + uint freq = 1000 / Freq; + + if (timer + freq < time) + { + result = value; + timer = time; + } + } + } + } +}