zoulei 11 ay önce
ebeveyn
işleme
694f1b1eb3

+ 19 - 19
Service/X1LeoTaskServer54/Service/TaskService.cs

@@ -156,7 +156,7 @@ namespace X1LeoTaskServer54.Service
                                     cgDto = new CpuCgMultiDto()
                                     {
                                         dtCenter = 0,
-                                        dtRange = 40000,
+                                        dtRange = 60000,
                                         file1 = mainFile,
                                         file2 = adja2File,
                                         samplingRate = adFile1.Fs,
@@ -184,7 +184,7 @@ namespace X1LeoTaskServer54.Service
                                         try
                                         {
                                             if (cts.IsCancellationRequested) return;
-                                            LeoX1ParPosDto leoX1 = new LeoX1ParPosDto()
+                                            LeoX1ParPosDto posDto = new LeoX1ParPosDto()
                                             {
                                                 TaskID = dto.ID,
                                                 SigTime = adTime.AddSeconds(data1[i].Smpstart / (double)adFile1.Fs),
@@ -227,7 +227,7 @@ namespace X1LeoTaskServer54.Service
                                                     PosCheckType = EnumPosCheckTypeDto.Ky5758,
                                                 }
                                             };
-                                            var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosLeX1ParAsync", leoX1);
+                                            var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosLeX1ParAsync", posDto);
                                             if (result.code != 200)
                                             {
                                                 await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz 第{i + 1}个突发定位异常.{result.msg}");
@@ -237,7 +237,7 @@ namespace X1LeoTaskServer54.Service
                                                 var posRes = result.data;
                                                 double posLon = posRes.PosLon;
                                                 double posLat = posRes.PosLat;
-                                                if (leoX1.Snr1 == 0 || leoX1.Snr2 == 0)
+                                                if (posDto.Snr1 == 0 || posDto.Snr2 == 0)
                                                 {
                                                     posLon = 0;
                                                     posLat = 0;
@@ -251,20 +251,20 @@ namespace X1LeoTaskServer54.Service
                                                     DfoErr = DfoErrHz,
                                                     EphPosErr = EphPosErrM,
                                                     EphVelErr = EphVelErr,
-                                                    fu = leoX1.FreqUp,
+                                                    fu = posDto.FreqUp,
                                                     Pe = 0.5,
                                                     OutputErrPoint = false
                                                 };
                                                 var errRes = await GetErrEllipseResDto(errdto, posLon, posLat);
                                                 StringBuilder sb = new StringBuilder();
-                                                sb.Append($"{leoX1.SigTime:yyyy}\t");
-                                                sb.Append($"{leoX1.SigTime:MM}\t");
-                                                sb.Append($"{leoX1.SigTime:dd}\t");
-                                                sb.Append($"{leoX1.SigTime:HH}\t");
-                                                sb.Append($"{leoX1.SigTime:mm}\t");
-                                                sb.Append($"{leoX1.SigTime:ss}\t");
-                                                sb.Append($"{leoX1.SigTime:fff}\t");
-                                                sb.Append($"{leoX1.CheckRes.SmpCount * 1000 / adFile1.Fs:D4}\t");//信号持续时间ms
+                                                sb.Append($"{posDto.SigTime:yyyy}\t");
+                                                sb.Append($"{posDto.SigTime:MM}\t");
+                                                sb.Append($"{posDto.SigTime:dd}\t");
+                                                sb.Append($"{posDto.SigTime:HH}\t");
+                                                sb.Append($"{posDto.SigTime:mm}\t");
+                                                sb.Append($"{posDto.SigTime:ss}\t");
+                                                sb.Append($"{posDto.SigTime:fff}\t");
+                                                sb.Append($"{posDto.CheckRes.SmpCount * 1000 / adFile1.Fs:D4}\t");//信号持续时间ms
                                                 sb.Append($"{Convert.ToInt64(adFile1.FreqDownMHz * 1e6):D12}\t");//下行频点
                                                 sb.Append($"{Convert.ToInt64((adFile1.FreqDownMHz + 44) * 1e6):D12}\t");//上行频点
                                                 sb.Append($"{GetSignalType(deteResp.data[i].ModType)}\t");//信号样式(暂定有这些1:CPM,2:BPSK,4:QPSK,9:其它),
@@ -273,12 +273,12 @@ namespace X1LeoTaskServer54.Service
                                                 sb.Append($"{Convert.ToInt64(posLon * 1e6):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(posLat * 1e6):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e3):D8}\t");//定位误差km
-                                                sb.Append($"{Convert.ToInt64(leoX1.Dto1 * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(leoX1.Dfo1 * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(leoX1.Snr1 * 1e2):D6}\t");
-                                                sb.Append($"{Convert.ToInt64(leoX1.Dto2 * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(leoX1.Dfo2 * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(leoX1.Snr2 * 1e2):D6}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Dto1 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Dfo1 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Snr1 * 1e2):D6}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Dto2 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Dfo2 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Snr2 * 1e2):D6}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D6}\t");

+ 18 - 18
Service/X2D1TaskServer54/Service/TaskService.cs

@@ -102,7 +102,7 @@ namespace X2D1NoRefTaskServer54.Service
                         if (!groupFiles.Any())
                         {
                             await LogHelper.Info($"【任务{dto.ID}】等待扫描文件...");
-                            await Task.Delay(10000,cts.Token);
+                            await Task.Delay(10000, cts.Token);
                         }
                         foreach (var groupFile in groupFiles)//每一组文件代表同一个时刻的
                         {
@@ -271,7 +271,7 @@ namespace X2D1NoRefTaskServer54.Service
                                         try
                                         {
                                             if (cts.IsCancellationRequested) break;
-                                            X2D1NoParPosDto x21d = new X2D1NoParPosDto()
+                                            X2D1NoParPosDto posDto = new X2D1NoParPosDto()
                                             {
                                                 TaskID = dto.ID,
                                                 //SigTime = adTime.AddSeconds(data1[i].Smpstart / (double)ch0File.Fs),
@@ -304,7 +304,7 @@ namespace X2D1NoRefTaskServer54.Service
                                                     PosCheckType = EnumPosCheckTypeDto.DAMA,
                                                 }
                                             };
-                                            var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX2D1NoParAsync", x21d);
+                                            var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX2D1NoParAsync", posDto);
                                             if (result.code != 200)
                                             {
                                                 await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-时隙位置{data1[i].Smpstart}定位异常.{result.msg}");
@@ -314,7 +314,7 @@ namespace X2D1NoRefTaskServer54.Service
                                                 var posRes = result.data;
                                                 double posLon = posRes.PosLon;
                                                 double posLat = posRes.PosLat;
-                                                if (x21d.SxSnr == 0 || x21d.XdSnr == 0)
+                                                if (posDto.SxSnr == 0 || posDto.XdSnr == 0)
                                                 {
                                                     posLon = 0;
                                                     posLat = 0;
@@ -349,14 +349,14 @@ namespace X2D1NoRefTaskServer54.Service
                                                     }
                                                 }
                                                 StringBuilder sb = new StringBuilder();
-                                                sb.Append($"{x21d.SigTime:yyyy}\t");
-                                                sb.Append($"{x21d.SigTime:MM}\t");
-                                                sb.Append($"{x21d.SigTime:dd}\t");
-                                                sb.Append($"{x21d.SigTime:HH}\t");
-                                                sb.Append($"{x21d.SigTime:mm}\t");
-                                                sb.Append($"{x21d.SigTime:ss}\t");
-                                                sb.Append($"{x21d.SigTime:fff}\t");
-                                                sb.Append($"{x21d.CheckRes.SmpCount * 1000 / ch0File.Fs:D4}\t");//信号持续时间ms
+                                                sb.Append($"{posDto.SigTime:yyyy}\t");
+                                                sb.Append($"{posDto.SigTime:MM}\t");
+                                                sb.Append($"{posDto.SigTime:dd}\t");
+                                                sb.Append($"{posDto.SigTime:HH}\t");
+                                                sb.Append($"{posDto.SigTime:mm}\t");
+                                                sb.Append($"{posDto.SigTime:ss}\t");
+                                                sb.Append($"{posDto.SigTime:fff}\t");
+                                                sb.Append($"{posDto.CheckRes.SmpCount * 1000 / ch0File.Fs:D4}\t");//信号持续时间ms
                                                 sb.Append($"{Convert.ToInt64(group.First().FreqDownMHz * 1e6):D12}\t");//下行频点
                                                 sb.Append($"{Convert.ToInt64((group.First().FreqDownMHz + 44) * 1e6):D12}\t");//上行频点
                                                 sb.Append($"{GetSignalType(signalResult.data[i].ModType)}\t");//信号样式(暂定有这些1:CPM,2:BPSK,4:QPSK,9:其他),
@@ -365,12 +365,12 @@ namespace X2D1NoRefTaskServer54.Service
                                                 sb.Append($"{Convert.ToInt64(posLon * 1e6):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(posLat * 1e6):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e3):D8}\t");//定位误差km
-                                                sb.Append($"{Convert.ToInt64(x21d.SxDto * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(x21d.SxDfo * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(x21d.SxSnr * 1e2):D6}\t");
-                                                sb.Append($"{Convert.ToInt64(x21d.XdDto * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(x21d.XdDfo * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(x21d.XdSnr * 1e2):D6}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.SxDto * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.SxDfo * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.SxSnr * 1e2):D6}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.XdDto * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.XdDfo * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.XdSnr * 1e2):D6}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D6}\t");

+ 19 - 19
Service/X2LeoTaskServer54/Service/TaskService.cs

@@ -164,7 +164,7 @@ namespace X2LeoTaskServer54.Service
                                     var cgDto = new CpuCgMultiDto()
                                     {
                                         dtCenter = 0,
-                                        dtRange = 40000,
+                                        dtRange = 60000,
                                         file1 = tarFile1,
                                         file2 = tarFile2,
                                         samplingRate = tarFileInfo1.Fs,
@@ -190,7 +190,7 @@ namespace X2LeoTaskServer54.Service
                                         try
                                         {
                                             if (cts.IsCancellationRequested) break;
-                                            LeoX2ParPosDto leoX2 = new LeoX2ParPosDto()
+                                            LeoX2ParPosDto posDto = new LeoX2ParPosDto()
                                             {
                                                 TaskID = dto.ID,
                                                 SigTime = adTime.AddSeconds(data1[i].Smpstart / (double)tarFileInfo1.Fs),
@@ -231,7 +231,7 @@ namespace X2LeoTaskServer54.Service
                                                     PosCheckType = EnumPosCheckTypeDto.Ky5758,
                                                 }
                                             };
-                                            var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosLeX2ParAsync", leoX2);
+                                            var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosLeX2ParAsync", posDto);
                                             if (result.code != 200)
                                             {
                                                 await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz 第{i + 1}个突发定位异常.{result.msg}");
@@ -241,7 +241,7 @@ namespace X2LeoTaskServer54.Service
                                                 var posRes = result.data;
                                                 double posLon = posRes.PosLon;
                                                 double posLat = posRes.PosLat;
-                                                if (leoX2.Snr == 0)
+                                                if (posDto.Snr == 0)
                                                 {
                                                     posLon = 0;
                                                     posLat = 0;
@@ -256,21 +256,21 @@ namespace X2LeoTaskServer54.Service
                                                     DfoErr = DfoErrHz,
                                                     EphPosErr = EphPosErrM,
                                                     EphVelErr = EphVelErr,
-                                                    fu1 = leoX2.TarFreqUp,
-                                                    fu2 = leoX2.RefFreqUp,
+                                                    fu1 = posDto.TarFreqUp,
+                                                    fu2 = posDto.RefFreqUp,
                                                     Pe = 0.5,
                                                     OutputErrPoint = false
                                                 };
                                                 var errRes = await GetErrEllipseResDto(errdto, posLon, posLat);
                                                 StringBuilder sb = new StringBuilder();
-                                                sb.Append($"{leoX2.SigTime:yyyy}\t");
-                                                sb.Append($"{leoX2.SigTime:MM}\t");
-                                                sb.Append($"{leoX2.SigTime:dd}\t");
-                                                sb.Append($"{leoX2.SigTime:HH}\t");
-                                                sb.Append($"{leoX2.SigTime:mm}\t");
-                                                sb.Append($"{leoX2.SigTime:ss}\t");
-                                                sb.Append($"{leoX2.SigTime:fff}\t");
-                                                sb.Append($"{leoX2.CheckRes.SmpCount * 1000 / tarFileInfo1.Fs:D4}\t");//信号持续时间ms
+                                                sb.Append($"{posDto.SigTime:yyyy}\t");
+                                                sb.Append($"{posDto.SigTime:MM}\t");
+                                                sb.Append($"{posDto.SigTime:dd}\t");
+                                                sb.Append($"{posDto.SigTime:HH}\t");
+                                                sb.Append($"{posDto.SigTime:mm}\t");
+                                                sb.Append($"{posDto.SigTime:ss}\t");
+                                                sb.Append($"{posDto.SigTime:fff}\t");
+                                                sb.Append($"{posDto.CheckRes.SmpCount * 1000 / tarFileInfo1.Fs:D4}\t");//信号持续时间ms
                                                 sb.Append($"{Convert.ToInt64(freq * 1e6):D12}\t");//下行频点
                                                 sb.Append($"{Convert.ToInt64(310.85 * 1e6):D12}\t");//上行频点
                                                 sb.Append($"{GetSignalType(deteResp.data[i].ModType)}\t");//信号样式(暂定有这些1:CPM,2:BPSK,4:QPSK,9:其它),
@@ -279,11 +279,11 @@ namespace X2LeoTaskServer54.Service
                                                 sb.Append($"{Convert.ToInt64(posLon * 1e6):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(posLat * 1e6):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e3):D8}\t");//定位误差km
-                                                sb.Append($"{Convert.ToInt64(leoX2.Dto * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(leoX2.Dfo * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(leoX2.Snr * 1e2):D6}\t");
-                                                sb.Append($"{Convert.ToInt64((leoX2.YbMainDto - leoX2.YbAdjaDto) * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64((leoX2.YbMainDfo - leoX2.YbAdjaDfo) * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Dto * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Dfo * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Snr * 1e2):D6}\t");
+                                                sb.Append($"{Convert.ToInt64((posDto.YbMainDto - posDto.YbAdjaDto) * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64((posDto.YbMainDfo - posDto.YbAdjaDfo) * 1e2):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(32 * 1e2):D6}\t");//参考信噪比
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");

+ 4 - 4
Service/X3LeoTaskServer54/App.config

@@ -11,18 +11,18 @@
 		<add key="PosPlatformAddr" value="http://127.0.0.1:8091" />
 
 		<!--采集数据目录-->
-		<add key="CapDir" value="E:\data10\低轨三星仿真数据"/>
+		<add key="CapDir" value="D:\data10\低轨三星仿真数据"/>
 
 		<!--定位结果输出目录-->
-		<add key="PosResDir" value="E:\PosRes"/>
+		<add key="PosResDir" value="D:\PosRes"/>
 
 		<!--状态上报目录-->
-		<add key="StateRptDir" value="E:\StateRes"/>
+		<add key="StateRptDir" value="D:\StateRes"/>
 
 
 		<!--卫星及星历-->
 		<add key ="MainSatInfo" value="39206,-41891185.7993,-2303482.9121,-1007186.7852"/>
-		<add key ="Adja1SatInfo" value="40892,-38240728.4909,-38240728.4909,-18752.1789"/>
+		<add key ="Adja1SatInfo" value="40892,-38238754.6382,17791981.2179,-21447.071"/>
 		<add key ="Adja2SatInfo" value="44637,4658230.4522,41911093.1893,-32337.1851"/>
 
 		<!--定位时差系数-->

+ 1 - 1
Service/X3LeoTaskServer54/AppDebug.config

@@ -22,7 +22,7 @@
 
 		<!--卫星及星历-->
 		<add key ="MainSatInfo" value="39206,-41891185.7993,-2303482.9121,-1007186.7852"/>
-		<add key ="Adja1SatInfo" value="40892,-38240728.4909,-38240728.4909,-18752.1789"/>
+		<add key ="Adja1SatInfo" value="40892,-38238754.6382,17791981.2179,-21447.071"/>
 		<add key ="Adja2SatInfo" value="44637,4658230.4522,41911093.1893,-32337.1851"/>
 
 		<!--定位时差系数-->

+ 57 - 25
Service/X3LeoTaskServer54/Service/TaskService.cs

@@ -24,6 +24,9 @@ namespace X3LeoTaskServer54.Service
         int PosDtoFactor;
         double DtoErrus;
         double EphErrm;
+        int mainSatCode;
+        int adja1SatCode;
+        int adja2SatCode;
 
         public TaskService()
         {
@@ -79,10 +82,13 @@ namespace X3LeoTaskServer54.Service
                             var arr1 = mainInfo.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                             var arr2 = adja1Info.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                             var arr3 = adja2Info.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
+                            mainSatCode = Convert.ToInt32(arr1[0]);
+                            adja1SatCode = Convert.ToInt32(arr2[0]);
+                            adja2SatCode = Convert.ToInt32(arr3[0]);
                             MainSatXYZ = GetEph(arr1);
                             Adja1SatXYZ = GetEph(arr2);
                             Adja2SatXYZ = GetEph(arr3);
-                            var tarEcef = PhysicsHelper.GeoToEcef((110, 14, 0));
+                            var tarEcef = PhysicsHelper.GeoToEcef((115, 11, 0));
                             var recEcef = PhysicsHelper.GeoToEcef((dto.CapLon, dto.CapLat, 0));
                             var dt1 = PhysicsHelper.Dto(tarEcef, (MainSatXYZ[0], MainSatXYZ[1], MainSatXYZ[2]), recEcef);
                             var dt2 = PhysicsHelper.Dto(tarEcef, (Adja1SatXYZ[0], Adja1SatXYZ[1], Adja1SatXYZ[2]), recEcef);
@@ -152,7 +158,7 @@ namespace X3LeoTaskServer54.Service
                                     var cgDto = new CpuCgMultiDto()
                                     {
                                         dtCenter = 0,
-                                        dtRange = 40000,
+                                        dtRange = 60000,
                                         file1 = mainFile,
                                         file2 = adja1File,
                                         samplingRate = ch0File.Fs,
@@ -168,7 +174,7 @@ namespace X3LeoTaskServer54.Service
                                     cgDto = new CpuCgMultiDto()
                                     {
                                         dtCenter = 0,
-                                        dtRange = 40000,
+                                        dtRange = 60000,
                                         file1 = mainFile,
                                         file2 = adja2File,
                                         samplingRate = ch0File.Fs,
@@ -196,11 +202,42 @@ namespace X3LeoTaskServer54.Service
                                         try
                                         {
                                             if (cts.IsCancellationRequested) break;
-                                            LeoX1ParPosDto leoX1 = new LeoX1ParPosDto()
+                                            var posDto = new X3TwoDtoNoParPosDto()
                                             {
+                                                SigTime = adTime.AddSeconds(data1[i].Smpstart / (double)ch0File.Fs),
+                                                MainCode = mainSatCode,
+                                                Adja1Code = adja1SatCode,
+                                                Adja2Code = adja2SatCode,
+                                                Adja1X = Adja1SatXYZ[0],
+                                                Adja1Y = Adja1SatXYZ[1],
+                                                Adja1Z = Adja1SatXYZ[2],
+                                                Adja2X = Adja2SatXYZ[0],
+                                                Adja2Y = Adja2SatXYZ[1],
+                                                Adja2Z = Adja2SatXYZ[2],
+                                                MainX = MainSatXYZ[0],
+                                                MainY = MainSatXYZ[1],
+                                                MainZ = MainSatXYZ[2],
+                                                Dto1 = data1[i].Dt,
+                                                Dfo1 = data1[i].Df,
+                                                Snr1 = data1[i].Snr,
+                                                Dto2 = data2[i].Dt,
+                                                Dfo2 = data2[i].Df,
+                                                Snr2 = data2[i].Snr,
+                                                FreqDown = freq * 1e6,
+                                                FreqUp = (freq + 44) * 1e6,
+                                                SatTxLon = dto.CapLon,
+                                                SatTxLat = dto.CapLat,
+                                                TaskID = dto.ID,
+                                                CheckRes = new CheckResDto()
+                                                {
+                                                    FileName = Path.GetFileName(ch0File.File),
+                                                    SmpStart = smps[i].smpStart,
+                                                    SmpCount = smps[i].smpCount,
+                                                    PosCheckType = EnumPosCheckTypeDto.Ky5758,
+                                                }
 
                                             };
-                                            var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosLeX1ParAsync", leoX1);
+                                            var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX3TwoDtoNoParAsync", posDto);
                                             if (result.code != 200)
                                             {
                                                 await LogHelper.Error($"【任务{dto.ID}】-{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz 第{i + 1}个突发定位异常.{result.msg}");
@@ -210,11 +247,6 @@ namespace X3LeoTaskServer54.Service
                                                 var posRes = result.data;
                                                 double posLon = posRes.PosLon;
                                                 double posLat = posRes.PosLat;
-                                                if (leoX1.Snr1 == 0 || leoX1.Snr2 == 0)
-                                                {
-                                                    posLon = 0;
-                                                    posLat = 0;
-                                                }
                                                 var errDto = new ErrEllipseX3NoRefDto()
                                                 {
                                                     PosLon = posLon,
@@ -234,14 +266,14 @@ namespace X3LeoTaskServer54.Service
                                                 };
                                                 var errRes = await GetErrEllipseResDto(errDto);
                                                 StringBuilder sb = new StringBuilder();
-                                                sb.Append($"{leoX1.SigTime:yyyy}\t");
-                                                sb.Append($"{leoX1.SigTime:MM}\t");
-                                                sb.Append($"{leoX1.SigTime:dd}\t");
-                                                sb.Append($"{leoX1.SigTime:HH}\t");
-                                                sb.Append($"{leoX1.SigTime:mm}\t");
-                                                sb.Append($"{leoX1.SigTime:ss}\t");
-                                                sb.Append($"{leoX1.SigTime:fff}\t");
-                                                sb.Append($"{leoX1.CheckRes.SmpCount * 1000 / ch0File.Fs:D4}\t");//信号持续时间ms
+                                                sb.Append($"{posDto.SigTime:yyyy}\t");
+                                                sb.Append($"{posDto.SigTime:MM}\t");
+                                                sb.Append($"{posDto.SigTime:dd}\t");
+                                                sb.Append($"{posDto.SigTime:HH}\t");
+                                                sb.Append($"{posDto.SigTime:mm}\t");
+                                                sb.Append($"{posDto.SigTime:ss}\t");
+                                                sb.Append($"{posDto.SigTime:fff}\t");
+                                                sb.Append($"{posDto.CheckRes.SmpCount * 1000 / ch0File.Fs:D4}\t");//信号持续时间ms
                                                 sb.Append($"{Convert.ToInt64(freq * 1e6):D12}\t");//下行频点
                                                 sb.Append($"{Convert.ToInt64((freq + 44) * 1e6):D12}\t");//上行频点
                                                 sb.Append($"{GetSignalType(deteResp.data[i].ModType)}\t");//信号样式(暂定有这些1:CPM,2:BPSK,4:QPSK,9:其它),
@@ -250,12 +282,12 @@ namespace X3LeoTaskServer54.Service
                                                 sb.Append($"{Convert.ToInt64(posLon * 1e6):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(posLat * 1e6):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e3):D8}\t");//定位误差km
-                                                sb.Append($"{Convert.ToInt64(leoX1.Dto1 * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(leoX1.Dfo1 * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(leoX1.Snr1 * 1e2):D6}\t");
-                                                sb.Append($"{Convert.ToInt64(leoX1.Dto2 * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(leoX1.Dfo2 * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(leoX1.Snr2 * 1e2):D6}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Dto1 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Dfo1 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Snr1 * 1e2):D6}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Dto2 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Dfo2 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Snr2 * 1e2):D6}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D6}\t");
@@ -268,7 +300,7 @@ namespace X3LeoTaskServer54.Service
                                                 sb.Append($"{4}\t");//定位体制(0未知,1高轨多星,2高低轨,3星地,4星座)
                                                 sb.Append($"{(long)deteResp.data[i].ModRate.Value:D12}");//符号速率bps  12个
                                                 sb.Append("\r\n");
-                                                string resFile = Path.Combine(PosResDir, $"低轨星定位结果_{posRes.SigTime:yyyyMMdd}.txt");
+                                                string resFile = Path.Combine(PosResDir, $"低轨星定位结果_{posRes.SigTime:yyyyMMdd}.txt");
                                                 lock (this)
                                                 {
                                                     File.AppendAllText(resFile, sb.ToString());

+ 17 - 17
Service/X3TaskServer54/Service/TaskService.cs

@@ -264,7 +264,7 @@ namespace X3TaskServer54.Service
                                         try
                                         {
                                             if (cts.IsCancellationRequested) break;
-                                            X3TwoDtoNoParPosDto x3 = new X3TwoDtoNoParPosDto()
+                                            X3TwoDtoNoParPosDto posDto = new X3TwoDtoNoParPosDto()
                                             {
                                                 TaskID = dto.ID,
                                                 //SigTime = adTime.AddSeconds(data1[i].Smpstart / (double)ch0File.Fs),
@@ -299,7 +299,7 @@ namespace X3TaskServer54.Service
                                                     PosCheckType = EnumPosCheckTypeDto.DAMA,
                                                 }
                                             };
-                                            var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX3TwoDtoNoParAsync", x3);
+                                            var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX3TwoDtoNoParAsync", posDto);
                                             if (result.code != 200)
                                             {
                                                 await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-时隙位置{data1[i].Smpstart}定位异常.{result.msg}");
@@ -309,7 +309,7 @@ namespace X3TaskServer54.Service
                                                 var posRes = result.data;
                                                 double posLon = posRes.PosLon;
                                                 double posLat = posRes.PosLat;
-                                                if (x3.Snr1 == 0 || x3.Snr2 == 0)
+                                                if (posDto.Snr1 == 0 || posDto.Snr2 == 0)
                                                 {
                                                     posLon = 0;
                                                     posLat = 0;
@@ -345,14 +345,14 @@ namespace X3TaskServer54.Service
                                                     }
                                                 }
                                                 StringBuilder sb = new StringBuilder();
-                                                sb.Append($"{x3.SigTime:yyyy}\t");
-                                                sb.Append($"{x3.SigTime:MM}\t");
-                                                sb.Append($"{x3.SigTime:dd}\t");
-                                                sb.Append($"{x3.SigTime:HH}\t");
-                                                sb.Append($"{x3.SigTime:mm}\t");
-                                                sb.Append($"{x3.SigTime:ss}\t");
-                                                sb.Append($"{x3.SigTime:fff}\t");
-                                                sb.Append($"{x3.CheckRes.SmpCount * 1000 / ch0File.Fs:D4}\t");//信号持续时间ms
+                                                sb.Append($"{posDto.SigTime:yyyy}\t");
+                                                sb.Append($"{posDto.SigTime:MM}\t");
+                                                sb.Append($"{posDto.SigTime:dd}\t");
+                                                sb.Append($"{posDto.SigTime:HH}\t");
+                                                sb.Append($"{posDto.SigTime:mm}\t");
+                                                sb.Append($"{posDto.SigTime:ss}\t");
+                                                sb.Append($"{posDto.SigTime:fff}\t");
+                                                sb.Append($"{posDto.CheckRes.SmpCount * 1000 / ch0File.Fs:D4}\t");//信号持续时间ms
                                                 sb.Append($"{Convert.ToInt64(group.First().FreqDownMHz * 1e6):D12}\t");//下行频点
                                                 sb.Append($"{Convert.ToInt64((group.First().FreqDownMHz + 44) * 1e6):D12}\t");//上行频点
                                                 sb.Append($"{GetSignalType(signalResult.data[i].ModType)}\t");//信号样式(暂定有这些1:CPM,2:BPSK,4:QPSK,9:其他),
@@ -361,12 +361,12 @@ namespace X3TaskServer54.Service
                                                 sb.Append($"{Convert.ToInt64(posLon * 1e6):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(posLat * 1e6):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e3):D8}\t");//定位误差km
-                                                sb.Append($"{Convert.ToInt64(x3.Dto1 * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(x3.Dfo1 * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(x3.Snr1 * 1e2):D6}\t");
-                                                sb.Append($"{Convert.ToInt64(x3.Dto2 * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(x3.Dfo2 * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(x3.Snr2 * 1e2):D6}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Dto1 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Dfo1 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Snr1 * 1e2):D6}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Dto2 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Dfo2 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(posDto.Snr2 * 1e2):D6}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D6}\t");

+ 0 - 2
XdCxRhDW.App/Controllers/PosController.cs

@@ -775,8 +775,6 @@ namespace XdCxRhDW.App.Controllers
         }
         #endregion
 
-        #region 低轨三星双时差带参定位
-        #endregion
 
         private PosResDto MapDto(PosRes res)
         {

+ 7 - 5
XdCxRhDW.App/ExtensionsDev/MapControlEx.cs

@@ -642,9 +642,11 @@ public static class MapControlEx
             Tag = item,
             Location = new GeoPoint(item.PosLat, item.PosLon)
         };
-        innerData._dataCache.Add(item, mapItem);
-        innerData.posStorge.Items.Add(mapItem);
-
+        if (!innerData._dataCache.ContainsKey(item))
+        {
+            innerData._dataCache.Add(item, mapItem);
+            innerData.posStorge.Items.Add(mapItem);
+        }
     }
     /// <summary>
     /// 定位图层数据源添加多个定位点
@@ -3059,8 +3061,8 @@ public static class MapControlEx
                         {
                             suffix = ".jpg";
                         }
-                        int maxY=(int)Math.Pow(2, zoomLevel);
-                        imgUrl = $"{HttpServerAddr}/{LayerName}/{zoomLevel}/{tilePositionX}/{maxY-tilePositionY}{suffix}";
+                        int maxY = (int)Math.Pow(2, zoomLevel);
+                        imgUrl = $"{HttpServerAddr}/{LayerName}/{zoomLevel}/{tilePositionX}/{maxY - tilePositionY}{suffix}";
                     }
                     //string imgUrl = string.Format("http://192.168.0.214:58089/{0}/{1}/{2}/{3}", (int)GoogleMapType.Normal, zoomLevel, tilePositionX, tilePositionY);
                     Uri u = new Uri(imgUrl);

+ 4 - 0
XdCxRhDW.App/Model/ModelPosRes.cs

@@ -23,5 +23,9 @@ namespace XdCxRhDW.App.Model
         [Display(Name = "检测方式")]
         [ToolTip]
         public string CheckType => CheckRes?.PosCheckType?.GetEnumDisplayName();
+        public override int GetHashCode()
+        {
+            return $"ModelPosRes_{ID}".GetHashCode();
+        }
     }
 }

+ 15 - 3
XdCxRhDW.App/UserControl/CtrlHome.cs

@@ -85,7 +85,7 @@ namespace XdCxRhDW.App.UserControl
             gridHomePosRes.UseDefault(new List<ModelPosRes>()).UseMultiSelect().UseRowNumber().UseNullValueText()
                 .AddRowMenu<ModelPosRes>("绘制时差线", SvgHelper.CreateDtoLine(), DrawDtoLine)
                 .AddRowMenu<ModelPosRes>("GDOP分析", SvgHelper.CreateGDOP(), DrawGdopLine)
-                .AddRowMenu<ModelPosRes>("误差椭圆",SvgHelper.CreateGDOP(), DraErrlipse)
+                .AddRowMenu<ModelPosRes>("误差椭圆", SvgHelper.CreateGDOP(), DraErrlipse)
                 .AddRowMenu<ModelPosRes>("查看参估", SvgHelper.CreateShowCafRes(), ShowCafRes)
                 .AddRowMenu<ModelPosRes>("查看测向", SvgHelper.CreateShowCxRes(), ShowCxRes)
                 .AddRowMenu<ModelPosRes>("查看检测", SvgHelper.CreateShowCheckRes(), ShowCheckRes)
@@ -231,8 +231,20 @@ namespace XdCxRhDW.App.UserControl
                     return;
                 if (posRes.PosLon == 999 && !btnIncludeInvalidate.Checked)
                     return;
+                if (txtTimeCho.Text == "自定义")
+                {
+                    return;
+                }
+                var hours = Convert.ToInt32(txtTimeCho.EditValue);
                 var ds = this.gridHomePosRes.DataSource as List<ModelPosRes>;
                 ds.Insert(0, posRes);
+                var max = ds.Max(p => p.SigTime);
+                var removeItems=ds.Where(p => (max - p.SigTime).TotalHours > hours).ToList();
+                foreach (var item in removeItems)
+                {
+                    ds.Remove(item);
+                    mapControl1.DelPosItem(item,false);
+                }
                 this.Invoke(new Action(() =>
                 {
                     gridView2.RefreshData();
@@ -1057,7 +1069,7 @@ namespace XdCxRhDW.App.UserControl
                         x2D1GdopParam.mapControl1 = mapControl1;
                         DxHelper.PopupHelper.ShowPopup(x2D1GdopParam, layoutControl1, 600);
                         break;
-                    case EnumPosResType.X3TwoDto: 
+                    case EnumPosResType.X3TwoDto:
                     case EnumPosResType.X3TwoDtoNoRef:
                     case EnumPosResType.X3Leo:
                         X3GDOPParam x3GdopParam = new X3GDOPParam(item);
@@ -1091,7 +1103,7 @@ namespace XdCxRhDW.App.UserControl
                 {
                     case EnumPosResType.X2D1:
                     case EnumPosResType.X2D1NoRef:
-                        X2D1EllipesEditor ctrl = new X2D1EllipesEditor(item,this.mapControl1);
+                        X2D1EllipesEditor ctrl = new X2D1EllipesEditor(item, this.mapControl1);
                         DxHelper.PopupHelper.ShowPopup(ctrl, layoutControl1, 600);
                         break;
                     case EnumPosResType.X3TwoDto: