|
@@ -24,6 +24,7 @@ namespace X2LeoTaskServer54.Service
|
|
|
int Adja1SatCode;
|
|
|
double[] MainXYZ, Adja1XYZ;
|
|
|
int PosDtoFactor;
|
|
|
+ bool useGpuCg = false;
|
|
|
|
|
|
double TarFreqDownMHz;
|
|
|
double RefFreqDownMHz;
|
|
@@ -65,6 +66,10 @@ namespace X2LeoTaskServer54.Service
|
|
|
double.TryParse(EphPosErrstr, out EphPosErrM);
|
|
|
var EphVelErrstr = ConfigurationManager.AppSettings["EphVelErr"].Trim();
|
|
|
double.TryParse(EphVelErrstr, out EphVelErr);
|
|
|
+
|
|
|
+ string useGpuStr = ConfigurationManager.AppSettings["UseGpuCg"];
|
|
|
+ if (useGpuStr != null && useGpuStr.Trim() == "1")
|
|
|
+ useGpuCg = true;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -76,9 +81,9 @@ namespace X2LeoTaskServer54.Service
|
|
|
cts = new CancellationTokenSource();
|
|
|
Task.Run(async () =>
|
|
|
{
|
|
|
- await LogHelper.Info($"【任务{dto.ID}】开始执行...");
|
|
|
- await LogHelper.Info($"【任务{dto.ID}】AD采集目录[{CapDir}]");
|
|
|
- await LogHelper.Info($"【任务{dto.ID}】状态上报输出目录[{StateDir}]");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】开始执行...");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】AD采集目录[{CapDir}]");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】状态上报输出目录[{StateDir}]");
|
|
|
//点击定位平台右上角查看接口可以在浏览器中查看平台提供的所有接口详细信息
|
|
|
while (!cts.IsCancellationRequested)
|
|
|
{
|
|
@@ -117,7 +122,7 @@ namespace X2LeoTaskServer54.Service
|
|
|
|
|
|
if (!groupFiles.Any())
|
|
|
{
|
|
|
- await LogHelper.Info($"【任务{dto.ID}】等待扫描文件...");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】等待扫描文件...");
|
|
|
await Task.Delay(10000);
|
|
|
}
|
|
|
var listTask = new List<Task>();
|
|
@@ -126,12 +131,12 @@ namespace X2LeoTaskServer54.Service
|
|
|
if (cts.IsCancellationRequested) break;
|
|
|
|
|
|
var first = groupFile.First();
|
|
|
- await LogHelper.Info($"【任务{dto.ID}】正在执行第{first.XDNo}组的采集文件");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】正在执行第{first.XDNo}组的采集文件");
|
|
|
|
|
|
var group = groupFile.OrderBy(g => g.AdTime).ToArray();
|
|
|
if (group.Count() != 4)
|
|
|
{
|
|
|
- await LogHelper.Warning($"【任务{dto.ID}】第{first.XDNo}组{first.AdTime:yyyyMMddHHmmss}时刻-信号{first.FreqDownMHz}MHz-未找到双星目标及参考的信号文件,跳过此组数据");
|
|
|
+ LogHelper.Warning($"【任务{dto.ID}】第{first.XDNo}组{first.AdTime:yyyyMMddHHmmss}时刻-信号{first.FreqDownMHz}MHz-未找到双星目标及参考的信号文件,跳过此组数据");
|
|
|
return;
|
|
|
}
|
|
|
//group:同一组不同时刻的文件
|
|
@@ -149,22 +154,22 @@ namespace X2LeoTaskServer54.Service
|
|
|
var refFileInfo2 = refInfo.FirstOrDefault(t => t.Ch == 2);
|
|
|
if (tarFileInfo1 == null)
|
|
|
{
|
|
|
- await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{TarFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
|
|
|
+ LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{TarFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
|
|
|
return;
|
|
|
}
|
|
|
if (tarFileInfo2 == null)
|
|
|
{
|
|
|
- await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{TarFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
|
|
|
+ LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{TarFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
|
|
|
return;
|
|
|
}
|
|
|
if (refFileInfo1 == null)
|
|
|
{
|
|
|
- await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{RefFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
|
|
|
+ LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{RefFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
|
|
|
return;
|
|
|
}
|
|
|
if (refFileInfo2 == null)
|
|
|
{
|
|
|
- await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{RefFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
|
|
|
+ LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{RefFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
|
|
|
return;
|
|
|
}
|
|
|
if (cts.IsCancellationRequested) return;
|
|
@@ -189,12 +194,12 @@ namespace X2LeoTaskServer54.Service
|
|
|
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}");
|
|
|
+ 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}个突发...");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-CPU参估开始,共{smps.Count}个突发...");
|
|
|
var cgDto = new CpuCgMultiDto()
|
|
|
{
|
|
|
dtCenter = 0,
|
|
@@ -208,7 +213,7 @@ namespace X2LeoTaskServer54.Service
|
|
|
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}");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-目标主星邻1星CPU参估出错.{result1.msg}");
|
|
|
return;
|
|
|
}
|
|
|
var cpuCgDto = new CpuCgDto()
|
|
@@ -222,24 +227,19 @@ namespace X2LeoTaskServer54.Service
|
|
|
smpCount = 0,
|
|
|
snrThreshold = 15,
|
|
|
};
|
|
|
- var result2 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgCalc", cpuCgDto, token: cts.Token);
|
|
|
+ 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}");
|
|
|
+ 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");
|
|
|
+ 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;
|
|
|
- }
|
|
|
- if (data2.Count != 0)
|
|
|
- {
|
|
|
- await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-参考参估无结果");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-参估结果个数和检测结果个数不匹配");
|
|
|
return;
|
|
|
}
|
|
|
sw.Start();
|
|
@@ -270,9 +270,9 @@ namespace X2LeoTaskServer54.Service
|
|
|
Dfo = data1[i].Df,
|
|
|
Snr = data1[i].Snr,
|
|
|
YbMainDto = 260000,
|
|
|
- YbAdjaDto = 260000 + PosDtoFactor * data2[0].Dt,
|
|
|
+ YbAdjaDto = 260000 + PosDtoFactor * data2.Dt,
|
|
|
YbMainDfo = 100,
|
|
|
- YbAdjaDfo = 100 + data2[0].Df,
|
|
|
+ YbAdjaDfo = 100 + data2.Df,
|
|
|
TarFreqUp = (tarFileInfo1.FreqDownMHz + 44) * 1e6,
|
|
|
RefFreqUp = (refFileInfo1.FreqDownMHz + 44) * 1e6,
|
|
|
SatTxLon = dto.CapLon,
|
|
@@ -290,7 +290,7 @@ namespace X2LeoTaskServer54.Service
|
|
|
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}");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】第{No}组-{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz 第{i + 1}个突发定位异常.{result.msg}");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -306,14 +306,14 @@ namespace X2LeoTaskServer54.Service
|
|
|
{
|
|
|
MsEph = MainXYZ,
|
|
|
NsEph = Adja1XYZ,
|
|
|
- RefGeod = new double[3] { dto.RefLon, dto.RefLat, 0 },
|
|
|
+ RefGeod= new double[3] { dto.RefLon, dto.RefLat, 0 },
|
|
|
SelectPoint = new double[3] { posLon, posLat, 0 },
|
|
|
- DtoErr = DtoErrus * 1e-6,
|
|
|
+ DtoErr=DtoErrus *1e-6,
|
|
|
DfoErr = DfoErrHz,
|
|
|
EphPosErr = EphPosErrM,
|
|
|
EphVelErr = EphVelErr,
|
|
|
fu1 = leoX2.TarFreqUp,
|
|
|
- fu2 = leoX2.RefFreqUp,
|
|
|
+ fu2=leoX2.RefFreqUp,
|
|
|
Pe = 0.5,
|
|
|
OutputErrPoint = false
|
|
|
};
|
|
@@ -338,9 +338,9 @@ namespace X2LeoTaskServer54.Service
|
|
|
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.YbMainDto- leoX2.YbAdjaDto) * 1e2):D10}\t");
|
|
|
sb.Append($"{Convert.ToInt64((leoX2.YbMainDfo - leoX2.YbAdjaDfo) * 1e2):D10}\t");
|
|
|
- sb.Append($"{Convert.ToInt64(100 * 1e2):D6}\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");
|
|
@@ -359,11 +359,16 @@ namespace X2LeoTaskServer54.Service
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
- await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-时隙位置{data1[i].Smpstart}定位异常", ex);
|
|
|
+ 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");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-定位完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
+
|
|
|
+
|
|
|
+ /* File.Delete(ch0File.File);
|
|
|
+ File.Delete(ch1File.File);
|
|
|
+ File.Delete(ch2File.File);*/
|
|
|
}, cts.Token);
|
|
|
listTask.Add(task);
|
|
|
|
|
@@ -373,14 +378,14 @@ namespace X2LeoTaskServer54.Service
|
|
|
}
|
|
|
catch (TaskCanceledException ex)
|
|
|
{
|
|
|
- await LogHelper.Warning($"【任务{dto.ID}】处理结束,用户手动终止", ex.InnerException);
|
|
|
+ LogHelper.Warning($"【任务{dto.ID}】处理结束,用户手动终止", ex.InnerException);
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
if (ex.InnerException != null && ex.InnerException.GetType() == typeof(TaskCanceledException))
|
|
|
- await LogHelper.Warning($"【任务{dto.ID}】处理结束,用户手动终止", ex.InnerException);
|
|
|
+ LogHelper.Warning($"【任务{dto.ID}】处理结束,用户手动终止", ex.InnerException);
|
|
|
else
|
|
|
- await LogHelper.Error($"【任务{dto.ID}】任务执行出错", ex);
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】任务执行出错", ex);
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
@@ -406,6 +411,7 @@ namespace X2LeoTaskServer54.Service
|
|
|
private int GetSignalType(string modTypestr)
|
|
|
{
|
|
|
EnumSignalTypeDto modType = modTypestr.GetEnumByDisplayName<EnumSignalTypeDto>();
|
|
|
+#warning 没有CPM调制方式
|
|
|
//1:CPM,2:BPSK,4:QPSK,9:其他
|
|
|
int signalType = 9;
|
|
|
if (modType == EnumSignalTypeDto.BPSK)
|
|
@@ -439,17 +445,17 @@ namespace X2LeoTaskServer54.Service
|
|
|
await Task.Delay(2000);
|
|
|
if (type == EnumTaskStopType.Properly)
|
|
|
{
|
|
|
- await LogHelper.Info($"【任务{taskID}】{stopReason}");
|
|
|
+ LogHelper.Info($"【任务{taskID}】{stopReason}");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- await LogHelper.Error($"【任务{taskID}】{stopReason}");
|
|
|
+ LogHelper.Error($"【任务{taskID}】{stopReason}");
|
|
|
}
|
|
|
TaskStopHandleDto stopDto = new TaskStopHandleDto() { ID = taskID, StopType = type, StopReason = stopReason };
|
|
|
var stopResp = await HttpHelper.PostRequestAsync(baseUrl + "Task/StopTask", stopDto);
|
|
|
if (stopResp.code != 200)
|
|
|
{
|
|
|
- await LogHelper.Error($"【任务{taskID}】停止异常.{stopResp.msg}");
|
|
|
+ LogHelper.Error($"【任务{taskID}】停止异常.{stopResp.msg}");
|
|
|
}
|
|
|
}
|
|
|
|