gongqiuhong 1 år sedan
förälder
incheckning
fc07a51ebc

+ 4 - 0
XdCxRhDW.App/Api/PosApi.cs

@@ -327,6 +327,10 @@ namespace XdCxRhDW.App.Api
             {
                 list[3] = list[4] = 999;
             }
+            else if (double.IsNaN(list[0]) || double.IsNaN(list[1]))
+            {
+                list[0] = list[1] = 999;
+            }
             return list;
         }
 

+ 1 - 1
XdCxRhDW.App/WebAPI/Controllers/PosController.cs

@@ -1223,7 +1223,7 @@ namespace XdCxRhDW.App.WebAPI
         {
             using (RHDWContext db = new RHDWContext())
             {
-                var runTask = await db.TaskInfos.Where(p => p.TaskState == EnumTaskState.Running && p.PosType == EnumPosType.X3TwoDto).FirstOrDefaultAsync();
+                var runTask = await db.TaskInfos.Where(p => p.TaskState == EnumTaskState.Running && p.PosType == EnumPosType.X3TwoDfo).FirstOrDefaultAsync();
                 if (runTask == null)
                 {
                     Serilog.Log.Warning($"接收到三星双频差带参定位(无星历)参数,由于任务没有运行中忽略本次定位!");

+ 9 - 1
XdCxRhDW.Sender/Form1.Designer.cs

@@ -95,7 +95,15 @@
             new DevExpress.XtraEditors.Controls.ImageComboBoxItem("三星双时差定位", "X3TwoDto", -1),
             new DevExpress.XtraEditors.Controls.ImageComboBoxItem("三星双时差无参定位", "X3TwoDtoNoPar", -1),
             new DevExpress.XtraEditors.Controls.ImageComboBoxItem("三星双频差定位", "X3TwoDfo", -1),
-            new DevExpress.XtraEditors.Controls.ImageComboBoxItem("双星时频差定位", "X2Dfo", -1)});
+            new DevExpress.XtraEditors.Controls.ImageComboBoxItem("双星时频差定位", "X2Dfo", -1),
+            new DevExpress.XtraEditors.Controls.ImageComboBoxItem("一星一地测向定位无星厉", "X1D1CXNoXL", -1),
+            new DevExpress.XtraEditors.Controls.ImageComboBoxItem("两星一地定位无星厉", "X2D1NoXL", -1),
+            new DevExpress.XtraEditors.Controls.ImageComboBoxItem("两星一地无参定位无星厉", "X2D1NoParNoXL", -1),
+            new DevExpress.XtraEditors.Controls.ImageComboBoxItem("融合定位无星厉", "RHNoXL", -1),
+            new DevExpress.XtraEditors.Controls.ImageComboBoxItem("三星双时差定位无星厉", "X3TwoDtoNoXL", -1),
+            new DevExpress.XtraEditors.Controls.ImageComboBoxItem("三星双时差无参定位无星厉", "X3TwoDtoNoParNoXL", -1),
+            new DevExpress.XtraEditors.Controls.ImageComboBoxItem("三星双频差定位无星厉", "X3TwoDfoNoXL", -1),
+            new DevExpress.XtraEditors.Controls.ImageComboBoxItem("双星时频差定位无星厉", "X2DfoNoXL", -1)});
             this.txtTskType.Size = new System.Drawing.Size(102, 22);
             this.txtTskType.StyleController = this.layoutControl1;
             this.txtTskType.TabIndex = 6;

+ 259 - 0
XdCxRhDW.Sender/Form1.cs

@@ -57,6 +57,8 @@ namespace XdCxRhDW.Sender
                                 url += "PosX1D1Async";
                                 foreach (var line in lines)
                                 {
+                                    if (cts1.IsCancellationRequested)
+                                        break;
                                     if (string.IsNullOrWhiteSpace(line)) continue;
                                     var items = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                                     X1D1PosDto dto = new X1D1PosDto()
@@ -89,6 +91,8 @@ namespace XdCxRhDW.Sender
                                 url += "PosX2D1Async";
                                 foreach (var line in lines)
                                 {
+                                    if (cts1.IsCancellationRequested)
+                                        break;
                                     if (string.IsNullOrWhiteSpace(line)) continue;
                                     var items = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                                     X2D1PosDto X2D1PosDto = new X2D1PosDto();
@@ -129,6 +133,8 @@ namespace XdCxRhDW.Sender
                                 url += "PosRHAsync";
                                 foreach (var line in lines)
                                 {
+                                    if (cts1.IsCancellationRequested)
+                                        break;
                                     if (string.IsNullOrWhiteSpace(line)) continue;
                                     var items = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                                     RHPosDto RHPosDto = new RHPosDto();
@@ -190,6 +196,147 @@ namespace XdCxRhDW.Sender
                                 Log($"已向[{txtAddr1.Text}]发送双星时频差定位仿真结果");
                             }
 
+
+
+
+
+                            if (tskType == "X1D1CXNoXL")//一星一地测向定位无星厉
+                            {
+                                var lines = File.ReadAllLines("Simulation_Data2023.dat");
+                                int idx = 1;
+                                url += "PosX1D1NoXlAsync";
+                                foreach (var line in lines)
+                                {
+                                    if (cts1.IsCancellationRequested)
+                                        break;
+                                    if (string.IsNullOrWhiteSpace(line)) continue;
+                                    var items = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
+                                    X1D1NoXlPosDto dto = new X1D1NoXlPosDto()
+                                    {
+                                        SigTime = DateTime.Now,
+                                        MainSatID= 19548,
+                                        XdDto = Convert.ToDouble(items[1]),
+                                        MainYbDto = Convert.ToDouble(items[2]),
+                                        CxRes = Convert.ToDouble(items[4]),
+                                        SatTxLon = IniFiles.ReadValue<double>("Station_Data2023", "卫星接收天线", "Lon"),
+                                        SatTxLat = IniFiles.ReadValue<double>("Station_Data2023", "卫星接收天线", "Lat"),
+                                        CdbTxLon = IniFiles.ReadValue<double>("Station_Data2023", "超短波接收天线", "Lon"),
+                                        CdbTxLat = IniFiles.ReadValue<double>("Station_Data2023", "超短波接收天线", "Lat"),
+                                        CxLon = IniFiles.ReadValue<double>("Station_Data2023", "侧向站", "Lon"),
+                                        CxLat = IniFiles.ReadValue<double>("Station_Data2023", "侧向站", "Lat"),
+                                        RefLon = IniFiles.ReadValue<double>("Station_Data2023", "参考站", "Lon"),
+                                        RefLat = IniFiles.ReadValue<double>("Station_Data2023", "参考站", "Lat"),
+                                    };
+                                    var content = new StringContent(JsonConvert.SerializeObject(dto), System.Text.Encoding.UTF8, "application/json");
+                                    var response = await client.PostAsync(url, content);
+                                    Log($"已向[{txtAddr1.Text}]发送第{idx++}条仿真结果");
+                                }
+                            }
+                            if (tskType == "X2D1NoXL")//两星一地定位无星厉
+                            {
+                                var lines = File.ReadAllLines("Simulation_Data2023.dat");
+                                int idx = 1;
+                                url += "PosX2D1NoXlAsync";
+                                foreach (var line in lines)
+                                {
+                                    if (cts1.IsCancellationRequested)
+                                        break;
+                                    if (string.IsNullOrWhiteSpace(line)) continue;
+                                    var items = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
+                                    X2D1NoXlPosDto X2D1NoXlPosDto = new X2D1NoXlPosDto();
+                                    X2D1NoXlPosDto.SigTime = DateTime.Now;
+                                    X2D1NoXlPosDto.MainSatID = 19548;
+                                    X2D1NoXlPosDto.AdjaSatID = 20253;
+                                    X2D1NoXlPosDto.SxDto = Convert.ToDouble(items[0]);
+                                    X2D1NoXlPosDto.XdDto = Convert.ToDouble(items[1]);
+                                    X2D1NoXlPosDto.MainYbDto = Convert.ToDouble(items[2]);
+                                    X2D1NoXlPosDto.AdjaYbDto = Convert.ToDouble(items[3]);
+                                    X2D1NoXlPosDto.SatTxLon = IniFiles.ReadValue<double>("Station_Data2023", "卫星接收天线", "Lon");
+                                    X2D1NoXlPosDto.SatTxLat = IniFiles.ReadValue<double>("Station_Data2023", "卫星接收天线", "Lat");
+                                    X2D1NoXlPosDto.CdbTxLon = IniFiles.ReadValue<double>("Station_Data2023", "超短波接收天线", "Lon");
+                                    X2D1NoXlPosDto.CdbTxLat = IniFiles.ReadValue<double>("Station_Data2023", "超短波接收天线", "Lat");
+                                    X2D1NoXlPosDto.RefLon = IniFiles.ReadValue<double>("Station_Data2023", "参考站", "Lon");
+                                    X2D1NoXlPosDto.RefLat = IniFiles.ReadValue<double>("Station_Data2023", "参考站", "Lat");
+                                    var content = new StringContent(JsonConvert.SerializeObject(X2D1NoXlPosDto), System.Text.Encoding.UTF8, "application/json");
+                                    var response = await client.PostAsync(url, content);
+                                    Log($"已向[{txtAddr1.Text}]发送第{idx++}条仿真结果");
+                                    Thread.Sleep(1000);
+                                }
+                            }
+                            if (tskType == "X2D1NoParNoXL")//两星一地无参定位无星厉
+                            {
+                                url += "PosX2D1NoXlNoParAsync";
+                                var res = X2D1NoParNoXL();
+                                var content = new StringContent(JsonConvert.SerializeObject(res), System.Text.Encoding.UTF8, "application/json");
+                                var response = await client.PostAsync(url, content);
+                                Log($"已向[{txtAddr1.Text}]发送两星一地无参定位仿真结果");
+                            }
+                            if (tskType == "RHNoXL")//融合定位无星厉
+                            {
+                                var lines = File.ReadAllLines("Simulation_Data2023.dat");
+                                int idx = 1;
+                                url += "PosRhNoXlAsync";
+                                foreach (var line in lines)
+                                {
+                                    if (cts1.IsCancellationRequested)
+                                        break;
+                                    if (string.IsNullOrWhiteSpace(line)) continue;
+                                    var items = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
+                                    RHNoXlPosDto RHNoXlPosDto = new RHNoXlPosDto();
+                                    RHNoXlPosDto.SigTime = DateTime.Now;
+                                    RHNoXlPosDto.MainSatID = 19548;
+                                    RHNoXlPosDto.AdjaSatID = 20253;
+                                    RHNoXlPosDto.SxDto = Convert.ToDouble(items[0]);
+                                    RHNoXlPosDto.XdDto = Convert.ToDouble(items[1]);
+                                    RHNoXlPosDto.MainYbDto = Convert.ToDouble(items[2]);
+                                    RHNoXlPosDto.AdjaYbDto = Convert.ToDouble(items[3]);
+                                    RHNoXlPosDto.CxRes = Convert.ToDouble(items[4]);
+                                    RHNoXlPosDto.SatTxLon = IniFiles.ReadValue<double>("Station_Data2023", "卫星接收天线", "Lon");
+                                    RHNoXlPosDto.SatTxLat = IniFiles.ReadValue<double>("Station_Data2023", "卫星接收天线", "Lat");
+                                    RHNoXlPosDto.CdbTxLon = IniFiles.ReadValue<double>("Station_Data2023", "超短波接收天线", "Lon");
+                                    RHNoXlPosDto.CdbTxLat = IniFiles.ReadValue<double>("Station_Data2023", "超短波接收天线", "Lat");
+                                    RHNoXlPosDto.CxLon = IniFiles.ReadValue<double>("Station_Data2023", "侧向站", "Lon");
+                                    RHNoXlPosDto.CxLat = IniFiles.ReadValue<double>("Station_Data2023", "侧向站", "Lat");
+                                    RHNoXlPosDto.RefLon = IniFiles.ReadValue<double>("Station_Data2023", "参考站", "Lon");
+                                    RHNoXlPosDto.RefLat = IniFiles.ReadValue<double>("Station_Data2023", "参考站", "Lat");
+                                    var content = new StringContent(JsonConvert.SerializeObject(RHNoXlPosDto), System.Text.Encoding.UTF8, "application/json");
+                                    var response = await client.PostAsync(url, content);
+                                    Log($"已向[{txtAddr1.Text}]发送第{idx++}条仿真结果");
+                                }
+                            }
+                            if (tskType == "X3TwoDtoNoXL")//三星双时差定位无星厉
+                            {
+                                url += "PosX3TwoDtoNoXlAsync";
+                                var res = X3TwoDtoNoXL();
+                                var content = new StringContent(JsonConvert.SerializeObject(res), System.Text.Encoding.UTF8, "application/json");
+                                var response = await client.PostAsync(url, content);
+                                Log($"已向[{txtAddr1.Text}]发送三星双时差定位仿真结果");
+                            }
+                            if (tskType == "X3TwoDtoNoParNoXL")//三星双时差无参定位无星厉
+                            {
+                                url += "PosX3TwoDtoNoXlNoParAsync";
+                                var res = X3TwoDtoNoParNoXL();
+                                var content = new StringContent(JsonConvert.SerializeObject(res), System.Text.Encoding.UTF8, "application/json");
+                                var response = await client.PostAsync(url, content);
+                                Log($"已向[{txtAddr1.Text}]发送三星双时差定位仿真结果");
+                            }
+                            if (tskType == "X3TwoDfoNoXL")//三星双频差定位无星厉
+                            {
+                                url += "PosX3TwoDfoNoXlAsync";
+                                var res = X3TwoDfoNoXL();
+                                var content = new StringContent(JsonConvert.SerializeObject(res), System.Text.Encoding.UTF8, "application/json");
+                                var response = await client.PostAsync(url, content);
+                                Log($"已向[{txtAddr1.Text}]发送三星双频差定位仿真结果");
+                            }
+                            if (tskType == "X2DfoNoXL")//双星时频差定位无星厉
+                            {
+                                url += "PosX2DtoDfoNoXlAsync";
+                                var res = X2DfoNoXL();
+                                var content = new StringContent(JsonConvert.SerializeObject(res), System.Text.Encoding.UTF8, "application/json");
+                                var response = await client.PostAsync(url, content);
+                                Log($"已向[{txtAddr1.Text}]发送双星时频差定位仿真结果");
+                            }
+
                         }
                         catch (Exception ex)
                         {
@@ -364,6 +511,118 @@ namespace XdCxRhDW.Sender
             return X2DtoDfoPosDto;
         }
 
+
+
+
+        /// <summary>
+        /// 两星一地定位无参无星厉
+        /// </summary>
+        private X2D1NoXlNoParlPosDto X2D1NoParNoXL()
+        {
+            X2D1NoXlNoParlPosDto X2D1NoXlNoParlPosDto = new X2D1NoXlNoParlPosDto();
+            X2D1NoXlNoParlPosDto.SigTime = DateTime.Now;
+            X2D1NoXlNoParlPosDto.MainSatID = 19548;
+            X2D1NoXlNoParlPosDto.AdjaSatID = 20253;
+            X2D1NoXlNoParlPosDto.SxDto = -0.002198485309353 * 1e6;
+            X2D1NoXlNoParlPosDto.XdDto = 0.245961726007262 * 1e6;
+            X2D1NoXlNoParlPosDto.SatTxLon = 118.8833;
+            X2D1NoXlNoParlPosDto.SatTxLat = 32.0667;
+            X2D1NoXlNoParlPosDto.CdbTxLon = 109.4082;
+            X2D1NoXlNoParlPosDto.CdbTxLat = 18.3878;
+            return X2D1NoXlNoParlPosDto;
+        }
+
+        /// <summary>
+        /// 三星双时差定位无星厉
+        /// </summary>
+        private X3TwoDtoNoXlPosDto X3TwoDtoNoXL()
+        {
+            X3TwoDtoNoXlPosDto X3TwoDtoNoXlPosDto = new X3TwoDtoNoXlPosDto();
+            X3TwoDtoNoXlPosDto.SigTime = DateTime.Now;
+            X3TwoDtoNoXlPosDto.MainSatID = 19548;
+            X3TwoDtoNoXlPosDto.Adja1SatID = 20253;
+            X3TwoDtoNoXlPosDto.Adja2SatID = 20776;
+            X3TwoDtoNoXlPosDto.Dto1 = -0.0037683828 * 1e6;
+            X3TwoDtoNoXlPosDto.Dto2 = 0.00411476 * 1e6;
+            X3TwoDtoNoXlPosDto.YbMainDto = 0.253339246 * 1e6;
+            X3TwoDtoNoXlPosDto.YbAdja1Dto = 0.254082015 * 1e6;
+            X3TwoDtoNoXlPosDto.YbAdja2Dto = 0.247747625 * 1e6;
+            X3TwoDtoNoXlPosDto.SatTxLon = 118.8833;
+            X3TwoDtoNoXlPosDto.SatTxLat = 32.0667;
+            X3TwoDtoNoXlPosDto.RefLon = 121.538;
+            X3TwoDtoNoXlPosDto.RefLat = 30.8385;
+            return X3TwoDtoNoXlPosDto;
+        }
+
+        /// <summary>
+        /// 三星双时差无参定位无星厉
+        /// </summary>
+        private X3TwoDtoNoXlNoParPosDto X3TwoDtoNoParNoXL()
+        {
+            X3TwoDtoNoXlNoParPosDto X3TwoDtoNoParPosDto = new X3TwoDtoNoXlNoParPosDto();
+            X3TwoDtoNoParPosDto.SigTime = DateTime.Now;
+            X3TwoDtoNoParPosDto.MainSatID = 19548;
+            X3TwoDtoNoParPosDto.Adja1SatID = 20253;
+            X3TwoDtoNoParPosDto.Adja2SatID = 20776;
+            X3TwoDtoNoParPosDto.Dto1 = -0.008361002956792 * 1e6;
+            X3TwoDtoNoParPosDto.Dto2 = 0.004191941221694 * 1e6;
+            X3TwoDtoNoParPosDto.SatTxLon = 121.3555;
+            X3TwoDtoNoParPosDto.SatTxLat = 31.3667;
+            return X3TwoDtoNoParPosDto;
+        }
+
+        /// <summary>
+        /// 三星双频差定位无星厉
+        /// </summary>
+        private X3TwoDfoNoXlPosDto X3TwoDfoNoXL()
+        {
+            X3TwoDfoNoXlPosDto X3TwoDfoNoXlPosDto = new X3TwoDfoNoXlPosDto();
+            X3TwoDfoNoXlPosDto.SigTime = DateTime.Now;
+            X3TwoDfoNoXlPosDto.MainSatID = 19548;
+            X3TwoDfoNoXlPosDto.Adja1SatID = 20253;
+            X3TwoDfoNoXlPosDto.Adja2SatID = 20776;
+            X3TwoDfoNoXlPosDto.Dfo1 = -17.601977254734404;
+            X3TwoDfoNoXlPosDto.Dfo2 = -36.885840020369514;
+            X3TwoDfoNoXlPosDto.YbMainDfo = 0;
+            X3TwoDfoNoXlPosDto.YbAdja1Dfo = 17.453698229247941;
+            X3TwoDfoNoXlPosDto.YbAdja2Dfo = 37.022577554138941;
+            X3TwoDfoNoXlPosDto.TarFreqUp = 3808 * 1e6 + 2225 * 1e6;
+            X3TwoDfoNoXlPosDto.TarFreqDown = 3808 * 1e6;
+            X3TwoDfoNoXlPosDto.RefFreqUp = 3796 * 1e6 + 2225 * 1e6;
+            X3TwoDfoNoXlPosDto.RefFreqDown = 3796 * 1e6;
+            X3TwoDfoNoXlPosDto.SatTxLon = 116.254567;
+            X3TwoDfoNoXlPosDto.SatTxLat = 39.65955;
+            X3TwoDfoNoXlPosDto.RefLon = 106.698;
+            X3TwoDfoNoXlPosDto.RefLat = 26.567;
+            return X3TwoDfoNoXlPosDto;
+        }
+
+        /// <summary>
+        /// 双星时频差定位无星厉
+        /// </summary>
+        private X2DtoDfoNoXlPosDto X2DfoNoXL()
+        {
+            X2DtoDfoNoXlPosDto X2DtoDfoNoXlPosDto = new X2DtoDfoNoXlPosDto();
+            X2DtoDfoNoXlPosDto.SigTime = DateTime.Now;
+            X2DtoDfoNoXlPosDto.MainSatID = 19548;
+            X2DtoDfoNoXlPosDto.AdjaSatID = 20253;
+            X2DtoDfoNoXlPosDto.Dto = -3.587980198938979e-06 * 1e6;
+            X2DtoDfoNoXlPosDto.Dfo = -17.601977254734404;
+            X2DtoDfoNoXlPosDto.YbMainDto = 0;
+            X2DtoDfoNoXlPosDto.YbAdjaDto = 6.352805492137770e-05 * 1e6;
+            X2DtoDfoNoXlPosDto.YbMainDfo = 0;
+            X2DtoDfoNoXlPosDto.YbAdjaDfo = 17.453698229247941;
+            X2DtoDfoNoXlPosDto.TarFreqUp = 3808 * 1e6 + 2225 * 1e6;
+            X2DtoDfoNoXlPosDto.TarFreqDown = 3808 * 1e6;
+            X2DtoDfoNoXlPosDto.RefFreqUp = 3796 * 1e6 + 2225 * 1e6;
+            X2DtoDfoNoXlPosDto.RefFreqDown = 3796 * 1e6;
+            X2DtoDfoNoXlPosDto.SatTxLon = 116.254567;
+            X2DtoDfoNoXlPosDto.SatTxLat = 39.65955;
+            X2DtoDfoNoXlPosDto.RefLon = 106.698;
+            X2DtoDfoNoXlPosDto.RefLat = 26.567;
+            return X2DtoDfoNoXlPosDto;
+        }
+
         private void Log(string msg)
         {
             try