|
@@ -16,7 +16,6 @@ namespace X2D1NoRefTaskServer.Service
|
|
|
{
|
|
|
private readonly string baseUrl;
|
|
|
CancellationTokenSource cts;
|
|
|
- Dictionary<int, double> dicSatDelay = new Dictionary<int, double>();
|
|
|
public HistoryTaskService()
|
|
|
{
|
|
|
var posPlatformAddr = ConfigurationManager.AppSettings["PosPlatformAddr"].Trim();//like http://127.0.0.1:8091 or http://127.0.0.1:8091/
|
|
@@ -24,25 +23,6 @@ namespace X2D1NoRefTaskServer.Service
|
|
|
this.baseUrl = posPlatformAddr + "api/";
|
|
|
else
|
|
|
this.baseUrl = posPlatformAddr + "/api/";
|
|
|
-
|
|
|
- try
|
|
|
- {
|
|
|
- var satDelay = ConfigurationManager.AppSettings["SatDelay"]?.Trim();
|
|
|
- if (!string.IsNullOrWhiteSpace(satDelay))
|
|
|
- {
|
|
|
- var arr = satDelay.Split("-".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
|
|
|
- var sats = arr[0].Replace("[", "").Replace("]", "").Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
|
|
|
- var delays = arr[1].Replace("[", "").Replace("]", "").Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
|
|
|
- for (int i = 0; i < sats.Length; i++)
|
|
|
- {
|
|
|
- dicSatDelay.Add(Convert.ToInt32(sats[i]), Convert.ToDouble(delays[i]));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- throw new Exception("解析配置文件SatDelay出错", ex);
|
|
|
- }
|
|
|
}
|
|
|
public void StartAsync(X2D1HistoryTaskHandleDto dto)
|
|
|
{
|
|
@@ -63,21 +43,9 @@ namespace X2D1NoRefTaskServer.Service
|
|
|
if (posDtoFactor == 0) posDtoFactor = 1;//定位时时差系数
|
|
|
LogHelper.Info($"【任务{dto.ID}】定位时差系数={posDtoFactor}");
|
|
|
|
|
|
- bool parseSucceed = int.TryParse(ConfigurationManager.AppSettings["UTCValue"], out int utcValue);
|
|
|
- if (!parseSucceed)
|
|
|
- utcValue = 8;
|
|
|
- LogHelper.Info($"【任务{dto.ID}】文件名时间时区=UTC{utcValue}");
|
|
|
- int hours = 8 - utcValue;
|
|
|
- dto.StartTime = dto.StartTime.AddHours(-hours);//UTC8转UTC3
|
|
|
- dto.EndTime = dto.EndTime.AddHours(-hours);//UTC8转UTC3
|
|
|
- //点击定位平台右上角查看接口可以在浏览器中查看平台提供的所有接口详细信息
|
|
|
Task.Run(async () =>
|
|
|
{
|
|
|
bool canConnected = CanGetSatIdFromMySql();
|
|
|
- if (!canConnected)
|
|
|
- {
|
|
|
- LogHelper.Warning("无法连接MySql查询卫星编号,将使用任务中提供的卫星");
|
|
|
- }
|
|
|
DateTime preTime = dto.StartTime;
|
|
|
int formatFlag;
|
|
|
if (string.IsNullOrWhiteSpace(dto.DateDirFormat))
|
|
@@ -131,6 +99,7 @@ namespace X2D1NoRefTaskServer.Service
|
|
|
foreach (var item in groups)
|
|
|
{
|
|
|
if (cts.IsCancellationRequested) break;
|
|
|
+
|
|
|
var finfos = item.ToList();
|
|
|
var capTime = finfos.First().CapTime;
|
|
|
if (capTime < dto.StartTime) continue;
|
|
@@ -147,8 +116,8 @@ namespace X2D1NoRefTaskServer.Service
|
|
|
LogHelper.Warning($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻未找到超短波信号ch1文件,跳过此组数据");
|
|
|
continue;
|
|
|
}
|
|
|
- var freqInfo = dto.Freqs.FirstOrDefault(p => p.FreqUp == dinfo.FreqHz);
|
|
|
- if (freqInfo == null)
|
|
|
+ var taskSig = dto.Sigs.FirstOrDefault(p => p.FreqUp == dinfo.FreqHz);
|
|
|
+ if (taskSig == null)
|
|
|
{
|
|
|
continue;//跳过不是任务处理的频点
|
|
|
}
|
|
@@ -168,6 +137,12 @@ namespace X2D1NoRefTaskServer.Service
|
|
|
}
|
|
|
try
|
|
|
{
|
|
|
+ var delay1 = taskSig.SigDelay.FirstOrDefault(p => p.SatInfoSatCode == minfo.SatId)?.Delay;
|
|
|
+ var delay2 = taskSig.SigDelay.FirstOrDefault(p => p.SatInfoSatCode == ninfo.SatId)?.Delay;
|
|
|
+ if (delay1 == null) delay1 = 0;
|
|
|
+ if (delay2 == null) delay2 = 0;
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6}],主星[{minfo.SatId}],转发时延{delay1}us");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6}],邻星[{ninfo.SatId}],转发时延{delay1}us");
|
|
|
string mainFile = await HttpHelper.UploadFileAsync(minfo.FilePath, baseUrl + "File/UploadFileAsync", token: cts.Token);//主星文件
|
|
|
string adjaFile = await HttpHelper.UploadFileAsync(ninfo.FilePath, baseUrl + "File/UploadFileAsync", token: cts.Token);//邻星文件
|
|
|
string cdbFile = await HttpHelper.UploadFileAsync(dinfo.FilePath, baseUrl + "File/UploadFileAsync", token: cts.Token);//超短文件
|
|
@@ -175,7 +150,7 @@ namespace X2D1NoRefTaskServer.Service
|
|
|
DetectDto detectDto = new DetectDto()
|
|
|
{
|
|
|
file1 = cdbFile,//11局使用上行泄露信号进行检测
|
|
|
- dmcType =freqInfo.SigType,//上行信号检测目前的算法只能使用基于能量的KY或IBS检测
|
|
|
+ dmcType = taskSig.SigType,//上行信号检测目前的算法只能使用基于能量的KY或IBS检测
|
|
|
fsHz = minfo.FsHz,
|
|
|
};
|
|
|
detectDto.dmcType = detectDto.dmcType & ~EnumSigCheckTypeDto.DAMA;//DAMA不支持上行信号检测,在这里移除掉
|
|
@@ -233,18 +208,20 @@ namespace X2D1NoRefTaskServer.Service
|
|
|
try
|
|
|
{
|
|
|
if (cts.IsCancellationRequested) break;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
X2D1NoXlNoParlPosDto x2D1 = new X2D1NoXlNoParlPosDto()
|
|
|
{
|
|
|
TaskID = dto.ID,
|
|
|
- SigTime = minfo.CapTime.AddHours(hours).AddSeconds(data1[i].Smpstart / minfo.FsHz),
|
|
|
+ SigTime = minfo.CapTime.AddSeconds(data1[i].Smpstart / minfo.FsHz),
|
|
|
MainCode = minfo.SatId,
|
|
|
AdjaCode = ninfo.SatId,
|
|
|
//卫星转发某些频点可能有时延,无参定位由于不能抵消需要减去这个时延
|
|
|
- SxDto = data1[i].Dt * posDtoFactor - data2[i].Dt * posDtoFactor
|
|
|
- - GetSatDelay(minfo.SatId) + GetSatDelay(ninfo.SatId),
|
|
|
+ SxDto = data1[i].Dt * posDtoFactor - data2[i].Dt * posDtoFactor - delay1.Value + delay2.Value,
|
|
|
SxDfo = data1[i].Df,
|
|
|
SxSnr = data1[i].Snr,
|
|
|
- XdDto = data1[i].Dt * posDtoFactor - GetSatDelay(minfo.SatId),
|
|
|
+ XdDto = data1[i].Dt * posDtoFactor - delay1.Value,
|
|
|
XdDfo = data2[i].Df,
|
|
|
XdSnr = data2[i].Snr,
|
|
|
SatTxLon = dto.CapLon,
|
|
@@ -352,30 +329,21 @@ namespace X2D1NoRefTaskServer.Service
|
|
|
{
|
|
|
if (historyFile.SatId == 0)
|
|
|
{
|
|
|
- LogHelper.Warning($"【任务{dto.ID}】主星使用任务中的卫星[{dto.MainSatCode}]");
|
|
|
+ LogHelper.Warning($"【任务{dto.ID}】主星无法通过MySql查询到卫星编号,使用任务中的卫星[{dto.MainSatCode}]");
|
|
|
historyFile.SatId = dto.MainSatCode;
|
|
|
}
|
|
|
- LogHelper.Info($"【任务{dto.ID}】主星{dto.MainSatCode}转发时延{GetSatDelay(dto.MainSatCode)}us");
|
|
|
-
|
|
|
}
|
|
|
else if (ch == 3)
|
|
|
{
|
|
|
if (historyFile.SatId == 0)
|
|
|
{
|
|
|
- LogHelper.Warning($"【任务{dto.ID}】邻星使用任务中的卫星[{dto.AdjaSatCode}]");
|
|
|
+ LogHelper.Warning($"【任务{dto.ID}】邻星无法通过MySql查询到卫星编号,邻星使用任务中的卫星[{dto.AdjaSatCode}]");
|
|
|
historyFile.SatId = dto.AdjaSatCode;
|
|
|
}
|
|
|
- LogHelper.Info($"【任务{dto.ID}】邻星{dto.AdjaSatCode}转发时延{GetSatDelay(dto.AdjaSatCode)}us");
|
|
|
}
|
|
|
return historyFile;
|
|
|
}
|
|
|
- double GetSatDelay(int satCode)
|
|
|
- {
|
|
|
- if (dicSatDelay.ContainsKey(satCode))
|
|
|
- return dicSatDelay[satCode];
|
|
|
- else
|
|
|
- return 0;
|
|
|
- }
|
|
|
+
|
|
|
int GetSatId(double freqdown)
|
|
|
{
|
|
|
int satId = 0;
|