|
@@ -51,10 +51,10 @@ namespace X3TaskServer54.Service
|
|
|
cts = new CancellationTokenSource();
|
|
|
Task.Run(async () =>
|
|
|
{
|
|
|
- LogHelper.Info($"【任务{dto.ID}】开始执行...");
|
|
|
- LogHelper.Info($"【任务{dto.ID}】检测结果目录[{DetectDir}]");
|
|
|
- LogHelper.Info($"【任务{dto.ID}】AD采集目录[{CapDir}]");
|
|
|
- LogHelper.Info($"【任务{dto.ID}】状态上报输出目录[{StateDir}]");
|
|
|
+ await LogHelper.Info($"【任务{dto.ID}】开始执行...");
|
|
|
+ await LogHelper.Info($"【任务{dto.ID}】检测结果目录[{DetectDir}]");
|
|
|
+ await LogHelper.Info($"【任务{dto.ID}】AD采集目录[{CapDir}]");
|
|
|
+ await LogHelper.Info($"【任务{dto.ID}】状态上报输出目录[{StateDir}]");
|
|
|
//点击定位平台右上角查看接口可以在浏览器中查看平台提供的所有接口详细信息
|
|
|
while (!cts.IsCancellationRequested)
|
|
|
{
|
|
@@ -102,14 +102,14 @@ namespace X3TaskServer54.Service
|
|
|
.GroupBy(m => Convert.ToInt64(m.DayTime.ToString("yyyyMMdd") + m.FlagNo)).OrderBy(m => m.Key);
|
|
|
if (!groupFiles.Any())
|
|
|
{
|
|
|
- LogHelper.Info($"【任务{dto.ID}】等待扫描文件...");
|
|
|
+ await LogHelper.Info($"【任务{dto.ID}】等待扫描文件...");
|
|
|
await Task.Delay(10000);
|
|
|
}
|
|
|
|
|
|
foreach (var groupFile in groupFiles)//每一组文件代表同一个时刻的,gourpFile时相同时刻的不同频点的文件
|
|
|
{
|
|
|
if (cts.IsCancellationRequested) break;
|
|
|
- LogHelper.Info($"【任务{dto.ID}】正在解析序号为{groupFile.First().FlagNo}的检测引导文件");
|
|
|
+ await LogHelper.Info($"【任务{dto.ID}】正在解析序号为{groupFile.First().FlagNo}的检测引导文件");
|
|
|
List<SlotsInfo> listSlotsInfo = new List<SlotsInfo>();//多个频点的时隙结果
|
|
|
int idx = 0;
|
|
|
DateTime adTime = DateTime.MinValue;
|
|
@@ -119,7 +119,7 @@ namespace X3TaskServer54.Service
|
|
|
var slotsInfo = SlotHelper.GetFileSlots(item.File);//某个频点的所有时隙
|
|
|
adTime = slotsInfo.AdTime;
|
|
|
if (idx == 0)
|
|
|
- LogHelper.Info($"【任务{dto.ID}】序号为{groupFile.First().FlagNo}的检测引导文件对应采集时刻{slotsInfo.AdTime:yyyyMMddHHmmss}");
|
|
|
+ await LogHelper.Info($"【任务{dto.ID}】序号为{groupFile.First().FlagNo}的检测引导文件对应采集时刻{slotsInfo.AdTime:yyyyMMddHHmmss}");
|
|
|
idx++;
|
|
|
if (slotsInfo.Slots.Any())
|
|
|
listSlotsInfo.Add(slotsInfo);
|
|
@@ -140,7 +140,7 @@ namespace X3TaskServer54.Service
|
|
|
|
|
|
if (adFiles.Count() != 3)
|
|
|
{
|
|
|
- LogHelper.Warning($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻原始AD文件个数不为3,跳过此组文件");
|
|
|
+ await LogHelper.Warning($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻原始AD文件个数不为3,跳过此组文件");
|
|
|
//AD数据不全,删除所有对应时刻的采集文件
|
|
|
foreach (var item in adFiles)
|
|
|
{
|
|
@@ -151,7 +151,7 @@ namespace X3TaskServer54.Service
|
|
|
var first = listSlotsInfo.First();
|
|
|
var sigs = listSlotsInfo.Select(p => new DDCSig() { FreqDownHz = (int)(p.FreqDownMHz * 1e6), Mult = (int)first.Multi, Slots = p });
|
|
|
List<DDCFile> chDDCFiles = new List<DDCFile>();//同一个时刻多个频点多个通道的DDC数据
|
|
|
- LogHelper.Info($"【任务{dto.ID}】{listSlotsInfo.First().AdTime:yyyyMMddHHmmss}时刻3路AD文件开始DDC处理开始,共{sigs.Count()}个频点...");
|
|
|
+ await LogHelper.Info($"【任务{dto.ID}】{listSlotsInfo.First().AdTime:yyyyMMddHHmmss}时刻3路AD文件开始DDC处理开始,共{sigs.Count()}个频点...");
|
|
|
Stopwatch sw = new Stopwatch();
|
|
|
sw.Start();
|
|
|
var listTask = new List<Task>();
|
|
@@ -167,10 +167,10 @@ namespace X3TaskServer54.Service
|
|
|
await Task.WhenAll(listTask);
|
|
|
if (cts.IsCancellationRequested) break;
|
|
|
sw.Stop();
|
|
|
- LogHelper.Info($"【任务{dto.ID}】{listSlotsInfo.First().AdTime:yyyyMMddHHmmss}时刻3路AD文件DDC处理完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
+ await LogHelper.Info($"【任务{dto.ID}】{listSlotsInfo.First().AdTime:yyyyMMddHHmmss}时刻3路AD文件DDC处理完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
if (!chDDCFiles.Any())
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{listSlotsInfo.First().AdTime:yyyyMMddHHmmss}时刻3路AD文件DDC处理无结果");
|
|
|
+ await LogHelper.Error($"【任务{dto.ID}】{listSlotsInfo.First().AdTime:yyyyMMddHHmmss}时刻3路AD文件DDC处理无结果");
|
|
|
continue;
|
|
|
}
|
|
|
var groupDDCFiles = chDDCFiles.GroupBy(p => p.FreqDownMHz);
|
|
@@ -185,22 +185,22 @@ namespace X3TaskServer54.Service
|
|
|
var ch2File = group.Where(p => p.ChNo == 2).FirstOrDefault();
|
|
|
if (ch0File == null)
|
|
|
{
|
|
|
- LogHelper.Warning($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-未找到主星信号ch0文件,跳过此组数据");
|
|
|
+ await LogHelper.Warning($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-未找到主星信号ch0文件,跳过此组数据");
|
|
|
return;
|
|
|
}
|
|
|
if (ch1File == null)
|
|
|
{
|
|
|
- LogHelper.Warning($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-未找到邻1星信号ch1文件,跳过此组数据");
|
|
|
+ await LogHelper.Warning($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-未找到邻1星信号ch1文件,跳过此组数据");
|
|
|
return;
|
|
|
}
|
|
|
if (ch2File == null)
|
|
|
{
|
|
|
- LogHelper.Warning($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-未找到邻2星信号ch2文件,跳过此组数据");
|
|
|
+ await LogHelper.Warning($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-未找到邻2星信号ch2文件,跳过此组数据");
|
|
|
return;
|
|
|
}
|
|
|
var sig = sigs.FirstOrDefault(p => p.FreqDownHz == (int)(group.Key * 1e6));
|
|
|
if (cts.IsCancellationRequested) return;
|
|
|
- LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-CPU参估开始,共{sig.Slots.Slots.Count}个突发...");
|
|
|
+ await LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-CPU参估开始,共{sig.Slots.Slots.Count}个突发...");
|
|
|
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星文件
|
|
@@ -218,7 +218,7 @@ namespace X3TaskServer54.Service
|
|
|
var result1 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
|
|
|
if (result1.code != 200)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星邻1星CPU参估出错.{result1.msg}");
|
|
|
+ await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星邻1星CPU参估出错.{result1.msg}");
|
|
|
return;
|
|
|
}
|
|
|
cgDto = new CpuCgMultiDto()
|
|
@@ -235,17 +235,30 @@ namespace X3TaskServer54.Service
|
|
|
sw.Stop();
|
|
|
if (result2.code != 200)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星邻2星CPU参估出错.{result2.msg}");
|
|
|
+ await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星邻2星CPU参估出错.{result2.msg}");
|
|
|
return;
|
|
|
}
|
|
|
- LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-CPU参估完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
+ await LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-CPU参估完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
var data1 = result1.data;
|
|
|
var data2 = result2.data;
|
|
|
if (data1.Count != data2.Count || data1.Count != cgDto.smpPositions.Count)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-参估结果个数和检测结果个数不匹配");
|
|
|
+ await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-参估结果个数和检测结果个数不匹配");
|
|
|
return;
|
|
|
}
|
|
|
+ var signaldto = new SignalProcDto()
|
|
|
+ {
|
|
|
+ File = mainFile,
|
|
|
+ Fs = ch0File.Fs,
|
|
|
+ Smps = cgDto.smpPositions,
|
|
|
+ };
|
|
|
+ var signalResult = await HttpHelper.PostRequestAsync<List<SignalProcResDto>>(baseUrl + "DetectCg/SignalProc", signaldto);
|
|
|
+ if (signalResult.code != 200)
|
|
|
+ {
|
|
|
+ await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星信号识别出错.{signalResult.msg}");
|
|
|
+ return;
|
|
|
+
|
|
|
+ }
|
|
|
sw.Start();
|
|
|
for (int i = 0; i < data1.Count; i++)
|
|
|
{
|
|
@@ -290,7 +303,7 @@ namespace X3TaskServer54.Service
|
|
|
var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX3TwoDtoNoParAsync", x3);
|
|
|
if (result.code != 200)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-时隙位置{data1[i].Smpstart}定位异常.{result.msg}");
|
|
|
+ await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-时隙位置{data1[i].Smpstart}定位异常.{result.msg}");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -313,7 +326,7 @@ namespace X3TaskServer54.Service
|
|
|
sb.Append($"{x3.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($"{4}\t");//信号样式(暂定有这些1:CPM,2:BPSK,4:QPSK,9:其它),
|
|
|
+ sb.Append($"{GetSignalType(signalResult.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");
|
|
@@ -333,9 +346,9 @@ namespace X3TaskServer54.Service
|
|
|
sb.Append($"{0:D7}\t");//倾角
|
|
|
sb.Append($"{data1.Count:D2}\t");//时隙属性
|
|
|
sb.Append($"{1}\t");//所属卫星
|
|
|
- sb.Append($"{950:D3}\t");//置信度
|
|
|
- sb.Append($"{3}\t");//定位体制(星地=3)
|
|
|
- sb.Append($"{1335:D12}");//符号速率bps 12个
|
|
|
+ sb.Append($"{100:D3}\t");//置信度
|
|
|
+ sb.Append($"{1}\t");//定位体制(0未知,1高轨多星,2高低轨,3星地,4星座)
|
|
|
+ sb.Append($"{(long)signalResult.data[i].Rate:D12}");//符号速率bps
|
|
|
sb.Append("\r\n");
|
|
|
string resFile = Path.Combine(PosResDir, $"高轨三星定位结果_{posRes.SigTime:yyyyMMdd}.txt");
|
|
|
File.AppendAllText(resFile, sb.ToString());
|
|
@@ -343,11 +356,11 @@ namespace X3TaskServer54.Service
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-时隙位置{data1[i].Smpstart}定位异常", ex);
|
|
|
+ await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-时隙位置{data1[i].Smpstart}定位异常", ex);
|
|
|
}
|
|
|
}
|
|
|
sw.Stop();
|
|
|
- LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-定位完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
+ await LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-定位完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
//删除DDC文件
|
|
|
File.Delete(ch0File.File);
|
|
|
File.Delete(ch1File.File);
|
|
@@ -361,14 +374,14 @@ namespace X3TaskServer54.Service
|
|
|
}
|
|
|
catch (TaskCanceledException ex)
|
|
|
{
|
|
|
- LogHelper.Warning($"【任务{dto.ID}】处理结束,用户手动终止", ex.InnerException);
|
|
|
+ await LogHelper.Warning($"【任务{dto.ID}】处理结束,用户手动终止", ex.InnerException);
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
if (ex.InnerException != null && ex.InnerException.GetType() == typeof(TaskCanceledException))
|
|
|
- LogHelper.Warning($"【任务{dto.ID}】处理结束,用户手动终止", ex.InnerException);
|
|
|
+ await LogHelper.Warning($"【任务{dto.ID}】处理结束,用户手动终止", ex.InnerException);
|
|
|
else
|
|
|
- LogHelper.Error($"【任务{dto.ID}】任务执行出错", ex);
|
|
|
+ await LogHelper.Error($"【任务{dto.ID}】任务执行出错", ex);
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
@@ -378,22 +391,37 @@ namespace X3TaskServer54.Service
|
|
|
{
|
|
|
cts?.Cancel();
|
|
|
}
|
|
|
+ private int GetSignalType(EnumSignalTypeDto modType)
|
|
|
+ {
|
|
|
+#warning 没有CPM调制方式
|
|
|
+ //1:CPM,2:BPSK,4:QPSK,9:其他
|
|
|
+ int signalType = 9;
|
|
|
+ if (modType == EnumSignalTypeDto.BPSK)
|
|
|
+ {
|
|
|
+ signalType = 2;
|
|
|
+ }
|
|
|
+ else if (modType == EnumSignalTypeDto.QPSK)
|
|
|
+ {
|
|
|
+ signalType = 4;
|
|
|
+ }
|
|
|
+ return signalType;
|
|
|
+ }
|
|
|
private async Task StopTask(int taskID, EnumTaskStopType type, string stopReason)
|
|
|
{
|
|
|
await Task.Delay(2000);
|
|
|
if (type == EnumTaskStopType.Properly)
|
|
|
{
|
|
|
- LogHelper.Info($"【任务{taskID}】{stopReason}");
|
|
|
+ await LogHelper.Info($"【任务{taskID}】{stopReason}");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{taskID}】{stopReason}");
|
|
|
+ await 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)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{taskID}】停止异常.{stopResp.msg}");
|
|
|
+ await LogHelper.Error($"【任务{taskID}】停止异常.{stopResp.msg}");
|
|
|
}
|
|
|
}
|
|
|
|