zoulei 1 år sedan
förälder
incheckning
12b1a9e253
41 ändrade filer med 407 tillägg och 564 borttagningar
  1. BIN
      Service/CheckServer/AddIns/SignalProc.dll
  2. 10 21
      Service/CheckServer/CheckServer.csproj
  3. 9 5
      Service/CheckServer/MainForm.Designer.cs
  4. 1 0
      Service/CheckServer/MainForm.cs
  5. 2 2
      Service/CheckServer/Program.cs
  6. 1 1
      Service/ClearServiceData/ClearServiceData.csproj
  7. 7 1
      Service/ClearServiceData/Program.cs
  8. 9 15
      Service/CpuCgServer/CpuCgServer.csproj
  9. 8 4
      Service/CpuCgServer/MainForm.Designer.cs
  10. 4 3
      Service/CpuCgServer/Program.cs
  11. 0 12
      Service/GpuCgServer/AddIns/readme.txt
  12. 8 17
      Service/GpuCgServer/GpuCgServer.csproj
  13. 8 4
      Service/GpuCgServer/MainForm.Designer.cs
  14. 2 2
      Service/GpuCgServer/Program.cs
  15. 4 0
      Service/Test/AddIns/时隙获取/SlotHelper.cs
  16. BIN
      Service/X1LeoTaskServer54/AddIns/时隙获取/SlotChecker.dll
  17. 0 26
      Service/X1LeoTaskServer54/AddIns/时隙获取/SlotChecker.h
  18. 0 115
      Service/X1LeoTaskServer54/AddIns/时隙获取/SlotHelper.cs
  19. 3 3
      Service/X1LeoTaskServer54/App.config
  20. 0 5
      Service/X1LeoTaskServer54/HistoryFile.cs
  21. 50 61
      Service/X1LeoTaskServer54/Service/TaskService.cs
  22. 4 10
      Service/X1LeoTaskServer54/X1LeoTaskServer54.csproj
  23. 4 0
      Service/X2D1TaskServer54/AddIns/时隙获取/SlotHelper.cs
  24. 3 2
      Service/X2D1TaskServer54/Service/TaskService.cs
  25. 4 1
      Service/X2D1TaskServer54/X2D1NoRefTaskServer54.csproj
  26. 3 3
      Service/X2LeoTaskServer54/App.config
  27. 4 4
      Service/X2LeoTaskServer54/AppDebug.config
  28. 224 229
      Service/X2LeoTaskServer54/Service/TaskService.cs
  29. 4 1
      Service/X2LeoTaskServer54/X2LeoTaskServer54.csproj
  30. 1 1
      Service/X3LeoTaskServer54/Service/TaskService.cs
  31. 4 1
      Service/X3LeoTaskServer54/X3LeoTaskServer54.csproj
  32. 4 0
      Service/X3TaskServer54/AddIns/时隙获取/SlotHelper.cs
  33. 1 1
      Service/X3TaskServer54/Service/TaskService.cs
  34. 4 1
      Service/X3TaskServer54/X3TaskServer54.csproj
  35. 1 1
      XdCxRhDW.App/Controllers/EllipseController.cs
  36. 2 2
      XdCxRhDW.App/Controllers/PosController.cs
  37. 6 6
      XdCxRhDW.App/EditForms/SignalEmulation.cs
  38. 5 0
      XdCxRhDW.App/MainForm.cs
  39. 0 2
      XdCxRhDW.App/UserControl/CtrlHome.cs
  40. 1 0
      XdCxRhDW.App/UserControl/CtrlSat.cs
  41. 2 2
      XdCxRhDW.Entity/EntityEnum.cs

BIN
Service/CheckServer/AddIns/SignalProc.dll


+ 10 - 21
Service/CheckServer/CheckServer.csproj

@@ -39,12 +39,6 @@
     <ApplicationIcon>..\..\Service.ico</ApplicationIcon>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json.Bson, Version=1.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.Bson.1.0.2\lib\net45\Newtonsoft.Json.Bson.dll</HintPath>
-    </Reference>
     <Reference Include="Serilog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
       <HintPath>..\..\packages\Serilog.3.1.1\lib\net471\Serilog.dll</HintPath>
     </Reference>
@@ -110,9 +104,7 @@
     <Compile Include="MainForm.Designer.cs">
       <DependentUpon>MainForm.cs</DependentUpon>
     </Compile>
-    <None Include="AddIns\enc-test.dat">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
+    <None Include="AddIns\enc-test.dat" />
     <None Include="packages.config" />
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>ResXFileCodeGenerator</Generator>
@@ -165,9 +157,7 @@
     </None>
   </ItemGroup>
   <ItemGroup>
-    <None Include="AddIns\enc.txt">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
+    <None Include="AddIns\enc.txt" />
   </ItemGroup>
   <ItemGroup>
     <None Include="AddIns\ReSample.exe">
@@ -175,9 +165,7 @@
     </None>
   </ItemGroup>
   <ItemGroup>
-    <None Include="AddIns\ReSample.txt">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
+    <None Include="AddIns\ReSample.txt" />
   </ItemGroup>
   <ItemGroup>
     <None Include="AddIns\ippcore-9.0.dll">
@@ -215,20 +203,21 @@
   <PropertyGroup>
     <PostBuildEvent>del DevExpress*.xml,EntityFramework*.xml,Serilog*.xml,Newtonsoft*.xml
 del System*.xml,Microsoft*.xml,autofac*.xml,MySql*.xml,K4os*.xml,google*.xml
-del BouncyCastle*.xml
+del BouncyCastle*.xml,Serilog.Sinks.File.pdb
+del System.Text.Encodings.Web.dll
+del System.ValueTuple.dll
+del *.dll.config
 
 if not exist "AddIns" md AddIns
 move /Y *.dll AddIns
 move /Y *.pdb AddIns
 move AddIns\$(TargetName).pdb .
-copy $(SolutionDir)Service.svg Service.svg
 rmdir logs /S/Q
 rmdir wwwroot /S/Q
-
 if not exist ..\..\..\..\XdCxRhDW.App\bin\Debug\Service mkdir ..\..\..\..\XdCxRhDW.App\bin\Debug\Service
-if not exist ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\$(TargetName) mkdir ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\$(TargetName)
-xcopy * ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\$(TargetName) /sey
-del ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\$(TargetName)\*.tmp
+if not exist ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\信号检测服务 mkdir ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\信号检测服务
+xcopy * ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\信号检测服务 /sey
+del ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\信号检测服务\*.tmp
 </PostBuildEvent>
   </PropertyGroup>
 </Project>

+ 9 - 5
Service/CheckServer/MainForm.Designer.cs

@@ -35,20 +35,24 @@
             // 
             this.listBox1.Dock = System.Windows.Forms.DockStyle.Fill;
             this.listBox1.FormattingEnabled = true;
-            this.listBox1.ItemHeight = 12;
+            this.listBox1.ItemHeight = 20;
             this.listBox1.Location = new System.Drawing.Point(0, 0);
+            this.listBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
             this.listBox1.Name = "listBox1";
-            this.listBox1.Size = new System.Drawing.Size(705, 338);
+            this.listBox1.Size = new System.Drawing.Size(940, 563);
             this.listBox1.TabIndex = 1;
             // 
             // MainForm
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(705, 338);
+            this.ClientSize = new System.Drawing.Size(940, 563);
             this.Controls.Add(this.listBox1);
+            this.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+            this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
             this.Name = "MainForm";
-            this.Text = "信号检测服务";
+            this.Text = "CPU参估服务";
             this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.MainForm_FormClosed);
             this.Load += new System.EventHandler(this.MainForm_LoadAsync);
             this.ResumeLayout(false);

+ 1 - 0
Service/CheckServer/MainForm.cs

@@ -152,6 +152,7 @@ namespace CheckServer
             }
         }
 
+
         //清理10分钟之前的文件
         private async Task ClearLocalFile()
         {

+ 2 - 2
Service/CheckServer/Program.cs

@@ -40,7 +40,7 @@ namespace CheckServer
             AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
             {
                 var args = e.ExceptionObject as Exception;
-                Serilog.Log.Error(args, "出现未处理的异常,程序即将退出!");
+                LogHelper.Error("出现未处理的异常,程序即将退出!", args).Wait(5000);
             };
             Application.ThreadException += (sender, e) =>
             {
@@ -95,7 +95,7 @@ namespace CheckServer
                 .WriteTo.Logger(p => p.Filter.ByIncludingOnly(e => e.Level == Serilog.Events.LogEventLevel.Error)
                     .WriteTo.File("Logs\\Error\\.log", rollingInterval: Serilog.RollingInterval.Day, outputTemplate: outputTemplate))
                 .CreateLogger();
-           
+
             if (IsRunningAsAdmin())
             {
                 MainForm mainForm = new MainForm();

+ 1 - 1
Service/ClearServiceData/ClearServiceData.csproj

@@ -7,7 +7,7 @@
     <ProjectGuid>{4B3968F4-BA71-4612-A0DF-48D724C385A2}</ProjectGuid>
     <OutputType>Exe</OutputType>
     <RootNamespace>ClearServiceData</RootNamespace>
-    <AssemblyName>服务数据清理</AssemblyName>
+    <AssemblyName>数据清理</AssemblyName>
     <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>

+ 7 - 1
Service/ClearServiceData/Program.cs

@@ -11,10 +11,16 @@ namespace ClearServiceData
     {
         static void Main(string[] args)
         {
+            Console.WriteLine("程序将删除平台及服务的日志文件、wwwroot中上传的临时文件,按Y继续");
+           var str= Console.ReadLine();
+            if (str.Trim().ToLower() != "y") return; 
             var dir1 = Directory.GetDirectories(".\\Service\\", "*Logs", SearchOption.AllDirectories);
             var dir2 = Directory.GetDirectories(".\\Service\\", "*wwwroot", SearchOption.AllDirectories);
             var dir3 = Directory.GetDirectories(".\\Service\\", "*tmp", SearchOption.AllDirectories);
-            var dirs = dir1.Concat(dir2).Concat(dir3);
+            var dir4 = Directory.GetDirectories(".\\", "*tmp", SearchOption.AllDirectories);
+            var dir5 = Directory.GetDirectories(".\\", "*Logs", SearchOption.AllDirectories);
+            var dir6 = Directory.GetDirectories(".\\", "*wwwroot", SearchOption.AllDirectories);
+            var dirs = dir1.Concat(dir2).Concat(dir3).Concat(dir4).Concat(dir5).Concat(dir6);
             foreach (var dir in dirs)
             {
                 try

+ 9 - 15
Service/CpuCgServer/CpuCgServer.csproj

@@ -39,12 +39,6 @@
     <ApplicationIcon>..\..\Service.ico</ApplicationIcon>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json.Bson, Version=1.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.Bson.1.0.2\lib\net45\Newtonsoft.Json.Bson.dll</HintPath>
-    </Reference>
     <Reference Include="Serilog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
       <HintPath>..\..\packages\Serilog.3.1.1\lib\net471\Serilog.dll</HintPath>
     </Reference>
@@ -154,27 +148,27 @@
     </None>
   </ItemGroup>
   <ItemGroup>
-    <None Include="AddIns\XcorrCpu.txt">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
+    <None Include="AddIns\XcorrCpu.txt" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
     <PostBuildEvent>del DevExpress*.xml,EntityFramework*.xml,Serilog*.xml,Newtonsoft*.xml
 del System*.xml,Microsoft*.xml,autofac*.xml,MySql*.xml,K4os*.xml,google*.xml
-del BouncyCastle*.xml
+del BouncyCastle*.xml,Serilog.Sinks.File.pdb
+
+del System.Text.Encodings.Web.dll
+del System.ValueTuple.dll
+del *.dll.config
 
 if not exist "AddIns" md AddIns
 move /Y *.dll AddIns
 move /Y *.pdb AddIns
 move AddIns\$(TargetName).pdb .
-copy $(SolutionDir)Service.svg Service.svg
 rmdir logs /S/Q
 rmdir wwwroot /S/Q
-
 if not exist ..\..\..\..\XdCxRhDW.App\bin\Debug\Service mkdir ..\..\..\..\XdCxRhDW.App\bin\Debug\Service
-if not exist ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\$(TargetName) mkdir ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\$(TargetName)
-xcopy * ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\$(TargetName) /sey
-del ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\$(TargetName)\*.tmp</PostBuildEvent>
+if not exist ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\CPU参估服务 mkdir ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\CPU参估服务
+xcopy * ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\CPU参估服务 /seyd
+del ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\CPU参估服务\*.tmp</PostBuildEvent>
   </PropertyGroup>
 </Project>

+ 8 - 4
Service/CpuCgServer/MainForm.Designer.cs

@@ -35,18 +35,22 @@
             // 
             this.listBox1.Dock = System.Windows.Forms.DockStyle.Fill;
             this.listBox1.FormattingEnabled = true;
-            this.listBox1.ItemHeight = 12;
+            this.listBox1.ItemHeight = 20;
             this.listBox1.Location = new System.Drawing.Point(0, 0);
+            this.listBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
             this.listBox1.Name = "listBox1";
-            this.listBox1.Size = new System.Drawing.Size(705, 338);
+            this.listBox1.Size = new System.Drawing.Size(940, 563);
             this.listBox1.TabIndex = 1;
             // 
             // MainForm
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(705, 338);
+            this.ClientSize = new System.Drawing.Size(940, 563);
             this.Controls.Add(this.listBox1);
+            this.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+            this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
             this.Name = "MainForm";
             this.Text = "CPU参估服务";
             this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.MainForm_FormClosed);

+ 4 - 3
Service/CpuCgServer/Program.cs

@@ -19,10 +19,10 @@ namespace CpuCgServer
 
             //设置私有路径
             Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;
-            AppDomain.CurrentDomain.SetData("PRIVATE_BINPATH", $"AddIns;");
+            AppDomain.CurrentDomain.SetData("PRIVATE_BINPATH", "AddIns;");
             var m = typeof(AppDomainSetup).GetMethod("UpdateContextProperty", BindingFlags.NonPublic | BindingFlags.Static);
             var funsion = typeof(AppDomain).GetMethod("GetFusionContext", BindingFlags.NonPublic | BindingFlags.Instance);
-            m.Invoke(null, new object[] { funsion.Invoke(AppDomain.CurrentDomain, null), "PRIVATE_BINPATH", $"AddIns;" });
+            m.Invoke(null, new object[] { funsion.Invoke(AppDomain.CurrentDomain, null), "PRIVATE_BINPATH", "AddIns;" });
 
             //c++dll加入环境变量
             string paths = Environment.GetEnvironmentVariable("PATH");
@@ -40,7 +40,7 @@ namespace CpuCgServer
             AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
             {
                 var args = e.ExceptionObject as Exception;
-                Serilog.Log.Error(args, "出现未处理的异常,程序即将退出!");
+                LogHelper.Error("出现未处理的异常,程序即将退出!", args).Wait(5000);
             };
             Application.ThreadException += (sender, e) =>
             {
@@ -95,6 +95,7 @@ namespace CpuCgServer
                 .WriteTo.Logger(p => p.Filter.ByIncludingOnly(e => e.Level == Serilog.Events.LogEventLevel.Error)
                     .WriteTo.File("Logs\\Error\\.log", rollingInterval: Serilog.RollingInterval.Day, outputTemplate: outputTemplate))
                 .CreateLogger();
+         
             if (IsRunningAsAdmin())
             {
                 MainForm mainForm = new MainForm();

+ 0 - 12
Service/GpuCgServer/AddIns/readme.txt

@@ -1,12 +0,0 @@
-/// -m f1
-/// -a f2
-/// -s smpCount
-/// -f samplingRate
-/// -c dtCenter
-/// -r dtRange
-/// -j dfrange
-/// -t snrThreshold
-/// -p 模式  0 精搜 1 粗估
-
-
--m d:/data/xcorr-d1.dat -a d:/data/xcorr-d2.dat -s 1048576 -f 1562500 -c 1778 -r 20 -j 16384 -t 14 -p 0

+ 8 - 17
Service/GpuCgServer/GpuCgServer.csproj

@@ -39,12 +39,6 @@
     <ApplicationIcon>..\..\Service.ico</ApplicationIcon>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json.Bson, Version=1.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.Bson.1.0.2\lib\net45\Newtonsoft.Json.Bson.dll</HintPath>
-    </Reference>
     <Reference Include="Serilog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
       <HintPath>..\..\packages\Serilog.3.1.1\lib\net471\Serilog.dll</HintPath>
     </Reference>
@@ -163,11 +157,6 @@
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
   </ItemGroup>
-  <ItemGroup>
-    <None Include="AddIns\readme.txt">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-  </ItemGroup>
   <ItemGroup>
     <None Include="AddIns\XcorrGpu.exe">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
@@ -177,19 +166,21 @@
   <PropertyGroup>
     <PostBuildEvent>del DevExpress*.xml,EntityFramework*.xml,Serilog*.xml,Newtonsoft*.xml
 del System*.xml,Microsoft*.xml,autofac*.xml,MySql*.xml,K4os*.xml,google*.xml
-del BouncyCastle*.xml
+del BouncyCastle*.xml,Serilog.Sinks.File.pdb
+
+del System.Text.Encodings.Web.dll
+del System.ValueTuple.dll
+del *.dll.config
 
 if not exist "AddIns" md AddIns
 move /Y *.dll AddIns
 move /Y *.pdb AddIns
 move AddIns\$(TargetName).pdb .
-copy $(SolutionDir)Service.svg Service.svg
 rmdir logs /S/Q
 rmdir wwwroot /S/Q
-
 if not exist ..\..\..\..\XdCxRhDW.App\bin\Debug\Service mkdir ..\..\..\..\XdCxRhDW.App\bin\Debug\Service
-if not exist ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\$(TargetName) mkdir ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\$(TargetName)
-xcopy * ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\$(TargetName) /sey
-del ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\$(TargetName)\*.tmp</PostBuildEvent>
+if not exist ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\GPU参估服务 mkdir ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\GPU参估服务
+xcopy * ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\GPU参估服务 /seyd
+del ..\..\..\..\XdCxRhDW.App\bin\Debug\Service\GPU参估服务\*.tmp</PostBuildEvent>
   </PropertyGroup>
 </Project>

+ 8 - 4
Service/GpuCgServer/MainForm.Designer.cs

@@ -35,18 +35,22 @@
             // 
             this.listBox1.Dock = System.Windows.Forms.DockStyle.Fill;
             this.listBox1.FormattingEnabled = true;
-            this.listBox1.ItemHeight = 12;
+            this.listBox1.ItemHeight = 20;
             this.listBox1.Location = new System.Drawing.Point(0, 0);
+            this.listBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
             this.listBox1.Name = "listBox1";
-            this.listBox1.Size = new System.Drawing.Size(705, 338);
+            this.listBox1.Size = new System.Drawing.Size(940, 563);
             this.listBox1.TabIndex = 1;
             // 
             // MainForm
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(705, 338);
+            this.ClientSize = new System.Drawing.Size(940, 563);
             this.Controls.Add(this.listBox1);
+            this.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+            this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
             this.Name = "MainForm";
             this.Text = "CPU参估服务";
             this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.MainForm_FormClosed);

+ 2 - 2
Service/GpuCgServer/Program.cs

@@ -40,7 +40,7 @@ namespace GpuCgServer
             AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
             {
                 var args = e.ExceptionObject as Exception;
-                Serilog.Log.Error(args, "出现未处理的异常,程序即将退出!");
+                LogHelper.Error("出现未处理的异常,程序即将退出!", args).Wait(5000);
             };
             Application.ThreadException += (sender, e) =>
             {
@@ -95,7 +95,7 @@ namespace GpuCgServer
                 .WriteTo.Logger(p => p.Filter.ByIncludingOnly(e => e.Level == Serilog.Events.LogEventLevel.Error)
                     .WriteTo.File("Logs\\Error\\.log", rollingInterval: Serilog.RollingInterval.Day, outputTemplate: outputTemplate))
                 .CreateLogger();
-         
+
             if (IsRunningAsAdmin())
             {
                 MainForm mainForm = new MainForm();

+ 4 - 0
Service/Test/AddIns/时隙获取/SlotHelper.cs

@@ -41,6 +41,10 @@ namespace X3TaskServer54
                 float[] lenF = new float[slotscount];
                 Marshal.Copy(slotst, startsF, 0, slotscount);
                 Marshal.Copy(slotle, lenF, 0, slotscount);
+                for (int i = 0; i < startsF.Length; i++)
+                {
+                    startsF[i] = startsF[i] + i * 1.386666666666666666666666f;//SlotChecker.dll有BUG,只返回了第一个突发的时间
+                }
                 for (int i = 0; i < slotscount; i++)
                 {
                     Slot s = new Slot()

BIN
Service/X1LeoTaskServer54/AddIns/时隙获取/SlotChecker.dll


+ 0 - 26
Service/X1LeoTaskServer54/AddIns/时隙获取/SlotChecker.h

@@ -1,26 +0,0 @@
-#pragma once
-
-#ifdef SLOTCHECKER
-#define SlotExport __declspec(dllexport)
-#else
-#define SlotExport __declspec(dllimport)
-#endif
-
-extern "C"
-{
-	// 释放内存
-	SlotExport void freeslots(float *slotst, float *slotle);
-
-	// 获取时间
-	// ifile 输入文件
-	// fbasetime y M d H m s
-	// frequenceM 文件对应频点
-	// fsampleM 原始文件采样率
-	// multi  抽取倍数
-	// slotscount 突发个数
-	// slotst 开始时间  s
-	// slotle 持续时间  ms
-	SlotExport int getslots(char *ifile, unsigned char fbasetime[6]
-		, float *frequenceM, float *fsampleM, int *multi
-		, int *slotscount, float **slotst, float **slotle);
-};

+ 0 - 115
Service/X1LeoTaskServer54/AddIns/时隙获取/SlotHelper.cs

@@ -1,115 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Runtime.InteropServices;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace X1LeoTaskServer54
-{
-    static class SlotHelper
-    {
-        #region cpp dll Interop 
-        private const string slotDll = @"AddIns\时隙获取\SlotChecker.dll";
-
-        [DllImport(slotDll, EntryPoint = "getslots", CallingConvention = CallingConvention.Cdecl)]
-        private extern static int GetFileSlots(string file, byte[] fileTime, ref float frequenceM, ref float fsampleM,
-            ref int multi, ref int slotscount, out IntPtr slotst, out IntPtr slotle);
-
-        [DllImport(slotDll, EntryPoint = "freeslots", CallingConvention = CallingConvention.Cdecl)]
-        private extern static void Free(IntPtr slotst, IntPtr slotle);
-        #endregion
-
-        public static SlotsInfo GetFileSlots(string file)
-        {
-            SlotsInfo res = new SlotsInfo();
-            string name = Path.GetFileName(file);
-            res.FreqDownMHz = Convert.ToDouble(name.Split(new string[] { "_", "MHz" }, StringSplitOptions.RemoveEmptyEntries)[1]);
-            byte[] timeData = new byte[6];
-            float frequenceM = 0, fsampleM = 0;
-            int multi = 0, slotscount = 0;
-            IntPtr slotst, slotle;
-            var ret = GetFileSlots(file, timeData, ref frequenceM, ref fsampleM, ref multi, ref slotscount, out slotst, out slotle);
-            if (ret == 0)
-            {
-                res.FrequenceM = (float)((long)((decimal)frequenceM * 1000000) / 1e6);
-                res.FsampleM = fsampleM;
-                res.Multi = multi;
-                res.AdTime = new DateTime(2000 + timeData[0], timeData[1], timeData[2], timeData[3], timeData[4], timeData[5]);
-                float[] startsF = new float[slotscount];
-                float[] lenF = new float[slotscount];
-                Marshal.Copy(slotst, startsF, 0, slotscount);
-                Marshal.Copy(slotle, lenF, 0, slotscount);
-                for (int i = 0; i < slotscount; i++)
-                {
-                    Slot s = new Slot()
-                    {
-                        StartPoint = (int)(fsampleM * 1e6 / multi * startsF[i]),
-                        TimeSeconds = startsF[i],
-                        Len = (int)(fsampleM * 1e6 / multi * lenF[i] * 1e-3)
-                    };
-                    res.Slots.Add(s);
-                }
-            }
-            Free(slotst, slotle);
-            return res;
-        }
-    }
-    /// <summary>
-    /// 突发信息
-    /// </summary>
-    class SlotsInfo
-    {
-        /// <summary>
-        /// 采集时刻
-        /// </summary>
-        public DateTime AdTime { get; set; }
-
-        /// <summary>
-        /// 信号下行频点MHz
-        /// </summary>
-        public double FreqDownMHz { get; set; }
-
-        /// <summary>
-        /// AD采样率
-        /// </summary>
-        public float FsampleM { get; set; }
-
-        /// <summary>
-        /// 信号下行频点
-        /// </summary>
-        public float FrequenceM { get; set; }
-
-        /// <summary>
-        /// 抽取倍数
-        /// </summary>
-        public float Multi { get; set; }
-
-        /// <summary>
-        /// 时隙位置集合
-        /// </summary>
-        public List<Slot> Slots { get; set; } = new List<Slot>();
-    }
-
-    /// <summary>
-    /// 时隙信息
-    /// </summary>
-    class Slot
-    {
-        /// <summary>
-        /// 起始样点
-        /// </summary>
-        public int StartPoint { get; set; }
-
-        /// <summary>
-        /// 结束样点
-        /// </summary>
-        public int Len { get; set; }
-
-        /// <summary>
-        /// 时间的秒数,避免误差
-        /// </summary>
-        public float TimeSeconds { get; set; }
-    }
-}

+ 3 - 3
Service/X1LeoTaskServer54/App.config

@@ -11,13 +11,13 @@
 		<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 ="Time1SatInfo" value="1234,-1608416.82,5994263.83,3139842.12,-6632.9542,-373.9141,-2678.0471"/>

+ 0 - 5
Service/X1LeoTaskServer54/HistoryFile.cs

@@ -20,11 +20,6 @@ namespace X1LeoTaskServer54
         /// </summary>
         public DateTime AdTime { get; set; }
 
-        /// <summary>
-        /// 分组号
-        /// </summary>
-        public int XDNo { get; set; }
-
         /// <summary>
         /// 下行频点MHz
         /// </summary>

+ 50 - 61
Service/X1LeoTaskServer54/Service/TaskService.cs

@@ -96,79 +96,61 @@ namespace X1LeoTaskServer54.Service
 
                         #region 第2步,扫描检测结果目录
                         var groupFiles = Directory.EnumerateFiles(CapDir, "*.dat", SearchOption.TopDirectoryOnly).Select(p => StringToAdFile(p))
-                        .GroupBy(m => m.XDNo).OrderBy(m => m.Key);
-
-                        if (!groupFiles.Any())
-                        {
-                            await LogHelper.Info($"【任务{dto.ID}】等待扫描文件...");
-                            await Task.Delay(10000);
-                        }
-                        foreach (var groupFile in groupFiles)//每一组文件代表同一组可定位的三个不同时刻的采集文件
+                        .GroupBy(p => p.FreqDownMHz);
+                        bool matched = false;
+                        var listTask = new List<Task>();
+                        foreach (var groupFile in groupFiles)//按频点分组
                         {
-                            if (cts.IsCancellationRequested) break;
-                            var first = groupFile.First();
-                            await LogHelper.Info($"【任务{dto.ID}】正在执行第{first.XDNo}组的采集文件");
-                            var group = groupFile.OrderBy(g => g.AdTime).ToArray();
-                            var freqsData = group.GroupBy(p => p.FreqDownMHz);
-                            var listTask = new List<Task>();
-                            foreach (var item in freqsData)
+                            var task = Task.Run(async () =>
                             {
-                                var list = item.ToList();
-                                if (list.Count != 3)
+                                var oneFreqItems = groupFile.OrderBy(p => p.AdTime).ToList();//按时间排序
+                                int idx = 0;
+                                while (oneFreqItems.Count > idx + 2)//表示能取到3个文件
                                 {
-                                    await LogHelper.Warning($"【任务{dto.ID}】第{first.XDNo}组{first.AdTime:yyyyMMddHHmmss}时刻-信号{list.First().FreqDownMHz}MHz-未找到三个时刻的信号文件,跳过此组数据");
-                                    return;
-                                }
-                                //group:同一组不同时刻的文件
-                                var task = Task.Run(async () =>
-                                {
-                                    DateTime adTime = item.First().AdTime;
-                                    double freq = item.First().FreqDownMHz;
-                                    int No = item.First().XDNo;
-                                    var ch0File = list[0];
-                                    var ch1File = list[1];
-                                    var ch2File = list[2];
+                                    var adFile1 = oneFreqItems[idx];
+                                    var adFile2 = oneFreqItems[idx + 1];
+                                    var adFile3 = oneFreqItems[idx + 2];
+                                    var adTime = adFile1.AdTime;
+                                    var freq = adFile1.FreqDownMHz;
+                                    matched = true;
                                     if (cts.IsCancellationRequested) return;
-
-
                                     Stopwatch sw = new Stopwatch();
                                     sw.Start();
-                                    string mainFile = await HttpHelper.UploadFileAsync(ch0File.File, baseUrl, token: cts.Token);//主星文件
-                                    string adja1File = await HttpHelper.UploadFileAsync(ch1File.File, baseUrl, token: cts.Token);//邻1星文件
-                                    string adja2File = await HttpHelper.UploadFileAsync(ch2File.File, baseUrl, token: cts.Token);//邻2星文件
+                                    string mainFile = await HttpHelper.UploadFileAsync(adFile1.File, baseUrl, token: cts.Token);//主星文件
+                                    string adja1File = await HttpHelper.UploadFileAsync(adFile2.File, baseUrl, token: cts.Token);//邻1星文件
+                                    string adja2File = await HttpHelper.UploadFileAsync(adFile3.File, baseUrl, token: cts.Token);//邻2星文件
 
                                     DetectDto detectDto = new DetectDto()
                                     {
                                         file1 = mainFile,
                                         dmcType = EnumSigCheckTypeDto.Ky5758,
-                                        fsHz = ch0File.Fs,
+                                        fsHz = adFile1.Fs,
                                         mergeRes = true,
                                         SigProc = true,
                                     };
-
                                     var deteResp = await HttpHelper.PostRequestAsync<List<DetectResDto>>(baseUrl + "DetectCg/DetectCalc", detectDto, token: cts.Token);
                                     if (deteResp.code != 200)
                                     {
-                                        await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz信号检测出错.{deteResp.msg}");
+                                        await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz信号检测出错.{deteResp.msg}");
                                         return;
                                     }
                                     var smps = deteResp.data.Select(m => new SmpPosition(m.Start, m.Length)).ToList();//怎么补0?
 
-                                    await LogHelper.Info($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-CPU参估开始,共{smps.Count}个突发...");
+                                    await LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-CPU参估开始,共{smps.Count}个突发...");
                                     var cgDto = new CpuCgMultiDto()
                                     {
                                         dtCenter = 0,
                                         dtRange = 40000,
                                         file1 = mainFile,
                                         file2 = adja1File,
-                                        samplingRate = ch0File.Fs,
+                                        samplingRate = adFile1.Fs,
                                         smpPositions = smps,
                                         snrThreshold = 15,
                                     };
                                     var result1 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
                                     if (result1.code != 200)
                                     {
-                                        await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-主星邻1星CPU参估出错.{result1.msg}");
+                                        await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-主星邻1星CPU参估出错.{result1.msg}");
                                         return;
                                     }
                                     cgDto = new CpuCgMultiDto()
@@ -177,7 +159,7 @@ namespace X1LeoTaskServer54.Service
                                         dtRange = 40000,
                                         file1 = mainFile,
                                         file2 = adja2File,
-                                        samplingRate = ch0File.Fs,
+                                        samplingRate = adFile1.Fs,
                                         smpPositions = smps,
                                         snrThreshold = 15,
                                     };
@@ -185,15 +167,15 @@ namespace X1LeoTaskServer54.Service
                                     sw.Stop();
                                     if (result2.code != 200)
                                     {
-                                        await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-主星邻2星CPU参估出错.{result2.msg}");
+                                        await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-主星邻2星CPU参估出错.{result2.msg}");
                                         return;
                                     }
-                                    await LogHelper.Info($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-CPU参估完成,耗时{sw.ElapsedMilliseconds}ms");
+                                    await LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-CPU参估完成,耗时{sw.ElapsedMilliseconds}ms");
                                     var data1 = result1.data;
                                     var data2 = result2.data;
                                     if (data1.Count != data2.Count || data1.Count != cgDto.smpPositions.Count)
                                     {
-                                        await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-参估结果个数和检测结果个数不匹配");
+                                        await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-参估结果个数和检测结果个数不匹配");
                                         return;
                                     }
                                     sw.Start();
@@ -201,7 +183,7 @@ namespace X1LeoTaskServer54.Service
                                     {
                                         try
                                         {
-                                            if (cts.IsCancellationRequested) break;
+                                            if (cts.IsCancellationRequested) return;
                                             LeoX1ParPosDto leoX1 = new LeoX1ParPosDto()
                                             {
                                                 TaskID = dto.ID,
@@ -233,13 +215,13 @@ namespace X1LeoTaskServer54.Service
                                                 Dto2 = PosDtoFactor * data2[i].Dt,
                                                 Dfo2 = data2[i].Df,
                                                 Snr2 = data2[i].Snr,
-                                                FreqUp = (ch0File.FreqDownMHz + 44) * 1e6,
+                                                FreqUp = (adFile1.FreqDownMHz + 44) * 1e6,
                                                 SatTxLon = dto.CapLon,
                                                 SatTxLat = dto.CapLat,
-                                                FreqDown = ch0File.FreqDownMHz * 1e6,
+                                                FreqDown = adFile1.FreqDownMHz * 1e6,
                                                 CheckRes = new CheckResDto()
                                                 {
-                                                    FileName = Path.GetFileName(ch0File.File),
+                                                    FileName = Path.GetFileName(adFile1.File),
                                                     SmpStart = cgDto.smpPositions[i].smpStart,
                                                     SmpCount = cgDto.smpPositions[i].smpCount,
                                                     PosCheckType = EnumPosCheckTypeDto.Ky5758,
@@ -248,7 +230,7 @@ namespace X1LeoTaskServer54.Service
                                             var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosLeX1ParAsync", leoX1);
                                             if (result.code != 200)
                                             {
-                                                await LogHelper.Error($"【任务{dto.ID}】第{No}组-{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz 第{i + 1}个突发定位异常.{result.msg}");
+                                                await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz 第{i + 1}个突发定位异常.{result.msg}");
                                             }
                                             else
                                             {
@@ -282,9 +264,9 @@ namespace X1LeoTaskServer54.Service
                                                 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($"{Convert.ToInt64(group.First().FreqDownMHz * 1e6):D12}\t");//下行频点
-                                                sb.Append($"{Convert.ToInt64((group.First().FreqDownMHz + 44) * 1e6):D12}\t");//上行频点
+                                                sb.Append($"{leoX1.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:其它),
                                                 sb.Append($"{0:D4}\t");//目标序号
                                                 sb.Append($"res\t");
@@ -318,15 +300,23 @@ namespace X1LeoTaskServer54.Service
                                         }
                                         catch (Exception ex)
                                         {
-                                            await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-时隙位置{data1[i].Smpstart}定位异常", ex);
+                                            await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-时隙位置{data1[i].Smpstart}定位异常", ex);
                                         }
                                     }
                                     sw.Stop();
-                                    await LogHelper.Info($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-定位完成,耗时{sw.ElapsedMilliseconds}ms");
-                                }, cts.Token);
-                                listTask.Add(task);
-                            }
-                            await Task.WhenAll(listTask);
+                                    await LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-定位完成,耗时{sw.ElapsedMilliseconds}ms");
+                                    idx++;
+
+                                }
+                            });
+                            listTask.Add(task);
+
+                        }
+                        await Task.WhenAll(listTask);
+                        if (!matched)
+                        {
+                            await LogHelper.Info($"【任务{dto.ID}】等待扫描文件...");
+                            await Task.Delay(10000, cts.Token);
                         }
                         #endregion
                     }
@@ -423,9 +413,9 @@ namespace X1LeoTaskServer54.Service
 
         private AdFile StringToAdFile(string file)
         {
-            //20240625151700_D260_FS96000_ch1_xd1.dat
+            //20240625184555_D261_FS96000_ch1.dat
             var name = Path.GetFileNameWithoutExtension(file).ToUpper();
-            var arr = name.Split(new string[] { "_", "D", "FS", "XD" }, StringSplitOptions.RemoveEmptyEntries);
+            var arr = name.Split(new string[] { "_", "D", "FS" }, StringSplitOptions.RemoveEmptyEntries);
             var time = DateTime.ParseExact(arr[0], "yyyyMMddHHmmss", null);
 
             AdFile adFile = new AdFile()
@@ -434,7 +424,6 @@ namespace X1LeoTaskServer54.Service
                 AdTime = time,
                 FreqDownMHz = Convert.ToDouble(arr[1]),
                 Fs = Convert.ToInt32(arr[2]),
-                XDNo = Convert.ToInt32(arr[4]),
             };
             return adFile;
         }

+ 4 - 10
Service/X1LeoTaskServer54/X1LeoTaskServer54.csproj

@@ -96,7 +96,6 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="AddIns\时隙获取\SlotHelper.cs" />
     <Compile Include="Controllers\LeoSat1TaskProcessingController.cs" />
     <Compile Include="HistoryFile.cs" />
     <Compile Include="LogHelper.cs" />
@@ -151,19 +150,14 @@
       <Name>05.XdCxRhDW.WebApi</Name>
     </ProjectReference>
   </ItemGroup>
-  <ItemGroup>
-    <Content Include="AddIns\时隙获取\SlotChecker.dll">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="AddIns\时隙获取\SlotChecker.h">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
     <PostBuildEvent>del DevExpress*.xml,EntityFramework*.xml,Serilog*.xml,Newtonsoft*.xml
 del System*.xml,Microsoft*.xml,autofac*.xml,MySql*.xml,K4os*.xml,google*.xml
-del BouncyCastle*.xml
+del BouncyCastle*.xml,Serilog.Sinks.File.pdb
+del System.Text.Encodings.Web.dll
+del System.ValueTuple.dll
+del *.dll.config
 
 if not exist "AddIns" md AddIns
 move /Y *.dll AddIns

+ 4 - 0
Service/X2D1TaskServer54/AddIns/时隙获取/SlotHelper.cs

@@ -41,6 +41,10 @@ namespace X2D1NoRefTaskServer54
                 float[] lenF = new float[slotscount];
                 Marshal.Copy(slotst, startsF, 0, slotscount);
                 Marshal.Copy(slotle, lenF, 0, slotscount);
+                for (int i = 0; i < startsF.Length; i++)
+                {
+                    startsF[i] = startsF[i] + i * 1.386666666666666666666666f;//SlotChecker.dll有BUG,只返回了第一个突发的时间
+                }
                 for (int i = 0; i < slotscount; i++)
                 {
                     Slot s = new Slot()

+ 3 - 2
Service/X2D1TaskServer54/Service/TaskService.cs

@@ -47,7 +47,6 @@ namespace X2D1NoRefTaskServer54.Service
             double.TryParse(DtoErrusstr, out DtoErrus);
             var EphErrmstr = ConfigurationManager.AppSettings["EphErrm"].Trim();
             double.TryParse(EphErrmstr, out EphErrm);
-            string useGpuStr = ConfigurationManager.AppSettings["UseGpuCg"];
         }
         public void StartAsync(X2D1NoRefTaskHandleDto dto)
         {
@@ -103,7 +102,7 @@ namespace X2D1NoRefTaskServer54.Service
                         if (!groupFiles.Any())
                         {
                             await LogHelper.Info($"【任务{dto.ID}】等待扫描文件...");
-                            await Task.Delay(10000);
+                            await Task.Delay(10000,cts.Token);
                         }
                         foreach (var groupFile in groupFiles)//每一组文件代表同一个时刻的
                         {
@@ -383,6 +382,8 @@ namespace X2D1NoRefTaskServer54.Service
                                                 sb.Append($"{100:D3}\t");//置信度
                                                 sb.Append($"{3}\t");//定位体制(0未知,1高轨多星,2高低轨,3星地,4星座)
                                                 sb.Append($"{(long)signalResult.data[i].Rate:D12}");//符号速率bps
+                                                sb.Append($"{(long)dto.CdbLon * 1e6:D10}");//超短站经度
+                                                sb.Append($"{(long)dto.CdbLat * 1e6:D10}");//超短站纬度
                                                 sb.Append("\r\n");
                                                 string resFile = Path.Combine(PosResDir, $"两星一地定位结果_{posRes.SigTime:yyyyMMdd}.txt");
                                                 lock (this)

+ 4 - 1
Service/X2D1TaskServer54/X2D1NoRefTaskServer54.csproj

@@ -180,7 +180,10 @@
   <PropertyGroup>
     <PostBuildEvent>del DevExpress*.xml,EntityFramework*.xml,Serilog*.xml,Newtonsoft*.xml
 del System*.xml,Microsoft*.xml,autofac*.xml,MySql*.xml,K4os*.xml,google*.xml
-del BouncyCastle*.xml
+del BouncyCastle*.xml,Serilog.Sinks.File.pdb
+del System.Text.Encodings.Web.dll
+del System.ValueTuple.dll
+del *.dll.config
 
 if not exist "AddIns" md AddIns
 move /Y *.dll AddIns

+ 3 - 3
Service/X2LeoTaskServer54/App.config

@@ -22,9 +22,9 @@
 		<!--卫星及星历-->
 		<add key ="MainSatInfo" value="23467,-41275189.6404,5820330.8446,6331022.0431,1,2,3"/>
 		<add key ="Adja1SatInfo" value="40892,4694560.4826,41891872.2374,47531.3795,1,2,3"/>
-		<!--下行频点(MHz)-->
-		<add key ="TarFreqDown" value="252.05"/>
-		<add key ="RefFreqDown" value="352.05"/>
+		
+		<!--参考信号频点(MHz)-->
+		<add key ="RefFreqDown" value="255.425"/>
 		
 		<!--定位时差系数-->
 		<add key="PosDtoFactor" value="-1"/>

+ 4 - 4
Service/X2LeoTaskServer54/AppDebug.config

@@ -22,10 +22,10 @@
 		<!--卫星及星历-->
 		<add key ="MainSatInfo" value="23467,-41275189.6404,5820330.8446,6331022.0431,1,2,3"/>
 		<add key ="Adja1SatInfo" value="40892,4694560.4826,41891872.2374,47531.3795,1,2,3"/>
-		<!--下行频点(MHz)-->
-		<add key ="TarFreqDown" value="252.05"/>
-		<add key ="RefFreqDown" value="352.05"/>
-		
+
+		<!--参考信号频点(MHz)-->
+		<add key ="RefFreqDown" value="255.425"/>
+
 		<!--定位时差系数-->
 		<add key="PosDtoFactor" value="-1"/>
 

+ 224 - 229
Service/X2LeoTaskServer54/Service/TaskService.cs

@@ -25,7 +25,6 @@ namespace X2LeoTaskServer54.Service
         double[] MainXYZ, Adja1XYZ;
         int PosDtoFactor;
 
-        double TarFreqDownMHz;
         double RefFreqDownMHz;
 
         double DtoErrus;
@@ -49,10 +48,6 @@ namespace X2LeoTaskServer54.Service
             int.TryParse(PosDtoFactorstr, out PosDtoFactor);
             if (PosDtoFactor == 0) PosDtoFactor = 1;
 
-
-            var TarFreqDownstr = ConfigurationManager.AppSettings["TarFreqDown"].Trim();
-            double.TryParse(TarFreqDownstr, out TarFreqDownMHz);
-
             var RefFreqDownstr = ConfigurationManager.AppSettings["RefFreqDown"].Trim();
             double.TryParse(RefFreqDownstr, out RefFreqDownMHz);
 
@@ -119,253 +114,254 @@ namespace X2LeoTaskServer54.Service
                         if (!groupFiles.Any())
                         {
                             await LogHelper.Info($"【任务{dto.ID}】等待扫描文件...");
-                            await Task.Delay(10000);
+                            await Task.Delay(10000, cts.Token);
                         }
-                        var listTask = new List<Task>();
+
                         foreach (var groupFile in groupFiles)//每一组文件代表同一组可定位的三个不同时刻的采集文件
                         {
                             if (cts.IsCancellationRequested) break;
 
                             var first = groupFile.First();
                             await LogHelper.Info($"【任务{dto.ID}】正在执行第{first.XDNo}组的采集文件");
-
                             var group = groupFile.OrderBy(g => g.AdTime).ToArray();
-                            if (group.Count() != 4)
+                            var freqItems = group.GroupBy(p => p.FreqDownMHz);
+                            var listTask = new List<Task>();
+                            foreach (var item in freqItems)
                             {
-                                await LogHelper.Warning($"【任务{dto.ID}】第{first.XDNo}组{first.AdTime:yyyyMMddHHmmss}时刻-信号{first.FreqDownMHz}MHz-未找到双星目标及参考的信号文件,跳过此组数据");
-                                return;
-                            }
-                            //group:同一组不同时刻的文件
-                            var task = Task.Run(async () =>
-                            {
-                                DateTime adTime = groupFile.First().AdTime;
-                                double freq = TarFreqDownMHz;
-                                int No = groupFile.First().XDNo;
-                                var tarInfo = group.Where(m => m.FreqDownMHz == TarFreqDownMHz);
-                                var refInfo = group.Where(m => m.FreqDownMHz == RefFreqDownMHz);
-
-                                var tarFileInfo1 = tarInfo.FirstOrDefault(t => t.Ch == 1);
-                                var tarFileInfo2 = tarInfo.FirstOrDefault(t => t.Ch == 2);
-                                var refFileInfo1 = refInfo.FirstOrDefault(t => t.Ch == 1);
-                                var refFileInfo2 = refInfo.FirstOrDefault(t => t.Ch == 2);
-                                if (tarFileInfo1 == null)
-                                {
-                                    await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{TarFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
-                                    return;
-                                }
-                                if (tarFileInfo2 == null)
-                                {
-                                    await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{TarFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
-                                    return;
-                                }
-                                if (refFileInfo1 == null)
+                                if (item.Count() != 4)
                                 {
-                                    await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{RefFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
+                                    await LogHelper.Warning($"【任务{dto.ID}】第{first.XDNo}组{first.AdTime:yyyyMMddHHmmss}时刻-信号{item.First().FreqDownMHz}MHz-未找到双星目标及参考的信号文件,跳过此组数据");
                                     return;
                                 }
-                                if (refFileInfo2 == null)
+                                //group:同一组不同时刻的文件
+                                var task = Task.Run(async () =>
                                 {
-                                    await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{RefFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
-                                    return;
-                                }
-                                if (cts.IsCancellationRequested) return;
+                                    DateTime adTime = first.AdTime;
+                                    int No = first.XDNo;
+                                    var tarInfo = group.Where(m => m.FreqDownMHz == TarFreqDownMHz);
+                                    var refInfo = group.Where(m => m.FreqDownMHz == RefFreqDownMHz);
+                                    var tarFileInfo1 = tarInfo.FirstOrDefault(t => t.Ch == 1);
+                                    var tarFileInfo2 = tarInfo.FirstOrDefault(t => t.Ch == 2);
+                                    var refFileInfo1 = refInfo.FirstOrDefault(t => t.Ch == 1);
+                                    var refFileInfo2 = refInfo.FirstOrDefault(t => t.Ch == 2);
+                                    if (tarFileInfo1 == null)
+                                    {
+                                        await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{TarFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
+                                        return;
+                                    }
+                                    if (tarFileInfo2 == null)
+                                    {
+                                        await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{TarFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
+                                        return;
+                                    }
+                                    if (refFileInfo1 == null)
+                                    {
+                                        await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{RefFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
+                                        return;
+                                    }
+                                    if (refFileInfo2 == null)
+                                    {
+                                        await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{RefFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
+                                        return;
+                                    }
+                                    if (cts.IsCancellationRequested) return;
 
 
-                                Stopwatch sw = new Stopwatch();
-                                sw.Start();
-                                string tarFile1 = await HttpHelper.UploadFileAsync(tarFileInfo1.File, baseUrl, token: cts.Token);//目标主星文件
-                                string tarFile2 = await HttpHelper.UploadFileAsync(tarFileInfo2.File, baseUrl, token: cts.Token);//目标邻1星文件
-                                string refFile1 = await HttpHelper.UploadFileAsync(refFileInfo1.File, baseUrl, token: cts.Token);//参考主星文件
-                                string refFile2 = await HttpHelper.UploadFileAsync(refFileInfo2.File, baseUrl, token: cts.Token);//参考邻1星文件
+                                    Stopwatch sw = new Stopwatch();
+                                    sw.Start();
+                                    string tarFile1 = await HttpHelper.UploadFileAsync(tarFileInfo1.File, baseUrl, token: cts.Token);//目标主星文件
+                                    string tarFile2 = await HttpHelper.UploadFileAsync(tarFileInfo2.File, baseUrl, token: cts.Token);//目标邻1星文件
+                                    string refFile1 = await HttpHelper.UploadFileAsync(refFileInfo1.File, baseUrl, token: cts.Token);//参考主星文件
+                                    string refFile2 = await HttpHelper.UploadFileAsync(refFileInfo2.File, baseUrl, token: cts.Token);//参考邻1星文件
 
-                                DetectDto detectDto = new DetectDto()
-                                {
-                                    file1 = tarFile1,
-                                    dmcType = EnumSigCheckTypeDto.Ky5758,
-                                    fsHz = tarFileInfo1.Fs,
-                                    mergeRes = true,
-                                    SigProc = true,
-                                };
-
-                                var deteResp = await HttpHelper.PostRequestAsync<List<DetectResDto>>(baseUrl + "DetectCg/DetectCalc", detectDto, token: cts.Token);
-                                if (deteResp.code != 200)
-                                {
-                                    await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz信号检测出错.{deteResp.msg}");
-                                    return;
-                                }
-                                var smps = deteResp.data.Select(m => new SmpPosition(m.Start, m.Length)).ToList();//怎么补0?
+                                    DetectDto detectDto = new DetectDto()
+                                    {
+                                        file1 = tarFile1,
+                                        dmcType = EnumSigCheckTypeDto.Ky5758,
+                                        fsHz = tarFileInfo1.Fs,
+                                        mergeRes = true,
+                                        SigProc = true,
+                                    };
+
+                                    var deteResp = await HttpHelper.PostRequestAsync<List<DetectResDto>>(baseUrl + "DetectCg/DetectCalc", detectDto, token: cts.Token);
+                                    if (deteResp.code != 200)
+                                    {
+                                        await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz信号检测出错.{deteResp.msg}");
+                                        return;
+                                    }
+                                    var smps = deteResp.data.Select(m => new SmpPosition(m.Start, m.Length)).ToList();//怎么补0?
 
-                                await LogHelper.Info($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-CPU参估开始,共{smps.Count}个突发...");
-                                var cgDto = new CpuCgMultiDto()
-                                {
-                                    dtCenter = 0,
-                                    dtRange = 40000,
-                                    file1 = tarFile1,
-                                    file2 = tarFile2,
-                                    samplingRate = tarFileInfo1.Fs,
-                                    smpPositions = smps,
-                                    snrThreshold = 15,
-                                };
-                                var result1 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
-                                if (result1.code != 200)
-                                {
-                                    await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-目标主星邻1星CPU参估出错.{result1.msg}");
-                                    return;
-                                }
-                                var cpuCgDto = new CpuCgDto()
-                                {
-                                    dtCenter = 0,
-                                    dtRange = 2000,
-                                    file1 = refFile1,
-                                    file2 = refFile2,
-                                    samplingRate = tarFileInfo1.Fs,
-                                    smpStart = 0,
-                                    smpCount = 0,
-                                    snrThreshold = 15,
-                                };
-                                var result2 = await HttpHelper.PostRequestAsync<CpuCgResDto>(baseUrl + "DetectCg/CpuCgCalc", cpuCgDto, token: cts.Token);
-                                sw.Stop();
-                                if (result2.code != 200)
-                                {
-                                    await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-参考主星邻2星CPU参估出错.{result2.msg}");
-                                    return;
-                                }
-                                await LogHelper.Info($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-CPU参估完成,耗时{sw.ElapsedMilliseconds}ms");
-                                var data1 = result1.data;
-                                var data2 = result2.data;
-                                if (data1.Count != cgDto.smpPositions.Count)
-                                {
-                                    await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-参估结果个数和检测结果个数不匹配");
-                                    return;
-                                }
-                                sw.Start();
-                                for (int i = 0; i < data1.Count; i++)
-                                {
-                                    try
+                                    await LogHelper.Info($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-CPU参估开始,共{smps.Count}个突发...");
+                                    var cgDto = new CpuCgMultiDto()
+                                    {
+                                        dtCenter = 0,
+                                        dtRange = 40000,
+                                        file1 = tarFile1,
+                                        file2 = tarFile2,
+                                        samplingRate = tarFileInfo1.Fs,
+                                        smpPositions = smps,
+                                        snrThreshold = 15,
+                                    };
+                                    var result1 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
+                                    if (result1.code != 200)
+                                    {
+                                        await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-目标主星邻1星CPU参估出错.{result1.msg}");
+                                        return;
+                                    }
+                                    var cpuCgDto = new CpuCgDto()
                                     {
-                                        if (cts.IsCancellationRequested) break;
-                                        LeoX2ParPosDto leoX2 = new LeoX2ParPosDto()
+                                        dtCenter = 0,
+                                        dtRange = 2000,
+                                        file1 = refFile1,
+                                        file2 = refFile2,
+                                        samplingRate = tarFileInfo1.Fs,
+                                        smpStart = 0,
+                                        smpCount = 0,
+                                        snrThreshold = 15,
+                                    };
+                                    var result2 = await HttpHelper.PostRequestAsync<CpuCgResDto>(baseUrl + "DetectCg/CpuCgCalc", cpuCgDto, token: cts.Token);
+                                    sw.Stop();
+                                    if (result2.code != 200)
+                                    {
+                                        await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-参考主星邻2星CPU参估出错.{result2.msg}");
+                                        return;
+                                    }
+                                    await LogHelper.Info($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-CPU参估完成,耗时{sw.ElapsedMilliseconds}ms");
+                                    var data1 = result1.data;
+                                    var data2 = result2.data;
+                                    if (data1.Count != cgDto.smpPositions.Count)
+                                    {
+                                        await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-参估结果个数和检测结果个数不匹配");
+                                        return;
+                                    }
+                                    sw.Start();
+                                    for (int i = 0; i < data1.Count; i++)
+                                    {
+                                        try
                                         {
-                                            TaskID = dto.ID,
-                                            SigTime = adTime.AddSeconds(data1[i].TimeSeconds),
-                                            MainCode = MainSatCode,
-                                            AdjaCode = Adja1SatCode,
-                                            MainX = MainXYZ[0],
-                                            MainY = MainXYZ[1],
-                                            MainZ = MainXYZ[2],
-                                            MainVx = MainXYZ[3],
-                                            MainVy = MainXYZ[4],
-                                            MainVz = MainXYZ[5],
-                                            AdjaX = Adja1XYZ[0],
-                                            AdjaY = Adja1XYZ[1],
-                                            AdjaZ = Adja1XYZ[2],
-                                            AdjaVx = Adja1XYZ[3],
-                                            AdjaVy = Adja1XYZ[4],
-                                            AdjaVz = Adja1XYZ[5],
-                                            Dto = PosDtoFactor * data1[i].Dt,
-                                            Dfo = data1[i].Df,
-                                            Snr = data1[i].Snr,
-                                            YbMainDto = 260000,
-                                            YbAdjaDto = 260000 + PosDtoFactor * data2.Dt,
-                                            YbMainDfo = 100,
-                                            YbAdjaDfo = 100 + data2.Df,
-                                            TarFreqUp = (tarFileInfo1.FreqDownMHz + 44) * 1e6,
-                                            RefFreqUp = (refFileInfo1.FreqDownMHz + 44) * 1e6,
-                                            SatTxLon = dto.CapLon,
-                                            SatTxLat = dto.CapLat,
-                                            TarFreqDown = tarFileInfo1.FreqDownMHz * 1e6,
-                                            RefFreqDown = refFileInfo1.FreqDownMHz * 1e6,
-                                            CheckRes = new CheckResDto()
+                                            if (cts.IsCancellationRequested) break;
+                                            LeoX2ParPosDto leoX2 = new LeoX2ParPosDto()
                                             {
-                                                FileName = Path.GetFileName(tarFileInfo1.File),
-                                                SmpStart = cgDto.smpPositions[i].smpStart,
-                                                SmpCount = cgDto.smpPositions[i].smpCount,
-                                                PosCheckType = EnumPosCheckTypeDto.Ky5758,
-                                            }
-                                        };
-                                        var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosLeX2ParAsync", leoX2);
-                                        if (result.code != 200)
-                                        {
-                                            await LogHelper.Error($"【任务{dto.ID}】第{No}组-{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz 第{i + 1}个突发定位异常.{result.msg}");
-                                        }
-                                        else
-                                        {
-                                            var posRes = result.data;
-                                            double posLon = posRes.PosLon;
-                                            double posLat = posRes.PosLat;
-                                            if (leoX2.Snr == 0)
+                                                TaskID = dto.ID,
+                                                SigTime = adTime.AddSeconds(data1[i].TimeSeconds),
+                                                MainCode = MainSatCode,
+                                                AdjaCode = Adja1SatCode,
+                                                MainX = MainXYZ[0],
+                                                MainY = MainXYZ[1],
+                                                MainZ = MainXYZ[2],
+                                                MainVx = MainXYZ[3],
+                                                MainVy = MainXYZ[4],
+                                                MainVz = MainXYZ[5],
+                                                AdjaX = Adja1XYZ[0],
+                                                AdjaY = Adja1XYZ[1],
+                                                AdjaZ = Adja1XYZ[2],
+                                                AdjaVx = Adja1XYZ[3],
+                                                AdjaVy = Adja1XYZ[4],
+                                                AdjaVz = Adja1XYZ[5],
+                                                Dto = PosDtoFactor * data1[i].Dt,
+                                                Dfo = data1[i].Df,
+                                                Snr = data1[i].Snr,
+                                                YbMainDto = 260000,
+                                                YbAdjaDto = 260000 + PosDtoFactor * data2.Dt,
+                                                YbMainDfo = 100,
+                                                YbAdjaDfo = 100 + data2.Df,
+                                                TarFreqUp = (tarFileInfo1.FreqDownMHz + 44) * 1e6,
+                                                RefFreqUp = (refFileInfo1.FreqDownMHz + 44) * 1e6,
+                                                SatTxLon = dto.CapLon,
+                                                SatTxLat = dto.CapLat,
+                                                TarFreqDown = tarFileInfo1.FreqDownMHz * 1e6,
+                                                RefFreqDown = refFileInfo1.FreqDownMHz * 1e6,
+                                                CheckRes = new CheckResDto()
+                                                {
+                                                    FileName = Path.GetFileName(tarFileInfo1.File),
+                                                    SmpStart = cgDto.smpPositions[i].smpStart,
+                                                    SmpCount = cgDto.smpPositions[i].smpCount,
+                                                    PosCheckType = EnumPosCheckTypeDto.Ky5758,
+                                                }
+                                            };
+                                            var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosLeX2ParAsync", leoX2);
+                                            if (result.code != 200)
                                             {
-                                                posLon = 0;
-                                                posLat = 0;
+                                                await LogHelper.Error($"【任务{dto.ID}】第{No}组-{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz 第{i + 1}个突发定位异常.{result.msg}");
                                             }
-                                            ErrorEllipseLeoX2Dto errdto = new ErrorEllipseLeoX2Dto()
-                                            {
-                                                MsEph = MainXYZ,
-                                                NsEph = Adja1XYZ,
-                                                RefGeod = new double[3] { dto.RefLon, dto.RefLat, 0 },
-                                                SelectPoint = new double[3] { posLon, posLat, 0 },
-                                                DtoErr = DtoErrus * 1e-6,
-                                                DfoErr = DfoErrHz,
-                                                EphPosErr = EphPosErrM,
-                                                EphVelErr = EphVelErr,
-                                                fu1 = leoX2.TarFreqUp,
-                                                fu2 = leoX2.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($"{Convert.ToInt64(group.First().FreqDownMHz * 1e6):D12}\t");//下行频点
-                                            sb.Append($"{Convert.ToInt64((group.First().FreqDownMHz + 44) * 1e6):D12}\t");//上行频点
-                                            sb.Append($"{GetSignalType(deteResp.data[i].ModType)}\t");//信号样式(暂定有这些1:CPM,2:BPSK,4:QPSK,9:其它),
-                                            sb.Append($"{0:D4}\t");//目标序号
-                                            sb.Append($"res\t");
-                                            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(data2.Snr * 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");
-                                            sb.Append($"{(long)errRes.LongRadius:D8}\t");//长轴m
-                                            sb.Append($"{(long)errRes.ShortRadius:D8}\t");//短轴m
-                                            sb.Append($"{(long)errRes.DipAngle:D7}\t");//倾角°
-                                            sb.Append($"{data1.Count:D2}\t");//时隙属性
-                                            sb.Append($"{1}\t");//所属卫星
-                                            sb.Append($"{100:D3}\t");//置信度
-                                            sb.Append($"{4}\t");//定位体制(星地=3)
-                                            sb.Append($"{(long)deteResp.data[i].ModRate.Value:D12}");//符号速率bps  12个
-                                            sb.Append("\r\n");
-                                            string resFile = Path.Combine(PosResDir, $"低轨双星定位结果_{posRes.SigTime:yyyyMMdd}.txt");
-                                            lock (this)
+                                            else
                                             {
-                                                File.AppendAllText(resFile, sb.ToString());
+                                                var posRes = result.data;
+                                                double posLon = posRes.PosLon;
+                                                double posLat = posRes.PosLat;
+                                                if (leoX2.Snr == 0)
+                                                {
+                                                    posLon = 0;
+                                                    posLat = 0;
+                                                }
+                                                ErrorEllipseLeoX2Dto errdto = new ErrorEllipseLeoX2Dto()
+                                                {
+                                                    MsEph = MainXYZ,
+                                                    NsEph = Adja1XYZ,
+                                                    RefGeod = new double[3] { dto.RefLon, dto.RefLat, 0 },
+                                                    SelectPoint = new double[3] { posLon, posLat, 0 },
+                                                    DtoErr = DtoErrus * 1e-6,
+                                                    DfoErr = DfoErrHz,
+                                                    EphPosErr = EphPosErrM,
+                                                    EphVelErr = EphVelErr,
+                                                    fu1 = leoX2.TarFreqUp,
+                                                    fu2 = leoX2.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($"{Convert.ToInt64(group.First().FreqDownMHz * 1e6):D12}\t");//下行频点
+                                                sb.Append($"{Convert.ToInt64((group.First().FreqDownMHz + 44) * 1e6):D12}\t");//上行频点
+                                                sb.Append($"{GetSignalType(deteResp.data[i].ModType)}\t");//信号样式(暂定有这些1:CPM,2:BPSK,4:QPSK,9:其它),
+                                                sb.Append($"{0:D4}\t");//目标序号
+                                                sb.Append($"res\t");
+                                                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(data2.Snr * 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");
+                                                sb.Append($"{(long)errRes.LongRadius:D8}\t");//长轴m
+                                                sb.Append($"{(long)errRes.ShortRadius:D8}\t");//短轴m
+                                                sb.Append($"{(long)errRes.DipAngle:D7}\t");//倾角°
+                                                sb.Append($"{data1.Count:D2}\t");//时隙属性
+                                                sb.Append($"{1}\t");//所属卫星
+                                                sb.Append($"{100:D3}\t");//置信度
+                                                sb.Append($"{4}\t");//定位体制(星地=3)
+                                                sb.Append($"{(long)deteResp.data[i].ModRate.Value:D12}");//符号速率bps  12个
+                                                sb.Append("\r\n");
+                                                string resFile = Path.Combine(PosResDir, $"低轨双星定位结果_{posRes.SigTime:yyyyMMdd}.txt");
+                                                lock (this)
+                                                {
+                                                    File.AppendAllText(resFile, sb.ToString());
+                                                }
                                             }
                                         }
+                                        catch (Exception ex)
+                                        {
+                                            await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-时隙位置{data1[i].Smpstart}定位异常", ex);
+                                        }
                                     }
-                                    catch (Exception ex)
-                                    {
-                                        await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-时隙位置{data1[i].Smpstart}定位异常", ex);
-                                    }
-                                }
-                                sw.Stop();
-                                await LogHelper.Info($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-定位完成,耗时{sw.ElapsedMilliseconds}ms");
-                            }, cts.Token);
-                            listTask.Add(task);
-
+                                    sw.Stop();
+                                    await LogHelper.Info($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-定位完成,耗时{sw.ElapsedMilliseconds}ms");
+                                }, cts.Token);
+                                listTask.Add(task);
+                            }
                             await Task.WhenAll(listTask);
                         }
                         #endregion
@@ -463,9 +459,9 @@ namespace X2LeoTaskServer54.Service
 
         private AdFile StringToAdFile(string file)
         {
-            //20240409094240_ADC_ch02.dat
+            //20240625184555_D261_FS96000_ch1.dat
             var name = Path.GetFileNameWithoutExtension(file).ToUpper();
-            var arr = name.Split(new string[] { "_", "CH", "C", "XD" }, StringSplitOptions.RemoveEmptyEntries);
+            var arr = name.Split(new string[] { "_", "D", "FS", "CH" }, StringSplitOptions.RemoveEmptyEntries);
             var time = DateTime.ParseExact(arr[0], "yyyyMMddHHmmss", null);
 
             AdFile adFile = new AdFile()
@@ -475,7 +471,6 @@ namespace X2LeoTaskServer54.Service
                 FreqDownMHz = Convert.ToDouble(arr[1]),
                 Fs = Convert.ToInt32(arr[2]),
                 Ch = Convert.ToInt32(arr[3]),
-                XDNo = Convert.ToInt32(arr[4]),
             };
             return adFile;
         }

+ 4 - 1
Service/X2LeoTaskServer54/X2LeoTaskServer54.csproj

@@ -154,7 +154,10 @@
   <PropertyGroup>
     <PostBuildEvent>del DevExpress*.xml,EntityFramework*.xml,Serilog*.xml,Newtonsoft*.xml
 del System*.xml,Microsoft*.xml,autofac*.xml,MySql*.xml,K4os*.xml,google*.xml
-del BouncyCastle*.xml
+del BouncyCastle*.xml,Serilog.Sinks.File.pdb
+del System.Text.Encodings.Web.dll
+del System.ValueTuple.dll
+del *.dll.config
 
 if not exist "AddIns" md AddIns
 move /Y *.dll AddIns

+ 1 - 1
Service/X3LeoTaskServer54/Service/TaskService.cs

@@ -103,7 +103,7 @@ namespace X3LeoTaskServer54.Service
                         if (!groupFiles.Any())
                         {
                             await LogHelper.Info($"【任务{dto.ID}】等待扫描文件...");
-                            await Task.Delay(10000);
+                            await Task.Delay(10000, cts.Token);
                         }
                         var listTask = new List<Task>();
                         foreach (var groupFile in groupFiles)//每一组文件代表同一组可定位的三个不同时刻的采集文件

+ 4 - 1
Service/X3LeoTaskServer54/X3LeoTaskServer54.csproj

@@ -154,7 +154,10 @@
   <PropertyGroup>
     <PostBuildEvent>del DevExpress*.xml,EntityFramework*.xml,Serilog*.xml,Newtonsoft*.xml
 del System*.xml,Microsoft*.xml,autofac*.xml,MySql*.xml,K4os*.xml,google*.xml
-del BouncyCastle*.xml
+del BouncyCastle*.xml,Serilog.Sinks.File.pdb
+del System.Text.Encodings.Web.dll
+del System.ValueTuple.dll
+del *.dll.config
 
 if not exist "AddIns" md AddIns
 move /Y *.dll AddIns

+ 4 - 0
Service/X3TaskServer54/AddIns/时隙获取/SlotHelper.cs

@@ -41,6 +41,10 @@ namespace X3TaskServer54
                 float[] lenF = new float[slotscount];
                 Marshal.Copy(slotst, startsF, 0, slotscount);
                 Marshal.Copy(slotle, lenF, 0, slotscount);
+                for (int i = 0; i < startsF.Length; i++)
+                {
+                    startsF[i] = startsF[i] + i * 1.386666666666666666666666f;//SlotChecker.dll有BUG,只返回了第一个突发的时间
+                }
                 for (int i = 0; i < slotscount; i++)
                 {
                     Slot s = new Slot()

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

@@ -96,7 +96,7 @@ namespace X3TaskServer54.Service
                         if (!groupFiles.Any())
                         {
                             await LogHelper.Info($"【任务{dto.ID}】等待扫描文件...");
-                            await Task.Delay(10000);
+                            await Task.Delay(10000, cts.Token);
                         }
 
                         foreach (var groupFile in groupFiles)//每一组文件代表同一个时刻的,gourpFile时相同时刻的不同频点的文件

+ 4 - 1
Service/X3TaskServer54/X3TaskServer54.csproj

@@ -180,7 +180,10 @@
   <PropertyGroup>
     <PostBuildEvent>del DevExpress*.xml,EntityFramework*.xml,Serilog*.xml,Newtonsoft*.xml
 del System*.xml,Microsoft*.xml,autofac*.xml,MySql*.xml,K4os*.xml,google*.xml
-del BouncyCastle*.xml
+del BouncyCastle*.xml,Serilog.Sinks.File.pdb
+del System.Text.Encodings.Web.dll
+del System.ValueTuple.dll
+del *.dll.config
 
 if not exist "AddIns" md AddIns
 move /Y *.dll AddIns

+ 1 - 1
XdCxRhDW.App/Controllers/EllipseController.cs

@@ -54,7 +54,7 @@ namespace XdCxRhDW.App.Controllers
         }
 
         /// <summary>
-        /// 低轨单星带参误差椭圆
+        /// 低轨单星误差椭圆(单星没有参考)
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>

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

@@ -559,8 +559,8 @@ namespace XdCxRhDW.App.Controllers
         }
         #endregion
 
-        #region 低轨单星双频差带参定位
-
+        #region 低轨单星双频差定位
+        //(单星没有参考的概念)
         [HttpPost]
         public async Task<AjaxResult<PosResDto>> PosLeX1ParAsync(LeoX1ParPosDto dto)
         {

+ 6 - 6
XdCxRhDW.App/EditForms/SignalEmulation.cs

@@ -75,15 +75,15 @@ namespace XdCxRhDW.DataEmulation
                 string f1, f2, f3;
                 if (txtSplitTime.Checked)
                 {
-                    f1 = $"信号仿真\\{t1:yyyyMMddHHmmss}_D{260}_{fsHz}_ch1_xd1.dat";
-                    f2 = $"信号仿真\\{t1.AddMinutes(5):yyyyMMddHHmmss}_D{260}_{fsHz}_ch1_xd1.dat";
-                    f3 = $"信号仿真\\{t1.AddMinutes(10):yyyyMMddHHmmss}_D{260}_{fsHz}_ch1_xd1.dat";
+                    f1 = $"信号仿真\\{t1:yyyyMMddHHmmss}_D{260}_FS{fsHz}_ch1_xd1.dat";
+                    f2 = $"信号仿真\\{t1.AddMinutes(5):yyyyMMddHHmmss}_D{260}_FS{fsHz}_ch1_xd1.dat";
+                    f3 = $"信号仿真\\{t1.AddMinutes(10):yyyyMMddHHmmss}_D{260}_FS{fsHz}_ch1_xd1.dat";
                 }
                 else
                 {
-                    f1 = $"信号仿真\\{t1:yyyyMMddHHmmss}_D{260}_{fsHz}_ch1.dat";
-                    f2 = $"信号仿真\\{t1:yyyyMMddHHmmss}_D{260}_{fsHz}_ch2.dat";
-                    f3 = $"信号仿真\\{t1:yyyyMMddHHmmss}_D{260}_{fsHz}_ch3.dat";
+                    f1 = $"信号仿真\\{t1:yyyyMMddHHmmss}_D{260}_FS{fsHz}_ch1.dat";
+                    f2 = $"信号仿真\\{t1:yyyyMMddHHmmss}_D{260}_FS{fsHz}_ch2.dat";
+                    f3 = $"信号仿真\\{t1:yyyyMMddHHmmss}_D{260}_FS{fsHz}_ch3.dat";
                 }
                 DataEmulationHelper.GenBrustFiles(f1, f2, f3, fsHz, brustCount, dt1, df1, dt2, df2);
             });

+ 5 - 0
XdCxRhDW.App/MainForm.cs

@@ -86,6 +86,11 @@ namespace XdCxRhDW
                 new CtrlSysSettings() { Dock = DockStyle.Fill, Parent = frm };
                 if (frm.ShowDialog() != DialogResult.Cancel)
                     StartWebApi();
+                else
+                {
+                    this.Close();
+                    return;
+                }
             }
             this.HtmlText = $"<size=12>{text}(<size=9>{SysConfig.Config.TimeZoneDisplayName}</size>)";
             Messenger.Defalut.Sub<SysSetings>("时区改变", settings =>

+ 0 - 2
XdCxRhDW.App/UserControl/CtrlHome.cs

@@ -575,8 +575,6 @@ namespace XdCxRhDW.App.UserControl
                                 return;
                             }
                         }
-
-
                         if (tsk.PosType == EnumPosType.X2D1)
                         {
                             //下发任务

+ 1 - 0
XdCxRhDW.App/UserControl/CtrlSat.cs

@@ -74,6 +74,7 @@ namespace XdCxRhDW.App.UserControl
                     find.SatName = editItem.SatName;
                     find.SatCode = editItem.SatCode;
                     find.SatLon = editItem.SatLon;
+                    find.SatTrans = editItem.SatTrans;
                     await db.SaveChangesAsync();
                 }
                 return editItem;

+ 2 - 2
XdCxRhDW.Entity/EntityEnum.cs

@@ -110,9 +110,9 @@ namespace XdCxRhDW.Entity
         X3TwoDtoNoRef,
 
         /// <summary>
-        /// 低轨单星带参定位
+        /// 低轨单星定位
         /// </summary>
-        [Display(Name = "低轨单星带参定位")]
+        [Display(Name = "低轨单星定位")]//单星没有参考的概念
         X1Leo,
 
         /// <summary>