diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a4574de --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.vs/ +obj/ +bin/ +x64/ \ No newline at end of file diff --git a/DroneClient/.vs/DroneClient/DesignTimeBuild/.dtbcache.v2 b/DroneClient/.vs/DroneClient/DesignTimeBuild/.dtbcache.v2 deleted file mode 100644 index 4e73ff1..0000000 Binary files a/DroneClient/.vs/DroneClient/DesignTimeBuild/.dtbcache.v2 and /dev/null differ diff --git a/DroneClient/.vs/DroneClient/FileContentIndex/4bebe7c4-f6da-4c88-adc5-b3c5f28d11f4.vsidx b/DroneClient/.vs/DroneClient/FileContentIndex/4bebe7c4-f6da-4c88-adc5-b3c5f28d11f4.vsidx deleted file mode 100644 index 764d593..0000000 Binary files a/DroneClient/.vs/DroneClient/FileContentIndex/4bebe7c4-f6da-4c88-adc5-b3c5f28d11f4.vsidx and /dev/null differ diff --git a/DroneClient/.vs/DroneClient/v17/.futdcache.v2 b/DroneClient/.vs/DroneClient/v17/.futdcache.v2 deleted file mode 100644 index c88ba37..0000000 Binary files a/DroneClient/.vs/DroneClient/v17/.futdcache.v2 and /dev/null differ diff --git a/DroneClient/.vs/DroneClient/v17/.suo b/DroneClient/.vs/DroneClient/v17/.suo deleted file mode 100644 index 870cbf3..0000000 Binary files a/DroneClient/.vs/DroneClient/v17/.suo and /dev/null differ diff --git a/DroneClient/.vs/DroneClient/v17/DocumentLayout.backup.json b/DroneClient/.vs/DroneClient/v17/DocumentLayout.backup.json deleted file mode 100644 index 8228d5d..0000000 --- a/DroneClient/.vs/DroneClient/v17/DocumentLayout.backup.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "Version": 1, - "WorkspaceRootPath": "D:\\CPL\\Simulator\\DroneClient\\DroneClient\\", - "Documents": [], - "DocumentGroupContainers": [ - { - "Orientation": 0, - "VerticalTabListWidth": 256, - "DocumentGroups": [] - } - ] -} \ No newline at end of file diff --git a/DroneClient/.vs/DroneClient/v17/DocumentLayout.json b/DroneClient/.vs/DroneClient/v17/DocumentLayout.json deleted file mode 100644 index f629855..0000000 --- a/DroneClient/.vs/DroneClient/v17/DocumentLayout.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "Version": 1, - "WorkspaceRootPath": "D:\\CPL\\Simulator\\DroneClient\\DroneClient\\", - "Documents": [ - { - "AbsoluteMoniker": "D:0:0:{B66DBB0A-CCDD-4711-ADB0-5AA11AC1760D}|DroneClient.csproj|d:\\cpl\\simulator\\droneclient\\droneclient\\formmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{B66DBB0A-CCDD-4711-ADB0-5AA11AC1760D}|DroneClient.csproj|solutionrelative:formmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{B66DBB0A-CCDD-4711-ADB0-5AA11AC1760D}|DroneClient.csproj|d:\\cpl\\simulator\\droneclient\\droneclient\\formmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", - "RelativeMoniker": "D:0:0:{B66DBB0A-CCDD-4711-ADB0-5AA11AC1760D}|DroneClient.csproj|solutionrelative:formmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" - } - ], - "DocumentGroupContainers": [ - { - "Orientation": 0, - "VerticalTabListWidth": 256, - "DocumentGroups": [ - { - "DockedWidth": 200, - "SelectedChildIndex": 0, - "Children": [ - { - "$type": "Document", - "DocumentIndex": 0, - "Title": "FormMain.cs", - "DocumentMoniker": "D:\\CPL\\Simulator\\DroneClient\\DroneClient\\FormMain.cs", - "RelativeDocumentMoniker": "FormMain.cs", - "ToolTip": "D:\\CPL\\Simulator\\DroneClient\\DroneClient\\FormMain.cs", - "RelativeToolTip": "FormMain.cs", - "ViewState": "AgIAACEAAAAAAAAAAAAYwCYAAAAOAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-03-27T13:11:11.045Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 1, - "Title": "FormMain.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", - "DocumentMoniker": "D:\\CPL\\Simulator\\DroneClient\\DroneClient\\FormMain.cs", - "RelativeDocumentMoniker": "FormMain.cs", - "ToolTip": "D:\\CPL\\Simulator\\DroneClient\\DroneClient\\FormMain.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", - "RelativeToolTip": "FormMain.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-03-27T13:11:01.471Z", - "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/DroneClient/.vs/ProjectEvaluation/droneclient.metadata.v9.bin b/DroneClient/.vs/ProjectEvaluation/droneclient.metadata.v9.bin deleted file mode 100644 index 7de7e09..0000000 Binary files a/DroneClient/.vs/ProjectEvaluation/droneclient.metadata.v9.bin and /dev/null differ diff --git a/DroneClient/.vs/ProjectEvaluation/droneclient.projects.v9.bin b/DroneClient/.vs/ProjectEvaluation/droneclient.projects.v9.bin deleted file mode 100644 index d77a715..0000000 Binary files a/DroneClient/.vs/ProjectEvaluation/droneclient.projects.v9.bin and /dev/null differ diff --git a/DroneClient/.vs/ProjectEvaluation/droneclient.strings.v9.bin b/DroneClient/.vs/ProjectEvaluation/droneclient.strings.v9.bin deleted file mode 100644 index 110e35e..0000000 Binary files a/DroneClient/.vs/ProjectEvaluation/droneclient.strings.v9.bin and /dev/null differ diff --git a/DroneClient/Drone.cs b/DroneClient/Drone.cs index a7619d3..b553e8b 100644 --- a/DroneClient/Drone.cs +++ b/DroneClient/Drone.cs @@ -1,26 +1,21 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Diagnostics.Metrics; +using System.Drawing; using System.Runtime.InteropServices; -using System.Text; -using System.Threading.Tasks; namespace DroneClient { internal class Drone { - public struct DataOut - { - public float AccX, AccY, AccZ; - public float GyrX, GyrY, GyrZ; - public float PosX, PosY; - public float LaserRange; - } - public struct DataIn - { - public float MotorUL, MotorUR, MotorDL, MotorDR; - } + public float AccX, AccY, AccZ; + public float GyrX, GyrY, GyrZ; + public uint TimeAcc, TimeGyr; + + public float PosX, PosY; + public float LaserRange; + public uint TimeRange; + + public float MotorUL, MotorUR, MotorDL, MotorDR; public static byte[] getBytes(object data) { @@ -63,5 +58,241 @@ namespace DroneClient return mem; } + private byte[] SendDataMotor4() + { + DroneData.DataMotor4 mot4 = new DroneData.DataMotor4(); + + mot4.Head.Size = Marshal.SizeOf(typeof(DroneData.DataMotor4)); + mot4.Head.Mode = DroneData.DataMode.Response; + mot4.Head.Type = DroneData.DataType.DataMotor4; + + mot4.UL = MotorUL; + mot4.UR = MotorUR; + mot4.DL = MotorDL; + mot4.DR = MotorDR; + + return getBytes(mot4); + } + + private byte[]? RecvDataAcc(byte[] data) + { + DroneData.DataAcc imu = (DroneData.DataAcc)fromBytes(data, typeof(DroneData.DataAcc)); + + AccX = imu.Acc.X; AccY = imu.Acc.Y; AccZ = imu.Acc.Z; + + TimeAcc= imu.Time; + + return new byte[0]; + } + + private byte[]? RecvDataGyr(byte[] data) + { + DroneData.DataGyr imu = (DroneData.DataGyr)fromBytes(data, typeof(DroneData.DataGyr)); + + GyrX = imu.Gyr.X; GyrY = imu.Gyr.Y; GyrZ = imu.Gyr.Z; + + TimeGyr = imu.Time; + + return new byte[0]; + } + + private byte[]? RecvDataRange(byte[] data) + { + DroneData.DataRange pos = (DroneData.DataRange)fromBytes(data, typeof(DroneData.DataRange)); + + LaserRange = pos.LiDAR; + + TimeRange = pos.Time; + + return new byte[0]; + } + + private byte[]? RecvDataLocal(byte[] data) + { + DroneData.DataLocal pos = (DroneData.DataLocal)fromBytes(data, typeof(DroneData.DataLocal)); + + PosX = pos.Local.X; PosY = pos.Local.Y; + + return new byte[0]; + } + + private byte[]? ClientRequestResponse(DroneData.DataHead head, byte[] body) + { + byte[] zero = new byte[0]; + + switch (head.Type) + { + case DroneData.DataType.DataAcc: + { + if (head.Mode == DroneData.DataMode.Request) + { + // Запрос данных + // ... // + // + return zero; + } + else + { + // Пришли данные + return RecvDataAcc(body); + } + } + + case DroneData.DataType.DataGyr: + { + if (head.Mode == DroneData.DataMode.Request) + { + // Запрос данных + // ... // + // + return zero; + } + else + { + // Пришли данные + return RecvDataGyr(body); + } + } + + case DroneData.DataType.DataRange: + { + if (head.Mode == DroneData.DataMode.Request) + { + // Запрос данных + // ... // + // + return zero; + } + else + { + // Пришли данные + return RecvDataRange(body); + } + } + + case DroneData.DataType.DataLocal: + { + if (head.Mode == DroneData.DataMode.Request) + { + // Запрос данных + // ... // + // + return zero; + } + else + { + // Пришли данные + return RecvDataLocal(body); + } + } + + case DroneData.DataType.DataMotor4: + { + if (head.Mode == DroneData.DataMode.Request) + { + // Запрос данных + return SendDataMotor4(); + } + else + { + // Пришли данные + // ... // + // + return zero; + } + } + } + + return zero; + } + + private const int DroneStreamCount = 512; + private byte[] DroneStreamData = new byte[DroneStreamCount]; + private int DroneStreamIndex = 0; + private DroneData.DataHead DroneStreamHead = new DroneData.DataHead() { Mode = DroneData.DataMode.None, Size = 0, Type = DroneData.DataType.None }; + + public List? DataStream(byte[]? data, int size) + { + List ret = new List(); + + if (data == null) return ret; // Последовательность не сформирована, ждать данных + + if (size + DroneStreamIndex > DroneStreamCount) return null; // Ошибка переполнения, поток сломан (конец) + + Array.Copy(data, 0, DroneStreamData, DroneStreamIndex, size); + DroneStreamIndex += size; + + while (true) + { + if (DroneStreamHead.Size == 0) // Заголовок ещё не получен + { + if (DroneStreamIndex < DroneData.DataHead.StrLen) return ret; // Нечего слать + DroneStreamHead = (DroneData.DataHead)fromBytes(DroneStreamData, typeof(DroneData.DataHead)); + } + + if (DroneStreamHead.Size > DroneStreamIndex) break; // Пакет ещё не полный + + byte[] body = new byte[DroneStreamHead.Size]; + + Array.Copy(DroneStreamData, 0, body, 0, DroneStreamHead.Size); + + int shift = DroneStreamHead.Size; + + DroneStreamIndex -= shift; + Array.Copy(DroneStreamData, shift, DroneStreamData, 0, DroneStreamIndex); // Сдвигаем массив влево, убрав использованные данные + + DroneStreamHead.Size = 0; // Отменяем прошлый заголовок + + ret.Add(ClientRequestResponse(DroneStreamHead, body)); + } + + return ret; + } + + public byte[] SendReqest() + { + DroneData.DataHead acc = new DroneData.DataHead(); + acc.Size = DroneData.DataHead.StrLen; + acc.Mode = DroneData.DataMode.Request; + acc.Type = DroneData.DataType.DataAcc; + + DroneData.DataHead gyr = new DroneData.DataHead(); + gyr.Size = DroneData.DataHead.StrLen; + gyr.Mode = DroneData.DataMode.Request; + gyr.Type = DroneData.DataType.DataGyr; + + DroneData.DataHead range = new DroneData.DataHead(); + range.Size = DroneData.DataHead.StrLen; + range.Mode = DroneData.DataMode.Request; + range.Type = DroneData.DataType.DataRange; + + DroneData.DataHead local = new DroneData.DataHead(); + local.Size = DroneData.DataHead.StrLen; + local.Mode = DroneData.DataMode.Request; + local.Type = DroneData.DataType.DataLocal; + + List list = new List(); + + list.Add(getBytes(acc)); + list.Add(getBytes(gyr)); + list.Add(getBytes(range)); + list.Add(getBytes(local)); + list.Add(SendDataMotor4()); + + int count = 0; + + foreach (byte[] d in list) count += d.Length; + + byte[] send = new byte[count]; + + count = 0; + foreach (byte[] d in list) + { + d.CopyTo(send, count); + count += d.Length; + } + + return send; + } } } diff --git a/DroneClient/DroneData.cs b/DroneClient/DroneData.cs new file mode 100644 index 0000000..b713c0e --- /dev/null +++ b/DroneClient/DroneData.cs @@ -0,0 +1,100 @@ +using System.Runtime.InteropServices; + +namespace DroneData +{ + public enum DataMode : ushort + { + None = 0, Response = 1, Request = 2 + }; + + public enum DataType : ushort + { + None = 0, Head = 1, + + // Output + DataAcc = 1001, DataGyr = 1002, DataMag = 1003, DataRange = 1004, DataLocal = 1005, + + // Input + DataMotor4 = 2001, DataMotor6 = 2002 + }; + + public struct DataHead + { + public int Size; + + public DataMode Mode; + public DataType Type; + + public uint Time; // + + static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataHead)); + } + + public struct XYZ { public float X, Y, Z; } + + public struct DataAcc + { + public DataHead Head; + public XYZ Acc; + + public uint Time; // + + static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataAcc)); + } + + public struct DataGyr + { + public DataHead Head; + public XYZ Gyr; + + public uint Time; // + + static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataGyr)); + } + + public struct DataMag + { + public DataHead Head; + public XYZ Mag; + + 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 uint Time; // + + static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataRange)); + } + + public struct DataMotor4 + { + public DataHead Head; + public float UL, UR, DL, DR; + + static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataMotor4)); + } + + public struct DataMotor6 + { + public DataHead Head; + public float UL, UR, LL, RR, DL, DR; + + static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataMotor6)); + } +} \ No newline at end of file diff --git a/DroneClient/FormMain.Designer.cs b/DroneClient/FormMain.Designer.cs index f7eb90a..561daf9 100644 --- a/DroneClient/FormMain.Designer.cs +++ b/DroneClient/FormMain.Designer.cs @@ -65,6 +65,9 @@ label_Pow = new Label(); button_ML = new Button(); button_MR = new Button(); + label_time_acc = new Label(); + label_time_range = new Label(); + label_time_gyr = new Label(); groupBox1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)numericUpDown_Server_Port).BeginInit(); groupBox2.SuspendLayout(); @@ -156,6 +159,7 @@ // // groupBox2 // + groupBox2.Controls.Add(label_time_acc); groupBox2.Controls.Add(label_Acc_Z); groupBox2.Controls.Add(label7); groupBox2.Controls.Add(label_Acc_Y); @@ -164,7 +168,7 @@ groupBox2.Controls.Add(label1); groupBox2.Location = new Point(6, 86); groupBox2.Name = "groupBox2"; - groupBox2.Size = new Size(78, 100); + groupBox2.Size = new Size(78, 118); groupBox2.TabIndex = 5; groupBox2.TabStop = false; groupBox2.Text = "Acc"; @@ -216,6 +220,7 @@ // // groupBox3 // + groupBox3.Controls.Add(label_time_gyr); groupBox3.Controls.Add(label_Gyr_Z); groupBox3.Controls.Add(label9); groupBox3.Controls.Add(label_Gyr_Y); @@ -224,7 +229,7 @@ groupBox3.Controls.Add(label13); groupBox3.Location = new Point(95, 86); groupBox3.Name = "groupBox3"; - groupBox3.Size = new Size(78, 100); + groupBox3.Size = new Size(78, 118); groupBox3.TabIndex = 6; groupBox3.TabStop = false; groupBox3.Text = "Gyr"; @@ -285,6 +290,7 @@ // // groupBox4 // + groupBox4.Controls.Add(label_time_range); groupBox4.Controls.Add(label_Pos_L); groupBox4.Controls.Add(label6); groupBox4.Controls.Add(label_Pos_Y); @@ -293,7 +299,7 @@ groupBox4.Controls.Add(label14); groupBox4.Location = new Point(188, 86); groupBox4.Name = "groupBox4"; - groupBox4.Size = new Size(78, 100); + groupBox4.Size = new Size(78, 118); groupBox4.TabIndex = 7; groupBox4.TabStop = false; groupBox4.Text = "Pos"; @@ -437,6 +443,33 @@ button_MR.MouseDown += button_UU_MouseDown; button_MR.MouseUp += button_UU_MouseUp; // + // label_time_acc + // + label_time_acc.AutoSize = true; + label_time_acc.Location = new Point(6, 100); + label_time_acc.Name = "label_time_acc"; + label_time_acc.Size = new Size(13, 15); + label_time_acc.TabIndex = 25; + label_time_acc.Text = "0"; + // + // label_time_range + // + label_time_range.AutoSize = true; + label_time_range.Location = new Point(6, 100); + label_time_range.Name = "label_time_range"; + label_time_range.Size = new Size(13, 15); + label_time_range.TabIndex = 27; + label_time_range.Text = "0"; + // + // label_time_gyr + // + label_time_gyr.AutoSize = true; + label_time_gyr.Location = new Point(3, 100); + label_time_gyr.Name = "label_time_gyr"; + label_time_gyr.Size = new Size(13, 15); + label_time_gyr.TabIndex = 26; + label_time_gyr.Text = "0"; + // // Form_Main // AutoScaleDimensions = new SizeF(7F, 15F); @@ -509,5 +542,9 @@ private Label label_Pow; private Button button_ML; private Button button_MR; + private Label label4; + private Label label_time_acc; + private Label label_time_range; + private Label label_time_gyr; } } diff --git a/DroneClient/FormMain.cs b/DroneClient/FormMain.cs index d479e1a..70361f4 100644 --- a/DroneClient/FormMain.cs +++ b/DroneClient/FormMain.cs @@ -21,34 +21,37 @@ namespace DroneSimulator if (!data.Connect) { - Invoke((MethodInvoker)delegate + try { - button_Connect.Text = "Connect"; - button_Connect.BackColor = Color.Transparent; - MessageBox.Show("Connection closed"); - }); + Invoke((MethodInvoker)delegate + { + button_Connect.Text = "Connect"; + button_Connect.BackColor = Color.Transparent; + MessageBox.Show("Connection closed"); + }); + } + catch { } return; } - - byte[] send = Drone.getBytes(sendDrone); - - data.Server.Send(send); } - Drone.DataIn sendDrone; - - Drone.DataOut recvDrone; + Drone dataDrone = new Drone(); private void ReceiveCallback(object o) { ReceiveData data = (ReceiveData)o; - recvDrone = (Drone.DataOut)Drone.fromBytes(data.Buffer, typeof(Drone.DataOut)); + List? send = dataDrone.DataStream(data.Buffer, data.Size); - byte[] send = Drone.getBytes(sendDrone); - - try { data.Server.Send(send); } + if (send == null) return; + try + { + foreach (byte[]? b in send) + { + if (b != null) data.Server?.Send(b); + } + } catch { } } @@ -88,17 +91,25 @@ namespace DroneSimulator private void timer_Test_Tick(object sender, EventArgs e) { - label_Acc_X.Text = recvDrone.AccX.ToString(); - label_Acc_Y.Text = recvDrone.AccY.ToString(); - label_Acc_Z.Text = recvDrone.AccZ.ToString(); + label_Acc_X.Text = dataDrone.AccX.ToString(); + label_Acc_Y.Text = dataDrone.AccY.ToString(); + label_Acc_Z.Text = dataDrone.AccZ.ToString(); - label_Gyr_X.Text = recvDrone.GyrX.ToString(); - label_Gyr_Y.Text = recvDrone.GyrY.ToString(); - label_Gyr_Z.Text = recvDrone.GyrZ.ToString(); + label_time_acc.Text = dataDrone.TimeAcc.ToString(); - label_Pos_X.Text = recvDrone.PosX.ToString(); - label_Pos_Y.Text = recvDrone.PosY.ToString(); - label_Pos_L.Text = recvDrone.LaserRange.ToString(); + label_Gyr_X.Text = dataDrone.GyrX.ToString(); + label_Gyr_Y.Text = dataDrone.GyrY.ToString(); + label_Gyr_Z.Text = dataDrone.GyrZ.ToString(); + + label_time_gyr.Text = dataDrone.TimeGyr.ToString(); + + label_Pos_X.Text = dataDrone.PosX.ToString(); + label_Pos_Y.Text = dataDrone.PosY.ToString(); + label_Pos_L.Text = dataDrone.LaserRange.ToString(); + + label_time_range.Text = dataDrone.TimeRange.ToString(); + + netClient.SendData(dataDrone.SendReqest()); } private void trackBar_Power_Scroll(object sender, EventArgs e) @@ -107,42 +118,44 @@ namespace DroneSimulator label_Pow.Text = pow.ToString(); - sendDrone.MotorUL = sendDrone.MotorUR = sendDrone.MotorDL = sendDrone.MotorDR = pow; + dataDrone.MotorUL = dataDrone.MotorUR = dataDrone.MotorDL = dataDrone.MotorDR = pow; } private void button_UU_MouseDown(object sender, MouseEventArgs e) { + const float pow = 0.1f; + if (sender == button_UU) { - sendDrone.MotorUL -= 0.1f; sendDrone.MotorUR -= 0.1f; - sendDrone.MotorDL += 0.1f; sendDrone.MotorDR += 0.1f; + dataDrone.MotorUL -= pow; dataDrone.MotorUR -= pow; + dataDrone.MotorDL += pow; dataDrone.MotorDR += pow; } if (sender == button_DD) { - sendDrone.MotorUL += 0.1f; sendDrone.MotorUR += 0.1f; - sendDrone.MotorDL -= 0.1f; sendDrone.MotorDR -= 0.1f; + dataDrone.MotorUL += pow; dataDrone.MotorUR += pow; + dataDrone.MotorDL -= pow; dataDrone.MotorDR -= pow; } if (sender == button_LL) { - sendDrone.MotorUL -= 0.1f; sendDrone.MotorUR += 0.1f; - sendDrone.MotorDL -= 0.1f; sendDrone.MotorDR += 0.1f; + dataDrone.MotorUL -= pow; dataDrone.MotorUR += pow; + dataDrone.MotorDL -= pow; dataDrone.MotorDR += pow; } if (sender == button_RR) { - sendDrone.MotorUL += 0.1f; sendDrone.MotorUR -= 0.1f; - sendDrone.MotorDL += 0.1f; sendDrone.MotorDR -= 0.1f; + dataDrone.MotorUL += pow; dataDrone.MotorUR -= pow; + dataDrone.MotorDL += pow; dataDrone.MotorDR -= pow; } if (sender == button_ML) { - sendDrone.MotorUL -= 0.1f; sendDrone.MotorUR += 0.1f; - sendDrone.MotorDL += 0.1f; sendDrone.MotorDR -= 0.1f; + dataDrone.MotorUL -= pow; dataDrone.MotorUR += pow; + dataDrone.MotorDL += pow; dataDrone.MotorDR -= pow; } if (sender == button_MR) { - sendDrone.MotorUL += 0.1f; sendDrone.MotorUR -= 0.1f; - sendDrone.MotorDL -= 0.1f; sendDrone.MotorDR += 0.1f; + dataDrone.MotorUL += pow; dataDrone.MotorUR -= pow; + dataDrone.MotorDL -= pow; dataDrone.MotorDR += pow; } } diff --git a/DroneClient/NetClient.cs b/DroneClient/NetClient.cs index 603c61f..12aa8cb 100644 --- a/DroneClient/NetClient.cs +++ b/DroneClient/NetClient.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Net.Sockets; +using System.Net.Sockets; using System.Net; namespace DroneSimulator @@ -31,6 +26,7 @@ namespace DroneSimulator public byte[] buffer = new byte[size]; } + private bool Connected = false; private Socket? ServerSocket = null; private ServerData DataServer = new ServerData(); @@ -43,10 +39,9 @@ namespace DroneSimulator public ClientState Connect(string Addr, int Port, ClientCallback Connection, ClientCallback Receive) { - if (ServerSocket != null) + if (Connected) { - ServerSocket.Close(); - ServerSocket = null; + Close(); return ClientState.Stop; } @@ -56,24 +51,26 @@ namespace DroneSimulator IPEndPoint ep = new IPEndPoint(IPAddress.Parse(Addr), Port); ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - try - { - ServerSocket.Connect(ep); - } - catch { ServerSocket.Close(); ServerSocket = null; return ClientState.Error; } + try { ServerSocket.Connect(ep); } + catch { ServerSocket.Close(); return ClientState.Error; } + + Connected = true; ConnectionCallback(new ConnectData { Connect = true, Server = ServerSocket }); ReceiveData receiveData = new ReceiveData { Buffer = DataServer.buffer, Size = ServerData.size, Server = ServerSocket }; - ServerSocket.BeginReceive(DataServer.buffer, 0, ServerData.size, 0, new AsyncCallback(ReadCallback), receiveData); + + try { ServerSocket.BeginReceive(DataServer.buffer, 0, ServerData.size, 0, new AsyncCallback(ReadCallback), receiveData); } + catch { } return ClientState.Connected; } public void Close() { + try { ServerSocket?.Shutdown(SocketShutdown.Both); } catch { } ServerSocket?.Close(); - ServerSocket = null; + Connected = false; } public void ReadCallback(IAsyncResult ar) @@ -82,23 +79,28 @@ namespace DroneSimulator if (cd == null) return; int bytes = 0; - try { bytes = ServerSocket.EndReceive(ar); } - catch { } + try { bytes = ServerSocket.EndReceive(ar); } catch { } if (bytes == 0) { ServerSocket?.Close(); - if (ServerSocket != null) ConnectionCallback(new ConnectData { Connect = false, Server = null }); + Connected = false; - ServerSocket = null; + if (ServerSocket != null) ConnectionCallback(new ConnectData { Connect = false, Server = null }); return; } ReceiveCallback(new ReceiveData { Buffer = cd.Buffer, Size = bytes, Server = ServerSocket }); - ServerSocket?.BeginReceive(cd.Buffer, 0, ServerData.size, 0, new AsyncCallback(ReadCallback), cd); + try { ServerSocket?.BeginReceive(cd.Buffer, 0, ServerData.size, 0, new AsyncCallback(ReadCallback), cd); } + catch { } + } + + public void SendData(byte[] data) + { + try { ServerSocket?.Send(data); } catch { } } } } diff --git a/DroneClient/README.md b/DroneClient/README.md new file mode 100644 index 0000000..facae82 --- /dev/null +++ b/DroneClient/README.md @@ -0,0 +1,3 @@ +# Client + +Образец клиента для подключения к симулятору. diff --git a/DroneClient/bin/Debug/net9.0-windows/DroneClient.deps.json b/DroneClient/bin/Debug/net9.0-windows/DroneClient.deps.json deleted file mode 100644 index 3db7b6c..0000000 --- a/DroneClient/bin/Debug/net9.0-windows/DroneClient.deps.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v9.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v9.0": { - "DroneClient/1.0.0": { - "runtime": { - "DroneClient.dll": {} - } - } - } - }, - "libraries": { - "DroneClient/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - } - } -} \ No newline at end of file diff --git a/DroneClient/bin/Debug/net9.0-windows/DroneClient.dll b/DroneClient/bin/Debug/net9.0-windows/DroneClient.dll deleted file mode 100644 index 4737dbf..0000000 Binary files a/DroneClient/bin/Debug/net9.0-windows/DroneClient.dll and /dev/null differ diff --git a/DroneClient/bin/Debug/net9.0-windows/DroneClient.exe b/DroneClient/bin/Debug/net9.0-windows/DroneClient.exe deleted file mode 100644 index 92d0918..0000000 Binary files a/DroneClient/bin/Debug/net9.0-windows/DroneClient.exe and /dev/null differ diff --git a/DroneClient/bin/Debug/net9.0-windows/DroneClient.pdb b/DroneClient/bin/Debug/net9.0-windows/DroneClient.pdb deleted file mode 100644 index fc70bf0..0000000 Binary files a/DroneClient/bin/Debug/net9.0-windows/DroneClient.pdb and /dev/null differ diff --git a/DroneClient/bin/Debug/net9.0-windows/DroneClient.runtimeconfig.json b/DroneClient/bin/Debug/net9.0-windows/DroneClient.runtimeconfig.json deleted file mode 100644 index 68ec4b9..0000000 --- a/DroneClient/bin/Debug/net9.0-windows/DroneClient.runtimeconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "net9.0", - "frameworks": [ - { - "name": "Microsoft.NETCore.App", - "version": "9.0.0" - }, - { - "name": "Microsoft.WindowsDesktop.App", - "version": "9.0.0" - } - ], - "configProperties": { - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false, - "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false - } - } -} \ No newline at end of file diff --git a/DroneClient/obj/Debug/net9.0-windows/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/DroneClient/obj/Debug/net9.0-windows/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs deleted file mode 100644 index feda5e9..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs +++ /dev/null @@ -1,4 +0,0 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneClient.AssemblyInfo.cs b/DroneClient/obj/Debug/net9.0-windows/DroneClient.AssemblyInfo.cs deleted file mode 100644 index a3fe7a8..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneClient.AssemblyInfo.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("DroneClient")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] -[assembly: System.Reflection.AssemblyProductAttribute("DroneClient")] -[assembly: System.Reflection.AssemblyTitleAttribute("DroneClient")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] -[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")] -[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")] - -// Создано классом WriteCodeFragment MSBuild. - diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneClient.AssemblyInfoInputs.cache b/DroneClient/obj/Debug/net9.0-windows/DroneClient.AssemblyInfoInputs.cache deleted file mode 100644 index 550a2a5..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneClient.AssemblyInfoInputs.cache +++ /dev/null @@ -1 +0,0 @@ -372de9fd6d36597e50cdb2250f48b9cb0d5e8e1a2d1e568b83e287afe9580301 diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneClient.GeneratedMSBuildEditorConfig.editorconfig b/DroneClient/obj/Debug/net9.0-windows/DroneClient.GeneratedMSBuildEditorConfig.editorconfig deleted file mode 100644 index 8652b6b..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneClient.GeneratedMSBuildEditorConfig.editorconfig +++ /dev/null @@ -1,22 +0,0 @@ -is_global = true -build_property.ApplicationManifest = -build_property.StartupObject = -build_property.ApplicationDefaultFont = -build_property.ApplicationHighDpiMode = -build_property.ApplicationUseCompatibleTextRendering = -build_property.ApplicationVisualStyles = -build_property.TargetFramework = net9.0-windows -build_property.TargetPlatformMinVersion = 7.0 -build_property.UsingMicrosoftNETSdkWeb = -build_property.ProjectTypeGuids = -build_property.InvariantGlobalization = -build_property.PlatformNeutralAssembly = -build_property.EnforceExtendedAnalyzerRules = -build_property._SupportedPlatformList = Linux,macOS,Windows -build_property.RootNamespace = DroneClient -build_property.ProjectDir = D:\CPL\Simulator\DroneClient\DroneClient\ -build_property.EnableComHosting = -build_property.EnableGeneratedComInterfaceComImportInterop = -build_property.CsWinRTUseWindowsUIXamlProjections = false -build_property.EffectiveAnalysisLevelStyle = 9.0 -build_property.EnableCodeStyleSeverity = diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneClient.GlobalUsings.g.cs b/DroneClient/obj/Debug/net9.0-windows/DroneClient.GlobalUsings.g.cs deleted file mode 100644 index 84bbb89..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneClient.GlobalUsings.g.cs +++ /dev/null @@ -1,10 +0,0 @@ -// -global using global::System; -global using global::System.Collections.Generic; -global using global::System.Drawing; -global using global::System.IO; -global using global::System.Linq; -global using global::System.Net.Http; -global using global::System.Threading; -global using global::System.Threading.Tasks; -global using global::System.Windows.Forms; diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneClient.assets.cache b/DroneClient/obj/Debug/net9.0-windows/DroneClient.assets.cache deleted file mode 100644 index 2d918c1..0000000 Binary files a/DroneClient/obj/Debug/net9.0-windows/DroneClient.assets.cache and /dev/null differ diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneClient.csproj.BuildWithSkipAnalyzers b/DroneClient/obj/Debug/net9.0-windows/DroneClient.csproj.BuildWithSkipAnalyzers deleted file mode 100644 index e69de29..0000000 diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneClient.csproj.CoreCompileInputs.cache b/DroneClient/obj/Debug/net9.0-windows/DroneClient.csproj.CoreCompileInputs.cache deleted file mode 100644 index a1dc96f..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneClient.csproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -01e86f1c7bc139724ab77bc57845e8da30f3f593b41b11317ce8867d8fb43c28 diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneClient.csproj.FileListAbsolute.txt b/DroneClient/obj/Debug/net9.0-windows/DroneClient.csproj.FileListAbsolute.txt deleted file mode 100644 index f8d2f18..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneClient.csproj.FileListAbsolute.txt +++ /dev/null @@ -1,32 +0,0 @@ -D:\Files\Main\Projects\Fly\DroneClient\obj\Debug\net9.0-windows\DroneSimulator.Form_Main.resources -D:\Files\Main\Projects\Fly\DroneClient\obj\Debug\net9.0-windows\DroneClient.csproj.GenerateResource.cache -D:\Files\Main\Projects\Fly\DroneClient\obj\Debug\net9.0-windows\DroneClient.GeneratedMSBuildEditorConfig.editorconfig -D:\Files\Main\Projects\Fly\DroneClient\obj\Debug\net9.0-windows\DroneClient.AssemblyInfoInputs.cache -D:\Files\Main\Projects\Fly\DroneClient\obj\Debug\net9.0-windows\DroneClient.AssemblyInfo.cs -D:\Files\Main\Projects\Fly\DroneClient\obj\Debug\net9.0-windows\DroneClient.csproj.CoreCompileInputs.cache -D:\Files\Main\Projects\Fly\DroneClient\bin\Debug\net9.0-windows\DroneClient.exe -D:\Files\Main\Projects\Fly\DroneClient\bin\Debug\net9.0-windows\DroneClient.deps.json -D:\Files\Main\Projects\Fly\DroneClient\bin\Debug\net9.0-windows\DroneClient.runtimeconfig.json -D:\Files\Main\Projects\Fly\DroneClient\bin\Debug\net9.0-windows\DroneClient.dll -D:\Files\Main\Projects\Fly\DroneClient\bin\Debug\net9.0-windows\DroneClient.pdb -D:\Files\Main\Projects\Fly\DroneClient\obj\Debug\net9.0-windows\DroneClient.dll -D:\Files\Main\Projects\Fly\DroneClient\obj\Debug\net9.0-windows\refint\DroneClient.dll -D:\Files\Main\Projects\Fly\DroneClient\obj\Debug\net9.0-windows\DroneClient.pdb -D:\Files\Main\Projects\Fly\DroneClient\obj\Debug\net9.0-windows\DroneClient.genruntimeconfig.cache -D:\Files\Main\Projects\Fly\DroneClient\obj\Debug\net9.0-windows\ref\DroneClient.dll -D:\CPL\Simulator\DroneClient\DroneClient\bin\Debug\net9.0-windows\DroneClient.exe -D:\CPL\Simulator\DroneClient\DroneClient\bin\Debug\net9.0-windows\DroneClient.deps.json -D:\CPL\Simulator\DroneClient\DroneClient\bin\Debug\net9.0-windows\DroneClient.runtimeconfig.json -D:\CPL\Simulator\DroneClient\DroneClient\bin\Debug\net9.0-windows\DroneClient.dll -D:\CPL\Simulator\DroneClient\DroneClient\bin\Debug\net9.0-windows\DroneClient.pdb -D:\CPL\Simulator\DroneClient\DroneClient\obj\Debug\net9.0-windows\DroneSimulator.Form_Main.resources -D:\CPL\Simulator\DroneClient\DroneClient\obj\Debug\net9.0-windows\DroneClient.csproj.GenerateResource.cache -D:\CPL\Simulator\DroneClient\DroneClient\obj\Debug\net9.0-windows\DroneClient.GeneratedMSBuildEditorConfig.editorconfig -D:\CPL\Simulator\DroneClient\DroneClient\obj\Debug\net9.0-windows\DroneClient.AssemblyInfoInputs.cache -D:\CPL\Simulator\DroneClient\DroneClient\obj\Debug\net9.0-windows\DroneClient.AssemblyInfo.cs -D:\CPL\Simulator\DroneClient\DroneClient\obj\Debug\net9.0-windows\DroneClient.csproj.CoreCompileInputs.cache -D:\CPL\Simulator\DroneClient\DroneClient\obj\Debug\net9.0-windows\DroneClient.dll -D:\CPL\Simulator\DroneClient\DroneClient\obj\Debug\net9.0-windows\refint\DroneClient.dll -D:\CPL\Simulator\DroneClient\DroneClient\obj\Debug\net9.0-windows\DroneClient.pdb -D:\CPL\Simulator\DroneClient\DroneClient\obj\Debug\net9.0-windows\DroneClient.genruntimeconfig.cache -D:\CPL\Simulator\DroneClient\DroneClient\obj\Debug\net9.0-windows\ref\DroneClient.dll diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneClient.csproj.GenerateResource.cache b/DroneClient/obj/Debug/net9.0-windows/DroneClient.csproj.GenerateResource.cache deleted file mode 100644 index c346dc5..0000000 Binary files a/DroneClient/obj/Debug/net9.0-windows/DroneClient.csproj.GenerateResource.cache and /dev/null differ diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneClient.designer.deps.json b/DroneClient/obj/Debug/net9.0-windows/DroneClient.designer.deps.json deleted file mode 100644 index 360ddb4..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneClient.designer.deps.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v9.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v9.0": {} - }, - "libraries": {} -} \ No newline at end of file diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneClient.designer.runtimeconfig.json b/DroneClient/obj/Debug/net9.0-windows/DroneClient.designer.runtimeconfig.json deleted file mode 100644 index 9657ac9..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneClient.designer.runtimeconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "net9.0", - "frameworks": [ - { - "name": "Microsoft.NETCore.App", - "version": "9.0.0" - }, - { - "name": "Microsoft.WindowsDesktop.App", - "version": "9.0.0" - } - ], - "additionalProbingPaths": [ - "C:\\Users\\Дана\\.dotnet\\store\\|arch|\\|tfm|", - "C:\\Users\\Дана\\.nuget\\packages", - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configProperties": { - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false, - "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false, - "Microsoft.NETCore.DotNetHostPolicy.SetAppPaths": true - } - } -} \ No newline at end of file diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneClient.dll b/DroneClient/obj/Debug/net9.0-windows/DroneClient.dll deleted file mode 100644 index 4737dbf..0000000 Binary files a/DroneClient/obj/Debug/net9.0-windows/DroneClient.dll and /dev/null differ diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneClient.genruntimeconfig.cache b/DroneClient/obj/Debug/net9.0-windows/DroneClient.genruntimeconfig.cache deleted file mode 100644 index 5b1f791..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneClient.genruntimeconfig.cache +++ /dev/null @@ -1 +0,0 @@ -812e26f7e032de5fb2d5301fec24f483552f39e0a38ac0c052cba2ffa3a73bbd diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneClient.pdb b/DroneClient/obj/Debug/net9.0-windows/DroneClient.pdb deleted file mode 100644 index fc70bf0..0000000 Binary files a/DroneClient/obj/Debug/net9.0-windows/DroneClient.pdb and /dev/null differ diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.AssemblyInfo.cs b/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.AssemblyInfo.cs deleted file mode 100644 index bc6c10b..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.AssemblyInfo.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("DroneSimulator")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] -[assembly: System.Reflection.AssemblyProductAttribute("DroneSimulator")] -[assembly: System.Reflection.AssemblyTitleAttribute("DroneSimulator")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] -[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")] -[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")] - -// Generated by the MSBuild WriteCodeFragment class. - diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.AssemblyInfoInputs.cache b/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.AssemblyInfoInputs.cache deleted file mode 100644 index ac31a13..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.AssemblyInfoInputs.cache +++ /dev/null @@ -1 +0,0 @@ -7f461f329c2aabe3c068a957f4f02cdcdb168c359c556cd0c46598798ec3c65d diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.Form_Main.resources b/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.Form_Main.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.Form_Main.resources and /dev/null differ diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.GeneratedMSBuildEditorConfig.editorconfig b/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.GeneratedMSBuildEditorConfig.editorconfig deleted file mode 100644 index 3009e19..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.GeneratedMSBuildEditorConfig.editorconfig +++ /dev/null @@ -1,22 +0,0 @@ -is_global = true -build_property.ApplicationManifest = -build_property.StartupObject = -build_property.ApplicationDefaultFont = -build_property.ApplicationHighDpiMode = -build_property.ApplicationUseCompatibleTextRendering = -build_property.ApplicationVisualStyles = -build_property.TargetFramework = net9.0-windows -build_property.TargetPlatformMinVersion = 7.0 -build_property.UsingMicrosoftNETSdkWeb = -build_property.ProjectTypeGuids = -build_property.InvariantGlobalization = -build_property.PlatformNeutralAssembly = -build_property.EnforceExtendedAnalyzerRules = -build_property._SupportedPlatformList = Linux,macOS,Windows -build_property.RootNamespace = DroneSimulator -build_property.ProjectDir = D:\Files\Main\Projects\Fly\DroneClient\ -build_property.EnableComHosting = -build_property.EnableGeneratedComInterfaceComImportInterop = -build_property.CsWinRTUseWindowsUIXamlProjections = false -build_property.EffectiveAnalysisLevelStyle = 9.0 -build_property.EnableCodeStyleSeverity = diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.GlobalUsings.g.cs b/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.GlobalUsings.g.cs deleted file mode 100644 index 84bbb89..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.GlobalUsings.g.cs +++ /dev/null @@ -1,10 +0,0 @@ -// -global using global::System; -global using global::System.Collections.Generic; -global using global::System.Drawing; -global using global::System.IO; -global using global::System.Linq; -global using global::System.Net.Http; -global using global::System.Threading; -global using global::System.Threading.Tasks; -global using global::System.Windows.Forms; diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.assets.cache b/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.assets.cache deleted file mode 100644 index dd57bbd..0000000 Binary files a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.assets.cache and /dev/null differ diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.csproj.BuildWithSkipAnalyzers b/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.csproj.BuildWithSkipAnalyzers deleted file mode 100644 index e69de29..0000000 diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.csproj.CoreCompileInputs.cache b/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.csproj.CoreCompileInputs.cache deleted file mode 100644 index 50ef240..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.csproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -051ffb89f1ee627ab3b9aaef920afd665a18f0f3c3fe82852812d5c6608dcb30 diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.csproj.FileListAbsolute.txt b/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.csproj.FileListAbsolute.txt deleted file mode 100644 index 93aac95..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.csproj.FileListAbsolute.txt +++ /dev/null @@ -1,32 +0,0 @@ -R:\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.exe -R:\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.deps.json -R:\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.runtimeconfig.json -R:\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.dll -R:\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.pdb -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.Form1.resources -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.csproj.GenerateResource.cache -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.GeneratedMSBuildEditorConfig.editorconfig -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.AssemblyInfoInputs.cache -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.AssemblyInfo.cs -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.csproj.CoreCompileInputs.cache -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.dll -R:\DroneSimulator\obj\Debug\net9.0-windows\refint\DroneSimulator.dll -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.pdb -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.genruntimeconfig.cache -R:\DroneSimulator\obj\Debug\net9.0-windows\ref\DroneSimulator.dll -D:\Files\Main\Projects\Fly\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.exe -D:\Files\Main\Projects\Fly\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.deps.json -D:\Files\Main\Projects\Fly\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.runtimeconfig.json -D:\Files\Main\Projects\Fly\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.dll -D:\Files\Main\Projects\Fly\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.pdb -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.csproj.GenerateResource.cache -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.GeneratedMSBuildEditorConfig.editorconfig -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.AssemblyInfoInputs.cache -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.AssemblyInfo.cs -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.csproj.CoreCompileInputs.cache -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.dll -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\refint\DroneSimulator.dll -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.pdb -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.genruntimeconfig.cache -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\ref\DroneSimulator.dll -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.Form_Main.resources diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.csproj.GenerateResource.cache b/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.csproj.GenerateResource.cache deleted file mode 100644 index f296fd0..0000000 Binary files a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.csproj.GenerateResource.cache and /dev/null differ diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.designer.deps.json b/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.designer.deps.json deleted file mode 100644 index 360ddb4..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.designer.deps.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v9.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v9.0": {} - }, - "libraries": {} -} \ No newline at end of file diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.designer.runtimeconfig.json b/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.designer.runtimeconfig.json deleted file mode 100644 index 62eff55..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.designer.runtimeconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "net9.0", - "frameworks": [ - { - "name": "Microsoft.NETCore.App", - "version": "9.0.0" - }, - { - "name": "Microsoft.WindowsDesktop.App", - "version": "9.0.0" - } - ], - "additionalProbingPaths": [ - "C:\\Users\\USER\\.dotnet\\store\\|arch|\\|tfm|", - "C:\\Users\\USER\\.nuget\\packages", - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configProperties": { - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false, - "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false, - "Microsoft.NETCore.DotNetHostPolicy.SetAppPaths": true - } - } -} \ No newline at end of file diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.dll b/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.dll deleted file mode 100644 index cc2a360..0000000 Binary files a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.dll and /dev/null differ diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.genruntimeconfig.cache b/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.genruntimeconfig.cache deleted file mode 100644 index f1834d7..0000000 --- a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.genruntimeconfig.cache +++ /dev/null @@ -1 +0,0 @@ -42c9c47684404b6458665b5db1d77e8e1563e0e910b9607df810cd1011407bfc diff --git a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.pdb b/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.pdb deleted file mode 100644 index bc5194b..0000000 Binary files a/DroneClient/obj/Debug/net9.0-windows/DroneSimulator.pdb and /dev/null differ diff --git a/DroneClient/obj/Debug/net9.0-windows/apphost.exe b/DroneClient/obj/Debug/net9.0-windows/apphost.exe deleted file mode 100644 index 92d0918..0000000 Binary files a/DroneClient/obj/Debug/net9.0-windows/apphost.exe and /dev/null differ diff --git a/DroneClient/obj/Debug/net9.0-windows/ref/DroneClient.dll b/DroneClient/obj/Debug/net9.0-windows/ref/DroneClient.dll deleted file mode 100644 index 331abf7..0000000 Binary files a/DroneClient/obj/Debug/net9.0-windows/ref/DroneClient.dll and /dev/null differ diff --git a/DroneClient/obj/Debug/net9.0-windows/ref/DroneSimulator.dll b/DroneClient/obj/Debug/net9.0-windows/ref/DroneSimulator.dll deleted file mode 100644 index 5adc0ee..0000000 Binary files a/DroneClient/obj/Debug/net9.0-windows/ref/DroneSimulator.dll and /dev/null differ diff --git a/DroneClient/obj/Debug/net9.0-windows/refint/DroneClient.dll b/DroneClient/obj/Debug/net9.0-windows/refint/DroneClient.dll deleted file mode 100644 index 331abf7..0000000 Binary files a/DroneClient/obj/Debug/net9.0-windows/refint/DroneClient.dll and /dev/null differ diff --git a/DroneClient/obj/Debug/net9.0-windows/refint/DroneSimulator.dll b/DroneClient/obj/Debug/net9.0-windows/refint/DroneSimulator.dll deleted file mode 100644 index 5adc0ee..0000000 Binary files a/DroneClient/obj/Debug/net9.0-windows/refint/DroneSimulator.dll and /dev/null differ diff --git a/DroneClient/obj/DroneClient.csproj.nuget.dgspec.json b/DroneClient/obj/DroneClient.csproj.nuget.dgspec.json deleted file mode 100644 index 0f88e49..0000000 --- a/DroneClient/obj/DroneClient.csproj.nuget.dgspec.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "format": 1, - "restore": { - "D:\\CPL\\Simulator\\DroneClient\\DroneClient\\DroneClient.csproj": {} - }, - "projects": { - "D:\\CPL\\Simulator\\DroneClient\\DroneClient\\DroneClient.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "D:\\CPL\\Simulator\\DroneClient\\DroneClient\\DroneClient.csproj", - "projectName": "DroneClient", - "projectPath": "D:\\CPL\\Simulator\\DroneClient\\DroneClient\\DroneClient.csproj", - "packagesPath": "C:\\Users\\Дана\\.nuget\\packages\\", - "outputPath": "D:\\CPL\\Simulator\\DroneClient\\DroneClient\\obj\\", - "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configFilePaths": [ - "C:\\Users\\Дана\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net9.0-windows" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net9.0-windows7.0": { - "targetAlias": "net9.0-windows", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - }, - "SdkAnalysisLevel": "9.0.200" - }, - "frameworks": { - "net9.0-windows7.0": { - "targetAlias": "net9.0-windows", - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - }, - "Microsoft.WindowsDesktop.App.WindowsForms": { - "privateAssets": "none" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.201/PortableRuntimeIdentifierGraph.json" - } - } - } - } -} \ No newline at end of file diff --git a/DroneClient/obj/DroneClient.csproj.nuget.g.props b/DroneClient/obj/DroneClient.csproj.nuget.g.props deleted file mode 100644 index 02c5408..0000000 --- a/DroneClient/obj/DroneClient.csproj.nuget.g.props +++ /dev/null @@ -1,16 +0,0 @@ - - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - $(UserProfile)\.nuget\packages\ - C:\Users\Дана\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages - PackageReference - 6.13.2 - - - - - - \ No newline at end of file diff --git a/DroneClient/obj/DroneClient.csproj.nuget.g.targets b/DroneClient/obj/DroneClient.csproj.nuget.g.targets deleted file mode 100644 index 3dc06ef..0000000 --- a/DroneClient/obj/DroneClient.csproj.nuget.g.targets +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/DroneClient/obj/DroneSimulator.csproj.nuget.dgspec.json b/DroneClient/obj/DroneSimulator.csproj.nuget.dgspec.json deleted file mode 100644 index f42b2eb..0000000 --- a/DroneClient/obj/DroneSimulator.csproj.nuget.dgspec.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "format": 1, - "restore": { - "D:\\Files\\Main\\Projects\\Fly\\DroneClient\\DroneSimulator.csproj": {} - }, - "projects": { - "D:\\Files\\Main\\Projects\\Fly\\DroneClient\\DroneSimulator.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "D:\\Files\\Main\\Projects\\Fly\\DroneClient\\DroneSimulator.csproj", - "projectName": "DroneSimulator", - "projectPath": "D:\\Files\\Main\\Projects\\Fly\\DroneClient\\DroneSimulator.csproj", - "packagesPath": "C:\\Users\\USER\\.nuget\\packages\\", - "outputPath": "D:\\Files\\Main\\Projects\\Fly\\DroneClient\\obj\\", - "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configFilePaths": [ - "C:\\Users\\USER\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net9.0-windows" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net9.0-windows7.0": { - "targetAlias": "net9.0-windows", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - }, - "SdkAnalysisLevel": "9.0.200" - }, - "frameworks": { - "net9.0-windows7.0": { - "targetAlias": "net9.0-windows", - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - }, - "Microsoft.WindowsDesktop.App.WindowsForms": { - "privateAssets": "none" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.201/PortableRuntimeIdentifierGraph.json" - } - } - } - } -} \ No newline at end of file diff --git a/DroneClient/obj/DroneSimulator.csproj.nuget.g.props b/DroneClient/obj/DroneSimulator.csproj.nuget.g.props deleted file mode 100644 index c200bda..0000000 --- a/DroneClient/obj/DroneSimulator.csproj.nuget.g.props +++ /dev/null @@ -1,16 +0,0 @@ - - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - $(UserProfile)\.nuget\packages\ - C:\Users\USER\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages - PackageReference - 6.13.2 - - - - - - \ No newline at end of file diff --git a/DroneClient/obj/DroneSimulator.csproj.nuget.g.targets b/DroneClient/obj/DroneSimulator.csproj.nuget.g.targets deleted file mode 100644 index 3dc06ef..0000000 --- a/DroneClient/obj/DroneSimulator.csproj.nuget.g.targets +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/DroneClient/obj/project.assets.json b/DroneClient/obj/project.assets.json deleted file mode 100644 index bb8d343..0000000 --- a/DroneClient/obj/project.assets.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "version": 3, - "targets": { - "net9.0-windows7.0": {} - }, - "libraries": {}, - "projectFileDependencyGroups": { - "net9.0-windows7.0": [] - }, - "packageFolders": { - "C:\\Users\\Дана\\.nuget\\packages\\": {}, - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "D:\\CPL\\Simulator\\DroneClient\\DroneClient\\DroneClient.csproj", - "projectName": "DroneClient", - "projectPath": "D:\\CPL\\Simulator\\DroneClient\\DroneClient\\DroneClient.csproj", - "packagesPath": "C:\\Users\\Дана\\.nuget\\packages\\", - "outputPath": "D:\\CPL\\Simulator\\DroneClient\\DroneClient\\obj\\", - "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configFilePaths": [ - "C:\\Users\\Дана\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net9.0-windows" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net9.0-windows7.0": { - "targetAlias": "net9.0-windows", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - }, - "SdkAnalysisLevel": "9.0.200" - }, - "frameworks": { - "net9.0-windows7.0": { - "targetAlias": "net9.0-windows", - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - }, - "Microsoft.WindowsDesktop.App.WindowsForms": { - "privateAssets": "none" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.201/PortableRuntimeIdentifierGraph.json" - } - } - } -} \ No newline at end of file diff --git a/DroneClient/obj/project.nuget.cache b/DroneClient/obj/project.nuget.cache deleted file mode 100644 index c7efde6..0000000 --- a/DroneClient/obj/project.nuget.cache +++ /dev/null @@ -1,8 +0,0 @@ -{ - "version": 2, - "dgSpecHash": "ddOSNwF62rQ=", - "success": true, - "projectFilePath": "D:\\CPL\\Simulator\\DroneClient\\DroneClient\\DroneClient.csproj", - "expectedPackageFiles": [], - "logs": [] -} \ No newline at end of file diff --git a/DroneClientCpp/Client.cpp b/DroneClientCpp/Client.cpp new file mode 100644 index 0000000..7fab2d4 --- /dev/null +++ b/DroneClientCpp/Client.cpp @@ -0,0 +1,106 @@ +#pragma once + +#include "Client.h" + +Client::Client(const char* ip, int port) : running(true), Connection(INVALID_SOCKET) +{ + if (!ConnectToServer(ip, port)) + { + std::cerr << "Failed to connect to server!" << std::endl; + } +} + +Client::~Client() +{ + Stop(); + CloseConnection(); +} + +bool Client::ConnectToServer(const char* ip, int port) +{ + WSAData wsaData; + WORD DLLVersion = MAKEWORD(2, 2); + + if (WSAStartup(DLLVersion, &wsaData) != 0) + { + std::cerr << "Error: WSAStartup failed" << std::endl; + return false; + } + + SOCKADDR_IN addr; + inet_pton(AF_INET, ip, &addr.sin_addr); + addr.sin_port = htons(port); + addr.sin_family = AF_INET; + + Connection = socket(AF_INET, SOCK_STREAM, 0); + if (Connection == INVALID_SOCKET) + { + std::cerr << "Error: Failed to create socket" << std::endl; + WSACleanup(); + return false; + } + + if (connect(Connection, (SOCKADDR*)&addr, sizeof(addr)) != 0) + { + std::cerr << "Error: Failed to connect to server" << std::endl; + closesocket(Connection); + WSACleanup(); + return false; + } + + return true; +} + +void Client::CloseConnection() +{ + if (Connection != INVALID_SOCKET) + { + closesocket(Connection); + WSACleanup(); + Connection = INVALID_SOCKET; + } +} + +void Client::ReceiveHandler() +{ + while (running) + { + DataIn tempData; + int result = recv(Connection, (char*)&tempData, sizeof(tempData), 0); + + if (result <= 0) + { + std::cerr << "Error: Connection lost (recv failed)" << std::endl; + running = false; + break; + } + + std::lock_guard lock(dataMutex); + dataIn = tempData; + } +} + +void Client::SendHandler() +{ + while (running) + { + { + std::lock_guard lock(dataMutex); + send(Connection, (char*)&dataOut, sizeof(dataOut), 0); + } + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + } +} + +void Client::Start() +{ + recvThread = std::thread(&Client::ReceiveHandler, this); + sendThread = std::thread(&Client::SendHandler, this); +} + +void Client::Stop() +{ + running = false; + if (recvThread.joinable()) recvThread.join(); + if (sendThread.joinable()) sendThread.join(); +} diff --git a/DroneClientCpp/Client.h b/DroneClientCpp/Client.h new file mode 100644 index 0000000..6801903 --- /dev/null +++ b/DroneClientCpp/Client.h @@ -0,0 +1,44 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +#pragma comment(lib, "Ws2_32.lib") + +class Client +{ +public: + Client(const char* ip, int port); + ~Client(); + + void Start(); // Запуск потоков + void Stop(); // Остановка потоков + struct DataIn + { + float AccX, AccY, AccZ; + float GyrX, GyrY, GyrZ; + float PosX, PosY, LaserRange; + } dataIn; + + struct DataOut + { + float MotorUL, MotorUR, MotorDL, MotorDR; + } dataOut; + bool ConnectToServer(const char* ip, int port); + void CloseConnection(); + +private: + std::atomic running; + std::mutex dataMutex; + + SOCKET Connection; + std::thread recvThread; + std::thread sendThread; + + void ReceiveHandler(); + void SendHandler(); +}; \ No newline at end of file diff --git a/DroneClientCpp/Drone.cpp b/DroneClientCpp/Drone.cpp new file mode 100644 index 0000000..7c24378 --- /dev/null +++ b/DroneClientCpp/Drone.cpp @@ -0,0 +1,255 @@ +#include "Drone.h" + +namespace DroneClient { + + // Реализация статического метода GetBytes + array^ Drone::GetBytes(Object^ data) + { + int size = Marshal::SizeOf(data); + array^ arr = gcnew array(size); + + IntPtr ptr = IntPtr::Zero; + try + { + ptr = Marshal::AllocHGlobal(size); + Marshal::StructureToPtr(data, ptr, true); + Marshal::Copy(ptr, arr, 0, size); + } + finally + { + Marshal::FreeHGlobal(ptr); + } + return arr; + } + + // Реализация статического метода FromBytes + Object^ Drone::FromBytes(array^ arr, Type^ type) + { + Object^ mem = gcnew Object(); + + int size = Marshal::SizeOf(type); + IntPtr ptr = IntPtr::Zero; + try + { + ptr = Marshal::AllocHGlobal(size); + Marshal::Copy(arr, 0, ptr, size); + mem = Marshal::PtrToStructure(ptr, type); + } + finally + { + Marshal::FreeHGlobal(ptr); + } + return mem; + } + + // Реализация приватного метода SendDataMotor4 + array^ Drone::SendDataMotor4() + { + DroneData::DataMotor4 mot4; + + mot4.Head.Size = Marshal::SizeOf(DroneData::DataMotor4::typeid); + mot4.Head.Mode = DroneData::DataMode::Response; + mot4.Head.Type = DroneData::DataType::DataMotor4; + + mot4.UL = MotorUL; + mot4.UR = MotorUR; + mot4.DL = MotorDL; + mot4.DR = MotorDR; + + return GetBytes(mot4); + } + + array^ Drone::RecvDataAcc(array^ data) + { + DroneData::DataAcc imu = (DroneData::DataAcc)FromBytes(data, DroneData::DataAcc::typeid); + + AccX = imu.Acc.X; AccY = imu.Acc.Y; AccZ = imu.Acc.Z; + TimeAcc = imu.Time; + + return gcnew array(0); + } + + array^ Drone::RecvDataGyr(array^ data) + { + DroneData::DataGyr imu = (DroneData::DataGyr)FromBytes(data, DroneData::DataGyr::typeid); + + GyrX = imu.Gyr.X; GyrY = imu.Gyr.Y; GyrZ = imu.Gyr.Z; + TimeGyr = imu.Time; + + return gcnew array(0); + } + + array^ Drone::RecvDataRange(array^ data) + { + DroneData::DataRange pos = (DroneData::DataRange)FromBytes(data, DroneData::DataRange::typeid); + + LaserRange = pos.LiDAR; + TimeRange = pos.Time; + + return gcnew array(0); + } + + array^ Drone::RecvDataLocal(array^ data) + { + DroneData::DataLocal pos = (DroneData::DataLocal)FromBytes(data, DroneData::DataLocal::typeid); + + PosX = pos.Local.X; PosY = pos.Local.Y; + + return gcnew array(0); + } + + array^ Drone::ClientRequestResponse(DroneData::DataHead head, array^ body) + { + array^ zero = gcnew array(0); + + switch (head.Type) + { + case DroneData::DataType::DataAcc: + if (head.Mode == DroneData::DataMode::Request) + { + return zero; // Запрос данных (не реализовано) + } + else + { + return RecvDataAcc(body); // Пришли данные + } + + case DroneData::DataType::DataGyr: + if (head.Mode == DroneData::DataMode::Request) + { + return zero; // Запрос данных (не реализовано) + } + else + { + return RecvDataGyr(body); // Пришли данные + } + + case DroneData::DataType::DataRange: + if (head.Mode == DroneData::DataMode::Request) + { + return zero; // Запрос данных (не реализовано) + } + else + { + return RecvDataRange(body); // Пришли данные + } + + case DroneData::DataType::DataLocal: + if (head.Mode == DroneData::DataMode::Request) + { + return zero; // Запрос данных (не реализовано) + } + else + { + return RecvDataLocal(body); // Пришли данные + } + + case DroneData::DataType::DataMotor4: + if (head.Mode == DroneData::DataMode::Request) + { + return SendDataMotor4(); // Запрос данных + } + else + { + return zero; // Пришли данные (не реализовано) + } + } + + return zero; + } + + // Реализация конструктора + Drone::Drone() + { + DroneStreamData = gcnew array(DroneStreamCount); // Инициализация массива + DroneStreamIndex = 0; + DroneStreamHead.Mode = DroneData::DataMode::None; + DroneStreamHead.Size = 0; + DroneStreamHead.Type = DroneData::DataType::None; + } + + // Реализация метода DataStream + List^>^ Drone::DataStream(array^ data, int size) + { + System::Collections::Generic::List^>^ ret = gcnew System::Collections::Generic::List^>(); + + if (data == nullptr) return ret; // Последовательность не сформирована + + if (size + DroneStreamIndex > DroneStreamCount) return nullptr; // Ошибка переполнения + + Array::Copy(data, 0, DroneStreamData, DroneStreamIndex, size); + DroneStreamIndex += size; + + while (true) + { + if (DroneStreamHead.Size == 0) // Заголовок еще не получен + { + if (DroneStreamIndex < DroneData::DataHead::StrLen) return ret; + DroneStreamHead = (DroneData::DataHead)FromBytes(DroneStreamData, DroneData::DataHead::typeid); + } + + if (DroneStreamHead.Size > DroneStreamIndex) break; // Пакет еще не полный + + array^ body = gcnew array(DroneStreamHead.Size); + Array::Copy(DroneStreamData, 0, body, 0, DroneStreamHead.Size); + + int shift = DroneStreamHead.Size; + + DroneStreamIndex -= shift; + Array::Copy(DroneStreamData, shift, DroneStreamData, 0, DroneStreamIndex); // Сдвиг массива + + DroneStreamHead.Size = 0; // Сброс заголовка + + ret->Add(ClientRequestResponse(DroneStreamHead, body)); + } + + return ret; + } + + // Реализация метода SendRequest + array^ Drone::SendRequest() + { + DroneData::DataHead^ acc = gcnew DroneData::DataHead(); + acc->Size = DroneData::DataHead::StrLen; + acc->Mode = DroneData::DataMode::Request; + acc->Type = DroneData::DataType::DataAcc; + + DroneData::DataHead^ gyr = gcnew DroneData::DataHead(); + gyr->Size = DroneData::DataHead::StrLen; + gyr->Mode = DroneData::DataMode::Request; + gyr->Type = DroneData::DataType::DataGyr; + + DroneData::DataHead^ range = gcnew DroneData::DataHead(); + range->Size = DroneData::DataHead::StrLen; + range->Mode = DroneData::DataMode::Request; + range->Type = DroneData::DataType::DataRange; + + DroneData::DataHead^ local = gcnew DroneData::DataHead(); + local->Size = DroneData::DataHead::StrLen; + local->Mode = DroneData::DataMode::Request; + local->Type = DroneData::DataType::DataLocal; + + List^>^ list = gcnew List^>(); + + list->Add(GetBytes(acc)); + list->Add(GetBytes(gyr)); + list->Add(GetBytes(range)); + list->Add(GetBytes(local)); + list->Add(SendDataMotor4()); + + int count = 0; + + for each(array^ d in list) count += d->Length; + + array^ send = gcnew array(count); + + count = 0; + for each (array ^ d in list) + { + d->CopyTo(send, count); + count += d->Length; + } + + return send; + } +} \ No newline at end of file diff --git a/DroneClientCpp/Drone.h b/DroneClientCpp/Drone.h new file mode 100644 index 0000000..4f1e8df --- /dev/null +++ b/DroneClientCpp/Drone.h @@ -0,0 +1,51 @@ +#pragma once + +#include "DroneData.h" +#include +#include + +#using +#using + +using namespace System; +using namespace System::Collections::Generic; +using namespace System::Runtime::InteropServices; + +namespace DroneClient { + + public ref class Drone + { + public: + float AccX, AccY, AccZ; + float GyrX, GyrY, GyrZ; + unsigned int TimeAcc, TimeGyr; + + float PosX, PosY; + float LaserRange; + unsigned int TimeRange; + + float MotorUL, MotorUR, MotorDL, MotorDR; + + static array^ GetBytes(Object^ data); + static Object^ FromBytes(array^ arr, Type^ type); + + private: + array^ SendDataMotor4(); + array^ RecvDataAcc(array^ data); + array^ RecvDataGyr(array^ data); + array^ RecvDataRange(array^ data); + array^ RecvDataLocal(array^ data); + array^ ClientRequestResponse(DroneData::DataHead head, array^ body); + + literal int DroneStreamCount = 512; + array^ DroneStreamData; + int DroneStreamIndex; + DroneData::DataHead DroneStreamHead; + + public: + Drone(); // Конструктор для инициализации + + System::Collections::Generic::List^>^ DataStream(array^ data, int size); + array^ SendRequest(); + }; +} \ No newline at end of file diff --git a/DroneClientCpp/DroneClient.h b/DroneClientCpp/DroneClient.h new file mode 100644 index 0000000..56ff135 --- /dev/null +++ b/DroneClientCpp/DroneClient.h @@ -0,0 +1,65 @@ +#pragma once + +#include +#include + +#using +#using + +using namespace System; +using namespace System::Runtime::InteropServices; + +namespace DroneClient { + + public ref class Drone + { + public: + value struct DataOut + { + float AccX, AccY, AccZ; + float GyrX, GyrY, GyrZ; + float PosX, PosY; + float LaserRange; + }; + + value struct DataIn + { + float MotorUL, MotorUR, MotorDL, MotorDR; + }; + + static array^ GetBytes(Object^ data) + { + int size = Marshal::SizeOf(data); + array^ arr = gcnew array(size); + + IntPtr ptr = IntPtr::Zero; + try + { + ptr = Marshal::AllocHGlobal(size); + Marshal::StructureToPtr(data, ptr, true); + Marshal::Copy(ptr, arr, 0, size); + } + finally + { + Marshal::FreeHGlobal(ptr); + } + return arr; + } + + static Object^ FromBytes(array^ arr, Type^ type) + { + int size = Marshal::SizeOf(type); + IntPtr ptr = IntPtr::Zero; + try + { + ptr = Marshal::AllocHGlobal(size); + Marshal::Copy(arr, 0, ptr, size); + return Marshal::PtrToStructure(ptr, type); + } + finally + { + Marshal::FreeHGlobal(ptr); + } + } + }; +} \ No newline at end of file diff --git a/DroneClientCpp/DroneClientCpp.sln b/DroneClientCpp/DroneClientCpp.sln new file mode 100644 index 0000000..0272a0e --- /dev/null +++ b/DroneClientCpp/DroneClientCpp.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35527.113 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DroneClientCpp", "DroneClientCpp.vcxproj", "{690C304C-A70B-4B0F-BF61-8C51290BF444}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {690C304C-A70B-4B0F-BF61-8C51290BF444}.Debug|x64.ActiveCfg = Debug|x64 + {690C304C-A70B-4B0F-BF61-8C51290BF444}.Debug|x64.Build.0 = Debug|x64 + {690C304C-A70B-4B0F-BF61-8C51290BF444}.Debug|x86.ActiveCfg = Debug|Win32 + {690C304C-A70B-4B0F-BF61-8C51290BF444}.Debug|x86.Build.0 = Debug|Win32 + {690C304C-A70B-4B0F-BF61-8C51290BF444}.Release|x64.ActiveCfg = Release|x64 + {690C304C-A70B-4B0F-BF61-8C51290BF444}.Release|x64.Build.0 = Release|x64 + {690C304C-A70B-4B0F-BF61-8C51290BF444}.Release|x86.ActiveCfg = Release|Win32 + {690C304C-A70B-4B0F-BF61-8C51290BF444}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/DroneClientCpp/DroneClientCpp.vcxproj b/DroneClientCpp/DroneClientCpp.vcxproj new file mode 100644 index 0000000..4588522 --- /dev/null +++ b/DroneClientCpp/DroneClientCpp.vcxproj @@ -0,0 +1,141 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + {690C304C-A70B-4B0F-BF61-8C51290BF444} + v4.7.2 + ManagedCProj + DroneClientCpp + 10.0 + + + + Application + true + v143 + true + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + true + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + Level3 + _DEBUG;%(PreprocessorDefinitions) + + + + + + + + Level3 + WIN32;_DEBUG;%(PreprocessorDefinitions) + + + + + + + + Level3 + WIN32;NDEBUG;%(PreprocessorDefinitions) + + + + + + + + Level3 + NDEBUG;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + + + + + + + CppForm + + + + + + FormMain.h + + + + + + \ No newline at end of file diff --git a/DroneClientCpp/DroneClientCpp.vcxproj.filters b/DroneClientCpp/DroneClientCpp.vcxproj.filters new file mode 100644 index 0000000..6c37b72 --- /dev/null +++ b/DroneClientCpp/DroneClientCpp.vcxproj.filters @@ -0,0 +1,42 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + \ No newline at end of file diff --git a/DroneClientCpp/DroneClientCpp.vcxproj.user b/DroneClientCpp/DroneClientCpp.vcxproj.user new file mode 100644 index 0000000..88a5509 --- /dev/null +++ b/DroneClientCpp/DroneClientCpp.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/DroneClientCpp/DroneData.h b/DroneClientCpp/DroneData.h new file mode 100644 index 0000000..5998a61 --- /dev/null +++ b/DroneClientCpp/DroneData.h @@ -0,0 +1,117 @@ +#pragma once + +#include +#include + +using namespace System; +using namespace System::Runtime::InteropServices; + +namespace DroneData { + + public enum class DataMode : unsigned short + { + None = 0, Response = 1, Request = 2 + }; + + public enum class DataType : unsigned short + { + None = 0, Head = 1, + + // Output + DataAcc = 1001, DataGyr = 1002, DataMag = 1003, DataRange = 1004, DataLocal = 1005, + + // Input + DataMotor4 = 2001, DataMotor6 = 2002 + }; + + public value struct DataHead + { + public: + long Size; + DataMode Mode; + DataType Type; + + unsigned long Time; + + static const int StrLen = sizeof(DataHead); + }; + + public value struct XYZ + { + public: + float X, Y, Z; + }; + + public value struct DataAcc + { + public: + DataHead Head; + XYZ Acc; + + unsigned long Time; + + static const int StrLen = sizeof(DataAcc); + }; + + public value struct DataGyr + { + public: + DataHead Head; + XYZ Gyr; + + unsigned long Time; + + static const int StrLen = sizeof(DataGyr); + }; + + public value struct DataMag + { + public: + DataHead Head; + XYZ Mag; + + unsigned long Time; + + static const int StrLen = sizeof(DataMag); + }; + + public value struct DataRange + { + public: + DataHead Head; + float LiDAR; + + unsigned long Time; + + static const int StrLen = sizeof(DataRange); + }; + + public value struct DataLocal + { + public: + DataHead Head; + XYZ Local; + + unsigned long Time; + + static const int StrLen = sizeof(DataLocal); + }; + + public value struct DataMotor4 + { + public: + DataHead Head; + float UL, UR, DL, DR; + + static const int StrLen = sizeof(DataMotor4); + }; + + public value struct DataMotor6 + { + public: + DataHead Head; + float UL, UR, LL, RR, DL, DR; + + static const int StrLen = sizeof(DataMotor6); + }; +} \ No newline at end of file diff --git a/DroneClientCpp/FormMain.cpp b/DroneClientCpp/FormMain.cpp new file mode 100644 index 0000000..dfbdfbc --- /dev/null +++ b/DroneClientCpp/FormMain.cpp @@ -0,0 +1,12 @@ +#include "FormMain.h" + +#include + +using namespace DroneClientCpp; + +int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { + Application::EnableVisualStyles(); + Application::SetCompatibleTextRenderingDefault(false); + Application::Run(gcnew FormMain); + return 0; +} \ No newline at end of file diff --git a/DroneClientCpp/FormMain.h b/DroneClientCpp/FormMain.h new file mode 100644 index 0000000..12ac3c2 Binary files /dev/null and b/DroneClientCpp/FormMain.h differ diff --git a/DroneClientCpp/FormMain.resx b/DroneClientCpp/FormMain.resx new file mode 100644 index 0000000..27962ab --- /dev/null +++ b/DroneClientCpp/FormMain.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 310, 17 + + \ No newline at end of file diff --git a/DroneClientCpp/MyForm.cpp b/DroneClientCpp/MyForm.cpp new file mode 100644 index 0000000..7c411c2 --- /dev/null +++ b/DroneClientCpp/MyForm.cpp @@ -0,0 +1,12 @@ +#include "MyForm.h" + +#include + +using namespace DroneClientCpp; + +int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { + Application::EnableVisualStyles(); + Application::SetCompatibleTextRenderingDefault(false); + Application::Run(gcnew MyForm); + return 0; +} \ No newline at end of file diff --git a/DroneClientCpp/MyForm.h b/DroneClientCpp/MyForm.h new file mode 100644 index 0000000..bdc5a39 Binary files /dev/null and b/DroneClientCpp/MyForm.h differ diff --git a/DroneClientCpp/MyForm.resx b/DroneClientCpp/MyForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/DroneClientCpp/MyForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/DroneClientCpp/NetClient.cpp b/DroneClientCpp/NetClient.cpp new file mode 100644 index 0000000..e57594f --- /dev/null +++ b/DroneClientCpp/NetClient.cpp @@ -0,0 +1,105 @@ +#include "NetClient.h" + +namespace DroneSimulator { + + // Конструктор ConnectData + NetClient::ConnectData::ConnectData(bool connect, Socket^ server) + { + Connect = connect; + Server = server; + } + + // Конструктор ReceiveData + NetClient::ReceiveData::ReceiveData(array^ buffer, int size, Socket^ server) + { + Buffer = buffer; + Size = size; + Server = server; + } + + // Конструктор NetClient + NetClient::NetClient() + { + Connected = false; + ServerSocket = nullptr; + DataServer = gcnew ServerData(); // Инициализация DataServer + } + + // Реализация метода Connect + NetClient::ClientState NetClient::Connect(String^ Addr, int Port, ClientCallback^ Connection, ClientCallback^ Receive) + { + if (Connected) + { + Close(); + return ClientState::Stop; + } + + ConnectionCallback = Connection; + ReceiveCallback = Receive; + + IPEndPoint^ ep = gcnew IPEndPoint(IPAddress::Parse(Addr), Port); + ServerSocket = gcnew Socket(AddressFamily::InterNetwork, SocketType::Stream, ProtocolType::Tcp); + + try { if (ServerSocket) ServerSocket->Connect(ep); } + catch (...) { ServerSocket->Close(); return ClientState::Error; } + + Connected = true; + + ConnectionCallback(gcnew ConnectData(true, ServerSocket)); + + ReceiveData^ receiveData = gcnew ReceiveData(DataServer->buffer, ServerData::size, ServerSocket); + + try { if (ServerSocket) ServerSocket->BeginReceive(DataServer->buffer, 0, ServerData::size, SocketFlags::None, gcnew AsyncCallback(this, &NetClient::ReadCallback), receiveData); } + catch (...) {} + + return ClientState::Connected; + } + + // Реализация метода Close + void NetClient::Close() + { + try { if(ServerSocket) ServerSocket->Shutdown(SocketShutdown::Both); } + catch (...) {} + if(ServerSocket) ServerSocket->Close(); + Connected = false; + } + + // Реализация метода Send + void NetClient::Send(array^ data) + { + if (ServerSocket != nullptr && Connected) + { + try { if (ServerSocket) ServerSocket->Send(data); } + catch (...) {} + } + } + + // Реализация метода ReadCallback + void NetClient::ReadCallback(IAsyncResult^ ar) + { + ReceiveData^ cd = (ReceiveData^)ar->AsyncState; + if (cd == nullptr) return; + + int bytes = 0; + try { bytes = ServerSocket->EndReceive(ar); } + catch (...) {} + + if (bytes == 0) + { + if (ServerSocket) ServerSocket->Close(); + Connected = false; + + if (ServerSocket != nullptr) + { + ConnectionCallback(gcnew ConnectData(false, nullptr)); + } + + return; + } + + ReceiveCallback(gcnew ReceiveData(cd->Buffer, bytes, ServerSocket)); + + try { if (ServerSocket) ServerSocket->BeginReceive(cd->Buffer, 0, ServerData::size, SocketFlags::None, gcnew AsyncCallback(this, &NetClient::ReadCallback), cd); } + catch (...) {} + } +} \ No newline at end of file diff --git a/DroneClientCpp/NetClient.h b/DroneClientCpp/NetClient.h new file mode 100644 index 0000000..adfe19e --- /dev/null +++ b/DroneClientCpp/NetClient.h @@ -0,0 +1,68 @@ +#pragma once + +#include +#include + +#using +#using + +using namespace System; +using namespace System::Net; +using namespace System::Net::Sockets; + +namespace DroneSimulator { + + public ref class NetClient + { + public: + ref class ConnectData + { + public: + bool Connect; + Socket^ Server; + + ConnectData(bool connect, Socket^ server); + }; + + ref class ReceiveData + { + public: + array^ Buffer; + int Size; + Socket^ Server; + + ReceiveData(array^ buffer, int size, Socket^ server); + }; + + private: + ref class ServerData + { + public: + literal int size = 1024; + array^ buffer = gcnew array(size); + }; + + bool Connected; + Socket^ ServerSocket; + ServerData^ DataServer; + + public: + delegate void ClientCallback(Object^ o); + + private: + ClientCallback^ ConnectionCallback; + ClientCallback^ ReceiveCallback; + + public: + NetClient(); // Добавлен конструктор + + enum class ClientState { Error, Connected, Stop }; + + ClientState Connect(String^ Addr, int Port, ClientCallback^ Connection, ClientCallback^ Receive); + void Close(); + void Send(array^ data); + + private: + void ReadCallback(IAsyncResult^ ar); + }; +} \ No newline at end of file diff --git a/DroneClientCpp/Source.cpp b/DroneClientCpp/Source.cpp new file mode 100644 index 0000000..6c8d9fb --- /dev/null +++ b/DroneClientCpp/Source.cpp @@ -0,0 +1,11 @@ +#include "MyForm.h" + +using namespace MyWinFormsApp; // ???????????? ???? ?????? ??????? + +[STAThread] +int main(array^ args) { + Application::EnableVisualStyles(); // ???????? ??????????? ????? ????????? ?????????? + Application::SetCompatibleTextRenderingDefault(false); // ????????? ?????????? ?????? + Application::Run(gcnew MyForm()); // ?????? ????? + return 0; +} \ No newline at end of file diff --git a/DroneSimulator/.vs/DroneSimulator/DesignTimeBuild/.dtbcache.v2 b/DroneSimulator/.vs/DroneSimulator/DesignTimeBuild/.dtbcache.v2 deleted file mode 100644 index 1a0296d..0000000 Binary files a/DroneSimulator/.vs/DroneSimulator/DesignTimeBuild/.dtbcache.v2 and /dev/null differ diff --git a/DroneSimulator/.vs/DroneSimulator/FileContentIndex/88d4b77f-31ef-4e26-bbc6-d1b4e20990a0.vsidx b/DroneSimulator/.vs/DroneSimulator/FileContentIndex/88d4b77f-31ef-4e26-bbc6-d1b4e20990a0.vsidx deleted file mode 100644 index a900f4e..0000000 Binary files a/DroneSimulator/.vs/DroneSimulator/FileContentIndex/88d4b77f-31ef-4e26-bbc6-d1b4e20990a0.vsidx and /dev/null differ diff --git a/DroneSimulator/.vs/DroneSimulator/v17/.futdcache.v2 b/DroneSimulator/.vs/DroneSimulator/v17/.futdcache.v2 deleted file mode 100644 index 15021b5..0000000 Binary files a/DroneSimulator/.vs/DroneSimulator/v17/.futdcache.v2 and /dev/null differ diff --git a/DroneSimulator/.vs/DroneSimulator/v17/.suo b/DroneSimulator/.vs/DroneSimulator/v17/.suo deleted file mode 100644 index cd3e445..0000000 Binary files a/DroneSimulator/.vs/DroneSimulator/v17/.suo and /dev/null differ diff --git a/DroneSimulator/.vs/DroneSimulator/v17/DocumentLayout.backup.json b/DroneSimulator/.vs/DroneSimulator/v17/DocumentLayout.backup.json deleted file mode 100644 index 7929001..0000000 --- a/DroneSimulator/.vs/DroneSimulator/v17/DocumentLayout.backup.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "Version": 1, - "WorkspaceRootPath": "D:\\CPL\\Simulator\\DroneSimulator\\DroneSimulator\\", - "Documents": [], - "DocumentGroupContainers": [ - { - "Orientation": 0, - "VerticalTabListWidth": 256, - "DocumentGroups": [] - } - ] -} \ No newline at end of file diff --git a/DroneSimulator/.vs/DroneSimulator/v17/DocumentLayout.json b/DroneSimulator/.vs/DroneSimulator/v17/DocumentLayout.json deleted file mode 100644 index 048d35a..0000000 --- a/DroneSimulator/.vs/DroneSimulator/v17/DocumentLayout.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "Version": 1, - "WorkspaceRootPath": "D:\\CPL\\Simulator\\DroneSimulator\\DroneSimulator\\", - "Documents": [ - { - "AbsoluteMoniker": "D:0:0:{B66DBB0A-CCDD-4711-ADB0-5AA11AC1760D}|DroneSimulator.csproj|d:\\cpl\\simulator\\dronesimulator\\dronesimulator\\screen2d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{B66DBB0A-CCDD-4711-ADB0-5AA11AC1760D}|DroneSimulator.csproj|solutionrelative:screen2d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - } - ], - "DocumentGroupContainers": [ - { - "Orientation": 0, - "VerticalTabListWidth": 256, - "DocumentGroups": [ - { - "DockedWidth": 200, - "SelectedChildIndex": 0, - "Children": [ - { - "$type": "Document", - "DocumentIndex": 0, - "Title": "Screen2D.cs", - "DocumentMoniker": "D:\\CPL\\Simulator\\DroneSimulator\\DroneSimulator\\Screen2D.cs", - "RelativeDocumentMoniker": "Screen2D.cs", - "ToolTip": "D:\\CPL\\Simulator\\DroneSimulator\\DroneSimulator\\Screen2D.cs", - "RelativeToolTip": "Screen2D.cs", - "ViewState": "AgIAAIgAAAAAAAAAAAAwwAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-03-27T13:13:30.215Z", - "EditorCaption": "" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/DroneSimulator/.vs/ProjectEvaluation/dronesimulator.metadata.v9.bin b/DroneSimulator/.vs/ProjectEvaluation/dronesimulator.metadata.v9.bin deleted file mode 100644 index b9c259d..0000000 Binary files a/DroneSimulator/.vs/ProjectEvaluation/dronesimulator.metadata.v9.bin and /dev/null differ diff --git a/DroneSimulator/.vs/ProjectEvaluation/dronesimulator.projects.v9.bin b/DroneSimulator/.vs/ProjectEvaluation/dronesimulator.projects.v9.bin deleted file mode 100644 index a6cc230..0000000 Binary files a/DroneSimulator/.vs/ProjectEvaluation/dronesimulator.projects.v9.bin and /dev/null differ diff --git a/DroneSimulator/.vs/ProjectEvaluation/dronesimulator.strings.v9.bin b/DroneSimulator/.vs/ProjectEvaluation/dronesimulator.strings.v9.bin deleted file mode 100644 index 78836ef..0000000 Binary files a/DroneSimulator/.vs/ProjectEvaluation/dronesimulator.strings.v9.bin and /dev/null differ diff --git a/DroneSimulator/Drone.cs b/DroneSimulator/Drone.cs index df65b3a..5d1d024 100644 --- a/DroneSimulator/Drone.cs +++ b/DroneSimulator/Drone.cs @@ -1,11 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.CodeDom; using System.Numerics; using System.Runtime.InteropServices; -using System.Text; -using System.Threading.Tasks; -using static System.Windows.Forms.AxHost; +using System.Security.Cryptography; namespace DroneSimulator { @@ -15,15 +11,19 @@ namespace DroneSimulator public float Mass; // Масса public bool Active; // Живой? public float Length; // Длинна лучей + public const float Dynamic = 10; // Динамика вращения public Vector3 PosXYZ, SpdXYZ, AccXYZ; // Положение в пространстве: Позиция, Скорость, Ускорение public Quaternion Quat; // Основной кватернион - public float Power = 0; // Тяга всех двигателей + public float Power = 0; // Тяга всех двигателей (0-1) + public float MaxPower; // Максимальная Тяга всех двигателей (КГ) public Vector3 SpdPRY, AccPRY; // Поворот в пространстве: pitch roll yaw public Vector3 Acc, Gyr; // Имитация: Акселерометр, Гироскоп public float LaserRange; // Имитация: Дальномер - private const float Gravity = 1.0f; + private uint DataTimer; + + private const float Gravity = 9.8f; private const float TO_GRAD = 180 / MathF.PI; private const float TO_RADI = MathF.PI / 180; @@ -33,69 +33,64 @@ namespace DroneSimulator private static int CounterID = 0; - - - public struct DataOut + public static byte[] getBytes(object data) { - public float AccX, AccY, AccZ; - public float GyrX, GyrY, GyrZ; - public float PosX, PosY; - public float LaserRange; + int size = Marshal.SizeOf(data); + byte[] arr = new byte[size]; - public byte[] getBytes() + IntPtr ptr = IntPtr.Zero; + try { - int size = Marshal.SizeOf(this); - byte[] arr = new byte[size]; - - IntPtr ptr = IntPtr.Zero; - try - { - ptr = Marshal.AllocHGlobal(size); - Marshal.StructureToPtr(this, ptr, true); - Marshal.Copy(ptr, arr, 0, size); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - return arr; + ptr = Marshal.AllocHGlobal(size); + Marshal.StructureToPtr(data, ptr, true); + Marshal.Copy(ptr, arr, 0, size); } + finally + { + Marshal.FreeHGlobal(ptr); + } + return arr; } - public struct DataIn + public static object fromBytes(byte[] arr, Type type) { - public float MotorUL, MotorUR, MotorDL, MotorDR; + object mem = new object(); - public void fromBytes(byte[] arr) + int size = Marshal.SizeOf(type); + IntPtr ptr = IntPtr.Zero; + try { - DataIn mem = new DataIn(); + ptr = Marshal.AllocHGlobal(size); - int size = Marshal.SizeOf(mem); - IntPtr ptr = IntPtr.Zero; - try - { - ptr = Marshal.AllocHGlobal(size); + Marshal.Copy(arr, 0, ptr, size); - Marshal.Copy(arr, 0, ptr, size); - - mem = (DataIn)Marshal.PtrToStructure(ptr, mem.GetType()); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - - this = mem; + mem = Marshal.PtrToStructure(ptr, type); } + finally + { + Marshal.FreeHGlobal(ptr); + } + + return mem; + } + + public struct DataVisual + { + public int ID; // Идентификатор + public float W, X, Y, Z; // Кватернион вращения + public float PosX, PosY, PosZ; // Координаты в пространстве + } + + public DataVisual GetVisual() + { + return new DataVisual() { ID = this.ID, W = this.Quat.W, X = this.Quat.X, Y = this.Quat.Y, Z = this.Quat.Z, PosX = this.PosXYZ.X, PosY = this.PosXYZ.Y, PosZ = this.PosXYZ.Z }; } private void ThreadFunction() { while (DroneThread != null) { - float time = Environment.TickCount - Timer; - Timer = Environment.TickCount; - Action(time / 100); + Action(Environment.TickCount); Thread.Sleep(1); } } @@ -104,7 +99,7 @@ namespace DroneSimulator { ID = id; Active = false; - PosXYZ = new Vector3(2000, 1000, 0); + PosXYZ = Vector3.Zero; SpdXYZ = Vector3.Zero; AccXYZ = Vector3.Zero; Quat = Quaternion.Identity; @@ -114,10 +109,11 @@ namespace DroneSimulator DroneThread.Start(); } - public int Create(float mass, float len) + public int Create(float power, float mass, float len) { - Mass = Range(mass); + Mass = mass; Length = len; + MaxPower = power; Active = true; @@ -170,25 +166,30 @@ namespace DroneSimulator return new Vector4(GetAngle(grav.Y, grav.X, grav.Z), GetAngle(-grav.X, grav.Y, grav.Z), yaw, grav.Z); } - public void Action(float time) + public void Action(int tick) { + float time = (tick - Timer) / 1000.0f; + Timer = tick; + if (!Active) return; float flow = Power; - if (PosXYZ.Z < 100) + if (PosXYZ.Z < 0.3f) { flow += flow * 0.1f; // Воздушная подушка } - Quaternion pow = Quaternion.Inverse(Quat) * new Quaternion(0, 0, flow, 0) * Quat; - AccXYZ = new Vector3(pow.X, pow.Y, pow.Z) / Mass; + SpdPRY += AccPRY * (Dynamic * time / (Mass * Length)); - SpdPRY += AccPRY * time / (Mass * Length); + Quaternion pow = Quaternion.Inverse(Quat) * new Quaternion(0, 0, flow, 0) * Quat; + AccXYZ = new Vector3(pow.X, pow.Y, pow.Z) * (Gravity / Mass); SpdXYZ += (AccXYZ + new Vector3(0, 0, -Gravity)) * time; PosXYZ += SpdXYZ * time; + AccXYZ /= Gravity; // Вернуть измерения в G + if (PosXYZ.Z < 0) { SpdPRY = Vector3.Zero; @@ -196,7 +197,7 @@ namespace DroneSimulator SpdXYZ.Y = 0; Quat = Quaternion.Identity; } - else Rotate(SpdPRY.X, SpdPRY.Y, SpdPRY.Z); + else Rotate(SpdPRY.X * time, SpdPRY.Y * time, SpdPRY.Z * time); Vector4 ori = GetOrientation(); @@ -209,7 +210,7 @@ namespace DroneSimulator Active = false; // Сильно ударился о землю }*/ - /*if (MathF.Abs(ori.X) > 45 || MathF.Abs(ori.Y) > 45) + /*if (MathF.Abs(ori.X) > 20 || MathF.Abs(ori.Y) > 20) { Active = false; // Повредил винты при посадке }*/ @@ -222,13 +223,13 @@ namespace DroneSimulator } else { - /*if (ori.W < 0) + if (ori.W < 0) { - Active = false; // Перевернулся вверх ногами - }*/ + //Active = false; // Перевернулся вверх ногами + } Quaternion grav = new Quaternion(AccXYZ.X, AccXYZ.Y, AccXYZ.Z, 0); - grav = (Quat * grav) * Quaternion.Inverse(Quat); + //grav = (Quat * grav) * Quaternion.Inverse(Quat); // Инерциальный акселерометр (тест) Acc = new Vector3(grav.X, grav.Y, grav.Z); Gyr = SpdPRY; @@ -238,6 +239,8 @@ namespace DroneSimulator if (tilt < 90 && ori.W > 0) LaserRange = PosXYZ.Z / MathF.Cos(tilt); else LaserRange = float.MaxValue; } + + DataTimer = (uint)tick; } private float Range(float pow) @@ -245,7 +248,7 @@ namespace DroneSimulator if (pow > 1) pow = 1; if (pow < 0) pow = 0; - return pow; + return pow * MaxPower; } public void SetQadroPow(float ul, float ur, float dl, float dr) @@ -258,5 +261,237 @@ namespace DroneSimulator AccPRY.X = ((ul + ur) - (dl + dr)); AccPRY.Z = ((ul + dr) - (dl + ur)) / 4; } + + private void RecvDataMotor4(byte[] data) + { + DroneData.DataMotor4 mot = (DroneData.DataMotor4)fromBytes(data, typeof(DroneData.DataMotor4)); + /* обработка */ + SetQadroPow(mot.UL, mot.UR, mot.DL, mot.DR); + } + + private byte[] SendDataAcc() + { + DroneData.DataAcc acc = new DroneData.DataAcc(); + + acc.Head.Size = Marshal.SizeOf(typeof(DroneData.DataAcc)); + acc.Head.Mode = DroneData.DataMode.Response; + 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; + + return getBytes(acc); + } + + private byte[] SendDataGyr() + { + DroneData.DataGyr gyr = new DroneData.DataGyr(); + + gyr.Head.Size = Marshal.SizeOf(typeof(DroneData.DataGyr)); + gyr.Head.Mode = DroneData.DataMode.Response; + 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; + + return getBytes(gyr); + } + + private byte[] SendDataMag() + { + DroneData.DataMag mag = new DroneData.DataMag(); + + mag.Head.Size = Marshal.SizeOf(typeof(DroneData.DataMag)); + mag.Head.Mode = DroneData.DataMode.Response; + mag.Head.Type = DroneData.DataType.DataMag; + mag.Head.Time = (uint)Environment.TickCount; + + mag.Mag.X = 0; mag.Mag.Y = 0; mag.Mag.Z = 0; + mag.Time = DataTimer; + + return getBytes(mag); + } + + private byte[] SendDataRange() + { + DroneData.DataRange range = new DroneData.DataRange(); + + range.Head.Size = Marshal.SizeOf(typeof(DroneData.DataRange)); + range.Head.Mode = DroneData.DataMode.Response; + range.Head.Type = DroneData.DataType.DataRange; + range.Head.Time = (uint)Environment.TickCount; + + range.LiDAR = LaserRange; + range.Time = DataTimer; + + return getBytes(range); + } + + private byte[] SendDataLocal() + { + DroneData.DataLocal local = new DroneData.DataLocal(); + + local.Head.Size = Marshal.SizeOf(typeof(DroneData.DataLocal)); + local.Head.Mode = DroneData.DataMode.Response; + 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; + + return getBytes(local); + } + + private byte[]? ServerRequestResponse(DroneData.DataHead head, byte[] body) + { + byte[] zero = new byte[0]; + + switch (head.Type) + { + case DroneData.DataType.DataAcc: + { + if (head.Mode == DroneData.DataMode.Request) + { + // Запрос данных + return SendDataAcc(); + } + 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.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.DataMotor4: + { + if (head.Mode == DroneData.DataMode.Request) + { + // Запрос данных + // ... // + // + return zero; + } + else + { + // Пришли данные + RecvDataMotor4(body); + return zero; + } + } + } + + return zero; + } + + private const int DroneStreamCount = 512; + private byte[] DroneStreamData = new byte[DroneStreamCount]; + private int DroneStreamIndex = 0; + private DroneData.DataHead DroneStreamHead = new DroneData.DataHead() { Mode = DroneData.DataMode.None, Size = 0, Type = DroneData.DataType.None }; + + public List? DataStream(byte[]? data, int size) + { + List ret = new List(); + + if (data == null) return ret; // Последовательность не сформирована, ждать данных + + if (size + DroneStreamIndex > DroneStreamCount) return null; // Ошибка переполнения, поток сломан (конец) + + Array.Copy(data, 0, DroneStreamData, DroneStreamIndex, size); + DroneStreamIndex += size; + + while (true) + { + if (DroneStreamHead.Size == 0) // Заголовок ещё не получен + { + if (DroneStreamIndex < DroneData.DataHead.StrLen) return ret; // Нечего слать + DroneStreamHead = (DroneData.DataHead)fromBytes(DroneStreamData, typeof(DroneData.DataHead)); + } + + if (DroneStreamHead.Size > DroneStreamIndex) break; // Пакет ещё не полный + + byte[] body = new byte[DroneStreamHead.Size]; + + Array.Copy(DroneStreamData, 0, body, 0, DroneStreamHead.Size); + + int shift = DroneStreamHead.Size; + + DroneStreamIndex -= shift; + Array.Copy(DroneStreamData, shift, DroneStreamData, 0, DroneStreamIndex); // Сдвигаем массив влево, убрав использованные данные + + DroneStreamHead.Size = 0; // Отменяем прошлый заголовок + + ret.Add(ServerRequestResponse(DroneStreamHead, body)); + } + + return ret; + } } } diff --git a/DroneSimulator/DroneData.cs b/DroneSimulator/DroneData.cs new file mode 100644 index 0000000..3fc0675 --- /dev/null +++ b/DroneSimulator/DroneData.cs @@ -0,0 +1,100 @@ +using System.Runtime.InteropServices; + +namespace DroneData +{ + public enum DataMode : ushort + { + None = 0, Response = 1, Request = 2 + }; + + public enum DataType : ushort + { + None = 0, Head = 1, + + // Output + DataAcc = 1001, DataGyr = 1002, DataMag = 1003, DataRange = 1004, DataLocal = 1005, + + // Input + DataMotor4 = 2001, DataMotor6 = 2002 + }; + + public struct DataHead + { + public int Size; + + public DataMode Mode; + public DataType Type; + + public uint Time; // + + static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataHead)); + } + + public struct XYZ { public float X, Y, Z; } + + public struct DataAcc + { + public DataHead Head; + public XYZ Acc; + + public uint Time; // + + static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataAcc)); + } + + public struct DataGyr + { + public DataHead Head; + public XYZ Gyr; + + public uint Time; // + + static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataGyr)); + } + + public struct DataMag + { + public DataHead Head; + public XYZ Mag; + + 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 uint Time; // + + static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataRange)); + } + + public struct DataMotor4 + { + public DataHead Head; + public float UL, UR, DL, DR; + + static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataMotor4)); + } + + public struct DataMotor6 + { + public DataHead Head; + public float UL, UR, LL, RR, DL, DR; + + 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 2997b8d..481fdfd 100644 --- a/DroneSimulator/FormMain.Designer.cs +++ b/DroneSimulator/FormMain.Designer.cs @@ -38,6 +38,10 @@ tabControl_Menu = new TabControl(); tabPage_Main = new TabPage(); groupBox_Visual = new GroupBox(); + numericUpDown_Visual_Limit = new NumericUpDown(); + label1 = new Label(); + label_Visual_Num = new Label(); + label3 = new Label(); button_Visual_Start = new Button(); numericUpDown_Visual_Port = new NumericUpDown(); label_Visual_Port = new Label(); @@ -57,18 +61,61 @@ 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(); tabControl_Menu.SuspendLayout(); tabPage_Main.SuspendLayout(); groupBox_Visual.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Visual_Limit).BeginInit(); ((System.ComponentModel.ISupportInitialize)numericUpDown_Visual_Port).BeginInit(); groupBox_Clients.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)numericUpDown_Clients_Limit).BeginInit(); ((System.ComponentModel.ISupportInitialize)numericUpDown_Clients_Port).BeginInit(); + tabPage_Model.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 @@ -144,18 +191,61 @@ // // groupBox_Visual // + groupBox_Visual.Controls.Add(numericUpDown_Visual_Limit); + groupBox_Visual.Controls.Add(label1); + groupBox_Visual.Controls.Add(label_Visual_Num); + groupBox_Visual.Controls.Add(label3); groupBox_Visual.Controls.Add(button_Visual_Start); groupBox_Visual.Controls.Add(numericUpDown_Visual_Port); groupBox_Visual.Controls.Add(label_Visual_Port); groupBox_Visual.Dock = DockStyle.Top; groupBox_Visual.Location = new Point(3, 83); groupBox_Visual.Name = "groupBox_Visual"; - groupBox_Visual.Size = new Size(204, 62); + groupBox_Visual.Size = new Size(204, 91); groupBox_Visual.TabIndex = 2; groupBox_Visual.TabStop = false; groupBox_Visual.Tag = "#visual"; groupBox_Visual.Text = "Visual"; // + // numericUpDown_Visual_Limit + // + numericUpDown_Visual_Limit.Location = new Point(44, 57); + numericUpDown_Visual_Limit.Maximum = new decimal(new int[] { 10, 0, 0, 0 }); + numericUpDown_Visual_Limit.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDown_Visual_Limit.Name = "numericUpDown_Visual_Limit"; + numericUpDown_Visual_Limit.Size = new Size(42, 23); + numericUpDown_Visual_Limit.TabIndex = 13; + numericUpDown_Visual_Limit.Value = new decimal(new int[] { 1, 0, 0, 0 }); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(6, 59); + label1.Name = "label1"; + label1.Size = new Size(37, 15); + label1.TabIndex = 12; + label1.Tag = "#clients_limit"; + label1.Text = "Limit:"; + // + // label_Visual_Num + // + label_Visual_Num.AutoSize = true; + label_Visual_Num.Location = new Point(161, 59); + label_Visual_Num.Name = "label_Visual_Num"; + label_Visual_Num.Size = new Size(13, 15); + label_Visual_Num.TabIndex = 11; + label_Visual_Num.Text = "0"; + // + // label3 + // + label3.AutoSize = true; + label3.Location = new Point(112, 59); + label3.Name = "label3"; + label3.Size = new Size(43, 15); + label3.TabIndex = 10; + label3.Tag = "#clients_count"; + label3.Text = "Count:"; + // // button_Visual_Start // button_Visual_Start.Location = new Point(112, 22); @@ -165,6 +255,7 @@ button_Visual_Start.Tag = "#visual_start"; button_Visual_Start.Text = "Start"; button_Visual_Start.UseVisualStyleBackColor = true; + button_Visual_Start.Click += button_Visual_Start_Click; // // numericUpDown_Visual_Port // @@ -277,6 +368,9 @@ // // tabPage_Model // + tabPage_Model.Controls.Add(groupBox1); + tabPage_Model.Controls.Add(groupBox_Barometer); + tabPage_Model.Controls.Add(groupBox_GPS); tabPage_Model.Location = new Point(4, 24); tabPage_Model.Name = "tabPage_Model"; tabPage_Model.Padding = new Padding(3); @@ -353,6 +447,341 @@ 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); @@ -376,13 +805,28 @@ tabPage_Main.ResumeLayout(false); groupBox_Visual.ResumeLayout(false); groupBox_Visual.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_Visual_Limit).EndInit(); ((System.ComponentModel.ISupportInitialize)numericUpDown_Visual_Port).EndInit(); groupBox_Clients.ResumeLayout(false); groupBox_Clients.PerformLayout(); ((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(); + groupBox1.ResumeLayout(false); + groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_OF_Accur).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown_OF_Freq).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDown1).EndInit(); ResumeLayout(false); PerformLayout(); } @@ -416,5 +860,40 @@ private Panel panel1; private ToolStripMenuItem exitToolStripMenuItem; private System.Windows.Forms.Timer timer_Test; + private NumericUpDown numericUpDown_Visual_Limit; + private Label label1; + 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 Label label8; + private Label label10; + private NumericUpDown textBox_GPS_Accur; + private Label label11; + private GroupBox groupBox1; + private Label label12; + private NumericUpDown numericUpDown_OF_Accur; + private Label label13; + private NumericUpDown numericUpDown_OF_Freq; + private Label label14; + private Label label15; + private CheckBox checkBox_GPS_Enable; + private Label label17; + private NumericUpDown numericUpDown1; + private Label label16; + private CheckBox checkBox_OF_Enable; + private CheckBox checkBox_Bar_Enable; } } diff --git a/DroneSimulator/FormMain.cs b/DroneSimulator/FormMain.cs index b7926ff..469e08b 100644 --- a/DroneSimulator/FormMain.cs +++ b/DroneSimulator/FormMain.cs @@ -4,6 +4,9 @@ using System.Windows.Forms; using static System.Net.Mime.MediaTypeNames; using static System.Runtime.InteropServices.JavaScript.JSType; using System.Security.Policy; +using System.Runtime.InteropServices; +using System.CodeDom; +using System.Linq; namespace DroneSimulator { @@ -12,6 +15,7 @@ namespace DroneSimulator Screen2D screen2D = null; NetServerClients netServerClient = new NetServerClients(); + NetServerVisual netServerVisual = new NetServerVisual(); List AllDrones = new List(); @@ -20,7 +24,7 @@ namespace DroneSimulator InitializeComponent(); } - private void ConnectionCallback(object o) + private void ClientConnectionCallback(object o) { NetServerClients.ConnectData data = (NetServerClients.ConnectData)o; @@ -32,7 +36,7 @@ namespace DroneSimulator if (data.Connect) { Drone drone = new Drone(data.ID); - drone.Create(0.5f, 10.0f); + drone.Create(1.0f, 0.5f, 1.0f); screen2D.CreateDrone(Color.Red, data.ID); @@ -53,7 +57,7 @@ namespace DroneSimulator } } - private void ReceiveCallback(object o) + private void ClientReceiveCallback(object o) { NetServerClients.ReceiveData data = (NetServerClients.ReceiveData)o; @@ -68,30 +72,27 @@ namespace DroneSimulator if (drone == null) return; - Drone.DataIn id = new Drone.DataIn(); + List? send = drone.DataStream(data.Buffer, data.Size); - id.fromBytes(data.Buffer); - - drone.SetQadroPow(id.MotorUL, id.MotorUR, id.MotorDL, id.MotorDR); - - Drone.DataOut od = new Drone.DataOut(); - - od.AccX= drone.Acc.X; od.AccY= drone.Acc.Y; od.AccZ= drone.Acc.Z; - od.GyrX = drone.Gyr.X; od.GyrY = drone.Gyr.Y; od.GyrZ = drone.Gyr.Z; - od.PosX= drone.PosXYZ.X; od.PosY = drone.PosXYZ.Y; - od.LaserRange = drone.LaserRange; - - data.Client.Send(od.getBytes()); + if (send == null) return; + try + { + foreach (byte[]? b in send) + { + if (b != null) data.Client?.Send(b); + } + } + catch { } } private void button_Client_Start_Click(object sender, EventArgs e) { - var done = netServerClient.StartServer((int)numericUpDown_Clients_Port.Value, (int)numericUpDown_Clients_Limit.Value, ConnectionCallback, ReceiveCallback); + var done = netServerClient.StartServer((int)numericUpDown_Clients_Port.Value, (int)numericUpDown_Clients_Limit.Value, ClientConnectionCallback, ClientReceiveCallback); switch (done) { case NetServerClients.ServerState.Error: { - MessageBox.Show("Error to start server"); + MessageBox.Show("Error to start clients server", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); break; } case NetServerClients.ServerState.Start: @@ -102,6 +103,7 @@ namespace DroneSimulator } case NetServerClients.ServerState.Stop: { + label_Clients_Num.Text = "0"; button_Client_Start.Text = "Start"; button_Client_Start.BackColor = Color.Transparent; break; @@ -137,12 +139,70 @@ namespace DroneSimulator { screen2D.Move(d.ID, d.PosXYZ, d.GetOrientation()); } - + screen2D.DrawScene(); } private void Form_Main_FormClosing(object sender, FormClosingEventArgs e) { foreach (Drone d in AllDrones) d.Close(); } + + private void VisualConnectionCallback(object o) + { + NetServerVisual.ConnectData data = (NetServerVisual.ConnectData)o; + + Invoke((MethodInvoker)delegate + { + label_Clients_Num.Text = data.Count.ToString(); + }); + + if (data.Connect) + { + //--- + } + else + { + //--- + } + } + + private void VisualReceiveCallback(object o) + { + NetServerVisual.ReceiveData data = (NetServerVisual.ReceiveData)o; + + foreach (Drone d in AllDrones) + { + Drone.DataVisual v = d.GetVisual(); + + try { data.Client.Send(Drone.getBytes(v)); } + catch { } + } + } + + private void button_Visual_Start_Click(object sender, EventArgs e) + { + var done = netServerVisual.StartServer((int)numericUpDown_Visual_Port.Value, (int)numericUpDown_Visual_Limit.Value, VisualConnectionCallback, VisualReceiveCallback); + switch (done) + { + case NetServerVisual.ServerState.Error: + { + MessageBox.Show("Error to start visual server", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + break; + } + case NetServerVisual.ServerState.Start: + { + button_Visual_Start.Text = "Stop"; + button_Visual_Start.BackColor = Color.LimeGreen; + break; + } + case NetServerVisual.ServerState.Stop: + { + label_Visual_Num.Text = "0"; + button_Visual_Start.Text = "Start"; + button_Visual_Start.BackColor = Color.Transparent; + break; + } + } + } } } diff --git a/DroneSimulator/NetServerClients.cs b/DroneSimulator/NetServerClients.cs index d8ebdce..8bde955 100644 --- a/DroneSimulator/NetServerClients.cs +++ b/DroneSimulator/NetServerClients.cs @@ -1,10 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Net.Sockets; +using System.Net.Sockets; using System.Net; +using System.Drawing; namespace DroneSimulator { @@ -21,8 +17,9 @@ namespace DroneSimulator public class ReceiveData { + public int ID; - public byte[]? Buffer; + public byte[] Buffer; public int Size; public Socket? Client; @@ -32,13 +29,13 @@ namespace DroneSimulator { public int ID; public Socket? workSocket = null; - public const int BufferSize = 1024; - public byte[] buffer = new byte[BufferSize]; + public const int count = 1024; + public byte[] buffer = new byte[count]; } private int SocketID = 0; private int SocketLimit; - private Socket? ServerSocket = null; + private Socket? ServerSocket; private List ClientSockets = new List(); public delegate void ServerCallback(object o); @@ -46,14 +43,21 @@ namespace DroneSimulator private ServerCallback? ConnectionCallback; private ServerCallback? ReceiveCallback; + private bool Active = false; + public enum ServerState { Error, Start, Stop }; public ServerState StartServer(int Port, int Limit, ServerCallback Connection, ServerCallback Receive) { - if (ServerSocket != null) + if (Active) { - ServerSocket.Close(); - foreach (ClientData c in ClientSockets) { c.workSocket?.Shutdown(SocketShutdown.Both); c.workSocket?.Close(); } + ServerSocket?.Close(); + foreach (ClientData c in ClientSockets) + { + try { c.workSocket?.Shutdown(SocketShutdown.Both); } catch { } + c.workSocket?.Close(); + } + ClientSockets.Clear(); return ServerState.Stop; } @@ -70,8 +74,9 @@ namespace DroneSimulator ServerSocket.Bind(ip); ServerSocket.Listen(10); ServerSocket.BeginAccept(new AsyncCallback(AcceptCallback), ServerSocket); + Active = true; } - catch { ServerSocket.Close(); ServerSocket = null; return ServerState.Error; } + catch { ServerSocket.Close(); return ServerState.Error; } return ServerState.Start; } @@ -84,7 +89,7 @@ namespace DroneSimulator Socket handler; try { handler = listener.EndAccept(ar); } - catch{ ServerSocket?.Close(); ServerSocket = null; return; } + catch{ ServerSocket?.Close(); Active = false; return; } if (SocketLimit > ClientSockets.Count) { @@ -98,7 +103,7 @@ namespace DroneSimulator ConnectionCallback(new ConnectData { ID = clientData.ID, Connect = true, Count = ClientSockets.Count, Client = handler }); - handler.BeginReceive(clientData.buffer, 0, ClientData.BufferSize, 0, new AsyncCallback(ReadCallback), clientData); + handler.BeginReceive(clientData.buffer, 0, ClientData.count, 0, new AsyncCallback(ReadCallback), clientData); } else handler.Close(); @@ -127,7 +132,11 @@ namespace DroneSimulator ReceiveCallback(new ReceiveData { ID = cd.ID, Buffer = cd.buffer, Size = bytes, Client = cd.workSocket }); - cd.workSocket?.BeginReceive(cd.buffer, 0, ClientData.BufferSize, 0, new AsyncCallback(ReadCallback), cd); + try + { + cd.workSocket?.BeginReceive(cd.buffer, 0, ClientData.count, 0, new AsyncCallback(ReadCallback), cd); + } + catch { } } } } diff --git a/DroneSimulator/NetServerVisual.cs b/DroneSimulator/NetServerVisual.cs new file mode 100644 index 0000000..41dd579 --- /dev/null +++ b/DroneSimulator/NetServerVisual.cs @@ -0,0 +1,134 @@ +using System.Net.Sockets; +using System.Net; + +namespace DroneSimulator +{ + internal class NetServerVisual + { + public class ConnectData + { + public bool Connect; + public int Count; + + public Socket? Client; + } + + public class ReceiveData + { + public byte[]? Buffer; + public int Size; + + public Socket? Client; + } + + private class ClientData + { + public Socket? workSocket = null; + public const int BufferSize = 1024; + public byte[] buffer = new byte[BufferSize]; + } + + private int SocketLimit; + private Socket? ServerSocket; + private List ClientSockets = new List(); + + public delegate void ServerCallback(object o); + + private ServerCallback? ConnectionCallback; + private ServerCallback? ReceiveCallback; + + private bool Active = false; + + public enum ServerState { Error, Start, Stop }; + + public ServerState StartServer(int Port, int Limit, ServerCallback Connection, ServerCallback Receive) + { + if (Active) + { + ServerSocket?.Close(); + foreach (ClientData c in ClientSockets) + { + try { c.workSocket?.Shutdown(SocketShutdown.Both); } catch { } + c.workSocket?.Close(); + } + ClientSockets.Clear(); + return ServerState.Stop; + } + + ConnectionCallback = Connection; + ReceiveCallback = Receive; + + SocketLimit = Limit; + + IPEndPoint ip = new(IPAddress.Any, Port); + ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + + try + { + ServerSocket.Bind(ip); + ServerSocket.Listen(10); + ServerSocket.BeginAccept(new AsyncCallback(AcceptCallback), ServerSocket); + Active = true; + } + catch { ServerSocket.Close(); return ServerState.Error; } + + return ServerState.Start; + } + + public void AcceptCallback(IAsyncResult ar) + { + Socket listener = (Socket)ar.AsyncState; + if (listener == null) return; + + Socket handler; + + try { handler = listener.EndAccept(ar); } + catch{ ServerSocket?.Close(); Active = false; return; } + + if (SocketLimit > ClientSockets.Count) + { + ClientData clientData = new ClientData(); + + clientData.workSocket = handler; + + ClientSockets.Add(clientData); + + ConnectionCallback(new ConnectData { Connect = true, Count = ClientSockets.Count, Client = handler }); + + handler.BeginReceive(clientData.buffer, 0, ClientData.BufferSize, 0, new AsyncCallback(ReadCallback), clientData); + } + else handler.Close(); + + listener.BeginAccept(new AsyncCallback(AcceptCallback), listener); + } + + public void ReadCallback(IAsyncResult ar) + { + ClientData cd = (ClientData)ar.AsyncState; + if (cd == null) return; + + int bytes = 0; + try { bytes = cd.workSocket.EndReceive(ar); } + catch { } + + if (bytes == 0) + { + cd.workSocket?.Close(); + + ClientSockets.Remove(cd); + + ConnectionCallback(new ConnectData { Connect = false, Count = ClientSockets.Count, Client = null }); + + return; + } + + ReceiveCallback(new ReceiveData { Buffer = cd.buffer, Size = bytes, Client = cd.workSocket }); + + try + { + cd.workSocket?.BeginReceive(cd.buffer, 0, ClientData.BufferSize, 0, new AsyncCallback(ReadCallback), cd); + } + catch { } + } + } +} diff --git a/DroneSimulator/Screen2D.cs b/DroneSimulator/Screen2D.cs index f8f3854..c967b1c 100644 --- a/DroneSimulator/Screen2D.cs +++ b/DroneSimulator/Screen2D.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Numerics; -using System.Reflection.Metadata; -using System.Text; -using System.Threading.Tasks; +using System.Numerics; namespace DroneSimulator { @@ -30,6 +24,7 @@ namespace DroneSimulator public int Azimuth = 0; } + private float Scale = 100; private DrawCallback drawCallback; private Bitmap MainArea = new Bitmap(4096, 2560); private List DroneList = new List(); @@ -167,6 +162,11 @@ namespace DroneSimulator const float TO_GRAD = 180 / MathF.PI; const float TO_RADI = MathF.PI / 180; + pos *= Scale; + + pos.X += MainArea.Width / 2; + pos.Y += MainArea.Height / 2; + foreach (var d in DroneList) { if (d.ID != id) continue; diff --git a/DroneSimulator/bin/Debug/net9.0-windows/DroneSimulator.deps.json b/DroneSimulator/bin/Debug/net9.0-windows/DroneSimulator.deps.json deleted file mode 100644 index fbaa818..0000000 --- a/DroneSimulator/bin/Debug/net9.0-windows/DroneSimulator.deps.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v9.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v9.0": { - "DroneSimulator/1.0.0": { - "runtime": { - "DroneSimulator.dll": {} - } - } - } - }, - "libraries": { - "DroneSimulator/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - } - } -} \ No newline at end of file diff --git a/DroneSimulator/bin/Debug/net9.0-windows/DroneSimulator.dll b/DroneSimulator/bin/Debug/net9.0-windows/DroneSimulator.dll deleted file mode 100644 index d16af7e..0000000 Binary files a/DroneSimulator/bin/Debug/net9.0-windows/DroneSimulator.dll and /dev/null differ diff --git a/DroneSimulator/bin/Debug/net9.0-windows/DroneSimulator.exe b/DroneSimulator/bin/Debug/net9.0-windows/DroneSimulator.exe deleted file mode 100644 index 4233390..0000000 Binary files a/DroneSimulator/bin/Debug/net9.0-windows/DroneSimulator.exe and /dev/null differ diff --git a/DroneSimulator/bin/Debug/net9.0-windows/DroneSimulator.pdb b/DroneSimulator/bin/Debug/net9.0-windows/DroneSimulator.pdb deleted file mode 100644 index 6417c5e..0000000 Binary files a/DroneSimulator/bin/Debug/net9.0-windows/DroneSimulator.pdb and /dev/null differ diff --git a/DroneSimulator/bin/Debug/net9.0-windows/DroneSimulator.runtimeconfig.json b/DroneSimulator/bin/Debug/net9.0-windows/DroneSimulator.runtimeconfig.json deleted file mode 100644 index 68ec4b9..0000000 --- a/DroneSimulator/bin/Debug/net9.0-windows/DroneSimulator.runtimeconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "net9.0", - "frameworks": [ - { - "name": "Microsoft.NETCore.App", - "version": "9.0.0" - }, - { - "name": "Microsoft.WindowsDesktop.App", - "version": "9.0.0" - } - ], - "configProperties": { - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false, - "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false - } - } -} \ No newline at end of file diff --git a/DroneSimulator/obj/Debug/net9.0-windows/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/DroneSimulator/obj/Debug/net9.0-windows/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs deleted file mode 100644 index feda5e9..0000000 --- a/DroneSimulator/obj/Debug/net9.0-windows/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs +++ /dev/null @@ -1,4 +0,0 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.AssemblyInfo.cs b/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.AssemblyInfo.cs deleted file mode 100644 index a494b3c..0000000 --- a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.AssemblyInfo.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("DroneSimulator")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] -[assembly: System.Reflection.AssemblyProductAttribute("DroneSimulator")] -[assembly: System.Reflection.AssemblyTitleAttribute("DroneSimulator")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] -[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")] -[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")] - -// Создано классом WriteCodeFragment MSBuild. - diff --git a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.AssemblyInfoInputs.cache b/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.AssemblyInfoInputs.cache deleted file mode 100644 index ac31a13..0000000 --- a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.AssemblyInfoInputs.cache +++ /dev/null @@ -1 +0,0 @@ -7f461f329c2aabe3c068a957f4f02cdcdb168c359c556cd0c46598798ec3c65d diff --git a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.Form_Main.resources b/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.Form_Main.resources deleted file mode 100644 index 9a5a677..0000000 Binary files a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.Form_Main.resources and /dev/null differ diff --git a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.GeneratedMSBuildEditorConfig.editorconfig b/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.GeneratedMSBuildEditorConfig.editorconfig deleted file mode 100644 index 62904fc..0000000 --- a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.GeneratedMSBuildEditorConfig.editorconfig +++ /dev/null @@ -1,22 +0,0 @@ -is_global = true -build_property.ApplicationManifest = -build_property.StartupObject = -build_property.ApplicationDefaultFont = -build_property.ApplicationHighDpiMode = -build_property.ApplicationUseCompatibleTextRendering = -build_property.ApplicationVisualStyles = -build_property.TargetFramework = net9.0-windows -build_property.TargetPlatformMinVersion = 7.0 -build_property.UsingMicrosoftNETSdkWeb = -build_property.ProjectTypeGuids = -build_property.InvariantGlobalization = -build_property.PlatformNeutralAssembly = -build_property.EnforceExtendedAnalyzerRules = -build_property._SupportedPlatformList = Linux,macOS,Windows -build_property.RootNamespace = DroneSimulator -build_property.ProjectDir = D:\CPL\Simulator\DroneSimulator\DroneSimulator\ -build_property.EnableComHosting = -build_property.EnableGeneratedComInterfaceComImportInterop = -build_property.CsWinRTUseWindowsUIXamlProjections = false -build_property.EffectiveAnalysisLevelStyle = 9.0 -build_property.EnableCodeStyleSeverity = diff --git a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.GlobalUsings.g.cs b/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.GlobalUsings.g.cs deleted file mode 100644 index 84bbb89..0000000 --- a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.GlobalUsings.g.cs +++ /dev/null @@ -1,10 +0,0 @@ -// -global using global::System; -global using global::System.Collections.Generic; -global using global::System.Drawing; -global using global::System.IO; -global using global::System.Linq; -global using global::System.Net.Http; -global using global::System.Threading; -global using global::System.Threading.Tasks; -global using global::System.Windows.Forms; diff --git a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.assets.cache b/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.assets.cache deleted file mode 100644 index c6f44be..0000000 Binary files a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.assets.cache and /dev/null differ diff --git a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.csproj.BuildWithSkipAnalyzers b/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.csproj.BuildWithSkipAnalyzers deleted file mode 100644 index e69de29..0000000 diff --git a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.csproj.CoreCompileInputs.cache b/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.csproj.CoreCompileInputs.cache deleted file mode 100644 index 50ef240..0000000 --- a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.csproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -051ffb89f1ee627ab3b9aaef920afd665a18f0f3c3fe82852812d5c6608dcb30 diff --git a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.csproj.FileListAbsolute.txt b/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.csproj.FileListAbsolute.txt deleted file mode 100644 index c46d5df..0000000 --- a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.csproj.FileListAbsolute.txt +++ /dev/null @@ -1,48 +0,0 @@ -R:\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.exe -R:\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.deps.json -R:\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.runtimeconfig.json -R:\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.dll -R:\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.pdb -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.Form1.resources -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.csproj.GenerateResource.cache -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.GeneratedMSBuildEditorConfig.editorconfig -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.AssemblyInfoInputs.cache -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.AssemblyInfo.cs -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.csproj.CoreCompileInputs.cache -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.dll -R:\DroneSimulator\obj\Debug\net9.0-windows\refint\DroneSimulator.dll -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.pdb -R:\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.genruntimeconfig.cache -R:\DroneSimulator\obj\Debug\net9.0-windows\ref\DroneSimulator.dll -D:\Files\Main\Projects\Fly\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.exe -D:\Files\Main\Projects\Fly\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.deps.json -D:\Files\Main\Projects\Fly\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.runtimeconfig.json -D:\Files\Main\Projects\Fly\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.dll -D:\Files\Main\Projects\Fly\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.pdb -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.csproj.GenerateResource.cache -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.GeneratedMSBuildEditorConfig.editorconfig -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.AssemblyInfoInputs.cache -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.AssemblyInfo.cs -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.csproj.CoreCompileInputs.cache -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.dll -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\refint\DroneSimulator.dll -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.pdb -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.genruntimeconfig.cache -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\ref\DroneSimulator.dll -D:\Files\Main\Projects\Fly\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.Form_Main.resources -D:\CPL\Simulator\DroneSimulator\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.exe -D:\CPL\Simulator\DroneSimulator\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.deps.json -D:\CPL\Simulator\DroneSimulator\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.runtimeconfig.json -D:\CPL\Simulator\DroneSimulator\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.dll -D:\CPL\Simulator\DroneSimulator\DroneSimulator\bin\Debug\net9.0-windows\DroneSimulator.pdb -D:\CPL\Simulator\DroneSimulator\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.Form_Main.resources -D:\CPL\Simulator\DroneSimulator\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.csproj.GenerateResource.cache -D:\CPL\Simulator\DroneSimulator\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.GeneratedMSBuildEditorConfig.editorconfig -D:\CPL\Simulator\DroneSimulator\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.AssemblyInfoInputs.cache -D:\CPL\Simulator\DroneSimulator\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.AssemblyInfo.cs -D:\CPL\Simulator\DroneSimulator\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.csproj.CoreCompileInputs.cache -D:\CPL\Simulator\DroneSimulator\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.dll -D:\CPL\Simulator\DroneSimulator\DroneSimulator\obj\Debug\net9.0-windows\refint\DroneSimulator.dll -D:\CPL\Simulator\DroneSimulator\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.pdb -D:\CPL\Simulator\DroneSimulator\DroneSimulator\obj\Debug\net9.0-windows\DroneSimulator.genruntimeconfig.cache -D:\CPL\Simulator\DroneSimulator\DroneSimulator\obj\Debug\net9.0-windows\ref\DroneSimulator.dll diff --git a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.csproj.GenerateResource.cache b/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.csproj.GenerateResource.cache deleted file mode 100644 index 7c21443..0000000 Binary files a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.csproj.GenerateResource.cache and /dev/null differ diff --git a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.designer.deps.json b/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.designer.deps.json deleted file mode 100644 index 360ddb4..0000000 --- a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.designer.deps.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v9.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v9.0": {} - }, - "libraries": {} -} \ No newline at end of file diff --git a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.designer.runtimeconfig.json b/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.designer.runtimeconfig.json deleted file mode 100644 index 62eff55..0000000 --- a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.designer.runtimeconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "net9.0", - "frameworks": [ - { - "name": "Microsoft.NETCore.App", - "version": "9.0.0" - }, - { - "name": "Microsoft.WindowsDesktop.App", - "version": "9.0.0" - } - ], - "additionalProbingPaths": [ - "C:\\Users\\USER\\.dotnet\\store\\|arch|\\|tfm|", - "C:\\Users\\USER\\.nuget\\packages", - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configProperties": { - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false, - "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false, - "Microsoft.NETCore.DotNetHostPolicy.SetAppPaths": true - } - } -} \ No newline at end of file diff --git a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.dll b/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.dll deleted file mode 100644 index d16af7e..0000000 Binary files a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.dll and /dev/null differ diff --git a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.genruntimeconfig.cache b/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.genruntimeconfig.cache deleted file mode 100644 index fc5d767..0000000 --- a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.genruntimeconfig.cache +++ /dev/null @@ -1 +0,0 @@ -77eb2f8d5fd7b96d896def58f5f04d71ddf79c26314f987f4254b0ca5d5a8991 diff --git a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.pdb b/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.pdb deleted file mode 100644 index 6417c5e..0000000 Binary files a/DroneSimulator/obj/Debug/net9.0-windows/DroneSimulator.pdb and /dev/null differ diff --git a/DroneSimulator/obj/Debug/net9.0-windows/apphost.exe b/DroneSimulator/obj/Debug/net9.0-windows/apphost.exe deleted file mode 100644 index 4233390..0000000 Binary files a/DroneSimulator/obj/Debug/net9.0-windows/apphost.exe and /dev/null differ diff --git a/DroneSimulator/obj/Debug/net9.0-windows/ref/DroneSimulator.dll b/DroneSimulator/obj/Debug/net9.0-windows/ref/DroneSimulator.dll deleted file mode 100644 index 5adc0ee..0000000 Binary files a/DroneSimulator/obj/Debug/net9.0-windows/ref/DroneSimulator.dll and /dev/null differ diff --git a/DroneSimulator/obj/Debug/net9.0-windows/refint/DroneSimulator.dll b/DroneSimulator/obj/Debug/net9.0-windows/refint/DroneSimulator.dll deleted file mode 100644 index 5adc0ee..0000000 Binary files a/DroneSimulator/obj/Debug/net9.0-windows/refint/DroneSimulator.dll and /dev/null differ diff --git a/DroneSimulator/obj/DroneSimulator.csproj.nuget.dgspec.json b/DroneSimulator/obj/DroneSimulator.csproj.nuget.dgspec.json deleted file mode 100644 index 51e9e8d..0000000 --- a/DroneSimulator/obj/DroneSimulator.csproj.nuget.dgspec.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "format": 1, - "restore": { - "D:\\CPL\\Simulator\\DroneSimulator\\DroneSimulator\\DroneSimulator.csproj": {} - }, - "projects": { - "D:\\CPL\\Simulator\\DroneSimulator\\DroneSimulator\\DroneSimulator.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "D:\\CPL\\Simulator\\DroneSimulator\\DroneSimulator\\DroneSimulator.csproj", - "projectName": "DroneSimulator", - "projectPath": "D:\\CPL\\Simulator\\DroneSimulator\\DroneSimulator\\DroneSimulator.csproj", - "packagesPath": "C:\\Users\\Дана\\.nuget\\packages\\", - "outputPath": "D:\\CPL\\Simulator\\DroneSimulator\\DroneSimulator\\obj\\", - "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configFilePaths": [ - "C:\\Users\\Дана\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net9.0-windows" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net9.0-windows7.0": { - "targetAlias": "net9.0-windows", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - }, - "SdkAnalysisLevel": "9.0.200" - }, - "frameworks": { - "net9.0-windows7.0": { - "targetAlias": "net9.0-windows", - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - }, - "Microsoft.WindowsDesktop.App.WindowsForms": { - "privateAssets": "none" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.201/PortableRuntimeIdentifierGraph.json" - } - } - } - } -} \ No newline at end of file diff --git a/DroneSimulator/obj/DroneSimulator.csproj.nuget.g.props b/DroneSimulator/obj/DroneSimulator.csproj.nuget.g.props deleted file mode 100644 index 02c5408..0000000 --- a/DroneSimulator/obj/DroneSimulator.csproj.nuget.g.props +++ /dev/null @@ -1,16 +0,0 @@ - - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - $(UserProfile)\.nuget\packages\ - C:\Users\Дана\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages - PackageReference - 6.13.2 - - - - - - \ No newline at end of file diff --git a/DroneSimulator/obj/DroneSimulator.csproj.nuget.g.targets b/DroneSimulator/obj/DroneSimulator.csproj.nuget.g.targets deleted file mode 100644 index 3dc06ef..0000000 --- a/DroneSimulator/obj/DroneSimulator.csproj.nuget.g.targets +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/DroneSimulator/obj/project.assets.json b/DroneSimulator/obj/project.assets.json deleted file mode 100644 index 54aadae..0000000 --- a/DroneSimulator/obj/project.assets.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "version": 3, - "targets": { - "net9.0-windows7.0": {} - }, - "libraries": {}, - "projectFileDependencyGroups": { - "net9.0-windows7.0": [] - }, - "packageFolders": { - "C:\\Users\\Дана\\.nuget\\packages\\": {}, - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "D:\\CPL\\Simulator\\DroneSimulator\\DroneSimulator\\DroneSimulator.csproj", - "projectName": "DroneSimulator", - "projectPath": "D:\\CPL\\Simulator\\DroneSimulator\\DroneSimulator\\DroneSimulator.csproj", - "packagesPath": "C:\\Users\\Дана\\.nuget\\packages\\", - "outputPath": "D:\\CPL\\Simulator\\DroneSimulator\\DroneSimulator\\obj\\", - "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configFilePaths": [ - "C:\\Users\\Дана\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net9.0-windows" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net9.0-windows7.0": { - "targetAlias": "net9.0-windows", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - }, - "SdkAnalysisLevel": "9.0.200" - }, - "frameworks": { - "net9.0-windows7.0": { - "targetAlias": "net9.0-windows", - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - }, - "Microsoft.WindowsDesktop.App.WindowsForms": { - "privateAssets": "none" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.201/PortableRuntimeIdentifierGraph.json" - } - } - } -} \ No newline at end of file diff --git a/DroneSimulator/obj/project.nuget.cache b/DroneSimulator/obj/project.nuget.cache deleted file mode 100644 index f08d225..0000000 --- a/DroneSimulator/obj/project.nuget.cache +++ /dev/null @@ -1,8 +0,0 @@ -{ - "version": 2, - "dgSpecHash": "PBD6ejBWMGo=", - "success": true, - "projectFilePath": "D:\\CPL\\Simulator\\DroneSimulator\\DroneSimulator\\DroneSimulator.csproj", - "expectedPackageFiles": [], - "logs": [] -} \ No newline at end of file