zoulei 1 year ago
parent
commit
3547ad78d3

+ 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"/>

+ 208 - 204
Service/X1LeoTaskServer54/Service/TaskService.cs

@@ -35,7 +35,6 @@ namespace X1LeoTaskServer54.Service
                 this.baseUrl = posPlatformAddr + "api/";
             else
                 this.baseUrl = posPlatformAddr + "/api/";
-            DirectoryInfo d = new DirectoryInfo("");
             CapDir = ConfigurationManager.AppSettings["CapDir"].Trim();
             PosResDir = ConfigurationManager.AppSettings["PosResDir"].Trim();
             StateDir = ConfigurationManager.AppSettings["StateRptDir"].Trim();
@@ -79,7 +78,7 @@ namespace X1LeoTaskServer54.Service
                         {
                             var mainInfo = ConfigurationManager.AppSettings["Time1SatInfo"].Replace(",", ",").Trim();
                             var adja1Info = ConfigurationManager.AppSettings["Time2SatInfo"].Replace(",", ",").Trim();
-                            var adja2Info = ConfigurationManager.AppSettings["Time2SatInfo"].Replace(",", ",").Trim();
+                            var adja2Info = ConfigurationManager.AppSettings["Time3SatInfo"].Replace(",", ",").Trim();
                             var arr1 = mainInfo.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                             var arr2 = adja1Info.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                             var arr3 = adja2Info.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
@@ -96,7 +95,6 @@ namespace X1LeoTaskServer54.Service
                         #endregion
 
                         #region 第2步,扫描检测结果目录
-                        //同一个AD文件得到的不同频点的检测文件FlagNo相同
                         var groupFiles = Directory.EnumerateFiles(CapDir, "*.dat", SearchOption.TopDirectoryOnly).Select(p => StringToAdFile(p))
                         .GroupBy(m => m.XDNo).OrderBy(m => m.Key);
 
@@ -105,223 +103,229 @@ namespace X1LeoTaskServer54.Service
                             await LogHelper.Info($"【任务{dto.ID}】等待扫描文件...");
                             await Task.Delay(10000);
                         }
-                        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() != 3)
-                            {
-                                await LogHelper.Warning($"【任务{dto.ID}】第{first.XDNo}组{first.AdTime:yyyyMMddHHmmss}时刻-信号{first.FreqDownMHz}MHz-未找到三个时刻的信号文件,跳过此组数据");
-                                return;
-                            }
-                            //group:同一组不同时刻的文件
-                            var task = Task.Run(async () =>
+                            var freqsData = group.GroupBy(p => p.FreqDownMHz);
+                            var listTask = new List<Task>();
+                            foreach (var item in freqsData)
                             {
-                                DateTime adTime = groupFile.First().AdTime;
-                                double freq = groupFile.First().FreqDownMHz;
-                                int No = groupFile.First().XDNo;
-                                var ch0File = group[0];
-                                var ch1File = group[1];
-                                var ch2File = group[2];
-                                if (cts.IsCancellationRequested) return;
+                                var list = item.ToList();
+                                if (list.Count != 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];
+                                    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星文件
+                                    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星文件
 
-                                DetectDto detectDto = new DetectDto()
-                                {
-                                    file1 = mainFile,
-                                    dmcType = EnumSigCheckTypeDto.Ky5758,
-                                    fsHz = ch0File.Fs,
-                                    mergeRes = true,
-                                    SigProc = true,
-                                };
+                                    DetectDto detectDto = new DetectDto()
+                                    {
+                                        file1 = mainFile,
+                                        dmcType = EnumSigCheckTypeDto.Ky5758,
+                                        fsHz = ch0File.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?
+                                    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 = mainFile,
-                                    file2 = adja1File,
-                                    samplingRate = ch0File.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;
-                                }
-                                cgDto = new CpuCgMultiDto()
-                                {
-                                    dtCenter = 0,
-                                    dtRange = 40000,
-                                    file1 = mainFile,
-                                    file2 = adja2File,
-                                    samplingRate = ch0File.Fs,
-                                    smpPositions = smps,
-                                    snrThreshold = 15,
-                                };
-                                var result2 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, 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 != data2.Count || 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 = mainFile,
+                                        file2 = adja1File,
+                                        samplingRate = ch0File.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;
+                                    }
+                                    cgDto = new CpuCgMultiDto()
+                                    {
+                                        dtCenter = 0,
+                                        dtRange = 40000,
+                                        file1 = mainFile,
+                                        file2 = adja2File,
+                                        samplingRate = ch0File.Fs,
+                                        smpPositions = smps,
+                                        snrThreshold = 15,
+                                    };
+                                    var result2 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
+                                    sw.Stop();
+                                    if (result2.code != 200)
                                     {
-                                        if (cts.IsCancellationRequested) break;
-                                        LeoX1ParPosDto leoX1 = new LeoX1ParPosDto()
+                                        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 != data2.Count || 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,
-                                            Adja1Code = MainSatCode,
-                                            Adja2Code = MainSatCode,
-                                            MainX = Time1XYZ[0],
-                                            MainY = Time1XYZ[1],
-                                            MainZ = Time1XYZ[2],
-                                            MainVX = Time1XYZ[3],
-                                            MainVY = Time1XYZ[4],
-                                            MainVZ = Time1XYZ[5],
-                                            Adja1X = Time2XYZ[0],
-                                            Adja1Y = Time2XYZ[1],
-                                            Adja1Z = Time2XYZ[2],
-                                            Adja1VX = Time2XYZ[3],
-                                            Adja1VY = Time2XYZ[4],
-                                            Adja1VZ = Time2XYZ[5],
-                                            Adja2X = Time3XYZ[0],
-                                            Adja2Y = Time3XYZ[1],
-                                            Adja2Z = Time3XYZ[2],
-                                            Adja2VX = Time3XYZ[3],
-                                            Adja2VY = Time3XYZ[4],
-                                            Adja2VZ = Time3XYZ[5],
-                                            Dto1 = PosDtoFactor * data1[i].Dt,
-                                            Dfo1 = data1[i].Df,
-                                            Snr1 = data1[i].Snr,
-                                            Dto2 = PosDtoFactor * data2[i].Dt,
-                                            Dfo2 = data2[i].Df,
-                                            Snr2 = data2[i].Snr,
-                                            FreqUp = (ch0File.FreqDownMHz + 44) * 1e6,
-                                            SatTxLon = dto.CapLon,
-                                            SatTxLat = dto.CapLat,
-                                            FreqDown = ch0File.FreqDownMHz * 1e6,
-                                            CheckRes = new CheckResDto()
+                                            if (cts.IsCancellationRequested) break;
+                                            LeoX1ParPosDto leoX1 = new LeoX1ParPosDto()
                                             {
-                                                FileName = Path.GetFileName(ch0File.File),
-                                                SmpStart = cgDto.smpPositions[i].smpStart,
-                                                SmpCount = cgDto.smpPositions[i].smpCount,
-                                                PosCheckType = EnumPosCheckTypeDto.Ky5758,
-                                            }
-                                        };
-                                        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}");
-                                        }
-                                        else
-                                        {
-                                            var posRes = result.data;
-                                            double posLon = posRes.PosLon;
-                                            double posLat = posRes.PosLat;
-                                            if (leoX1.Snr1 == 0 || leoX1.Snr2 == 0)
+                                                TaskID = dto.ID,
+                                                SigTime = adTime.AddSeconds(data1[i].TimeSeconds),
+                                                MainCode = MainSatCode,
+                                                Adja1Code = MainSatCode,
+                                                Adja2Code = MainSatCode,
+                                                MainX = Time1XYZ[0],
+                                                MainY = Time1XYZ[1],
+                                                MainZ = Time1XYZ[2],
+                                                MainVX = Time1XYZ[3],
+                                                MainVY = Time1XYZ[4],
+                                                MainVZ = Time1XYZ[5],
+                                                Adja1X = Time2XYZ[0],
+                                                Adja1Y = Time2XYZ[1],
+                                                Adja1Z = Time2XYZ[2],
+                                                Adja1VX = Time2XYZ[3],
+                                                Adja1VY = Time2XYZ[4],
+                                                Adja1VZ = Time2XYZ[5],
+                                                Adja2X = Time3XYZ[0],
+                                                Adja2Y = Time3XYZ[1],
+                                                Adja2Z = Time3XYZ[2],
+                                                Adja2VX = Time3XYZ[3],
+                                                Adja2VY = Time3XYZ[4],
+                                                Adja2VZ = Time3XYZ[5],
+                                                Dto1 = PosDtoFactor * data1[i].Dt,
+                                                Dfo1 = data1[i].Df,
+                                                Snr1 = data1[i].Snr,
+                                                Dto2 = PosDtoFactor * data2[i].Dt,
+                                                Dfo2 = data2[i].Df,
+                                                Snr2 = data2[i].Snr,
+                                                FreqUp = (ch0File.FreqDownMHz + 44) * 1e6,
+                                                SatTxLon = dto.CapLon,
+                                                SatTxLat = dto.CapLat,
+                                                FreqDown = ch0File.FreqDownMHz * 1e6,
+                                                CheckRes = new CheckResDto()
+                                                {
+                                                    FileName = Path.GetFileName(ch0File.File),
+                                                    SmpStart = cgDto.smpPositions[i].smpStart,
+                                                    SmpCount = cgDto.smpPositions[i].smpCount,
+                                                    PosCheckType = EnumPosCheckTypeDto.Ky5758,
+                                                }
+                                            };
+                                            var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosLeX1ParAsync", leoX1);
+                                            if (result.code != 200)
                                             {
-                                                posLon = 0;
-                                                posLat = 0;
+                                                await LogHelper.Error($"【任务{dto.ID}】第{No}组-{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz 第{i + 1}个突发定位异常.{result.msg}");
                                             }
-                                            ErrorEllipseLeoX1Dto errdto = new ErrorEllipseLeoX1Dto()
+                                            else
                                             {
-                                                MsEph = Time1XYZ,
-                                                NsEph1 = Time2XYZ,
-                                                NsEph2 = Time3XYZ,
-                                                SelectPoint = new double[3] { posLon, posLat,0 },
-                                                DfoErr=DfoErrHz,
-                                                EphPosErr=EphPosErrM,
-                                                EphVelErr=EphVelErr,
-                                                fu= leoX1.FreqUp,
-                                                Pe=0.5,
-                                                OutputErrPoint=false
-                                            };
-                                          var errRes =await  GetErrEllipseResDto(errdto, posLon,posLat);
-                                            StringBuilder sb = new StringBuilder();
-                                            sb.Append($"{leoX1.SigTime:yyyy}\t");
-                                            sb.Append($"{leoX1.SigTime:MM}\t");
-                                            sb.Append($"{leoX1.SigTime:dd}\t");
-                                            sb.Append($"{leoX1.SigTime:HH}\t");
-                                            sb.Append($"{leoX1.SigTime:mm}\t");
-                                            sb.Append($"{leoX1.SigTime:ss}\t");
-                                            sb.Append($"{leoX1.SigTime:fff}\t");
-                                            sb.Append($"{leoX1.CheckRes.SmpCount * 1000 / ch0File.Fs:D4}\t");//信号持续时间ms
-                                            sb.Append($"{Convert.ToInt64(group.First().FreqDownMHz * 1e6):D12}\t");//下行频点
-                                            sb.Append($"{Convert.ToInt64((group.First().FreqDownMHz + 44) * 1e6):D12}\t");//上行频点
-                                            sb.Append($"{GetSignalType(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(leoX1.Dto1 * 1e2):D10}\t");
-                                            sb.Append($"{Convert.ToInt64(leoX1.Dfo1 * 1e2):D10}\t");
-                                            sb.Append($"{Convert.ToInt64(leoX1.Snr1 * 1e2):D6}\t");
-                                            sb.Append($"{Convert.ToInt64(leoX1.Dto2 * 1e2):D10}\t");
-                                            sb.Append($"{Convert.ToInt64(leoX1.Dfo2 * 1e2):D10}\t");
-                                            sb.Append($"{Convert.ToInt64(leoX1.Snr2 * 1e2):D6}\t");
-                                            sb.Append($"{Convert.ToInt64(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");
-                                            File.AppendAllText(resFile, sb.ToString());
+                                                var posRes = result.data;
+                                                double posLon = posRes.PosLon;
+                                                double posLat = posRes.PosLat;
+                                                if (leoX1.Snr1 == 0 || leoX1.Snr2 == 0)
+                                                {
+                                                    posLon = 0;
+                                                    posLat = 0;
+                                                }
+                                                ErrorEllipseLeoX1Dto errdto = new ErrorEllipseLeoX1Dto()
+                                                {
+                                                    MsEph = Time1XYZ,
+                                                    NsEph1 = Time2XYZ,
+                                                    NsEph2 = Time3XYZ,
+                                                    SelectPoint = new double[3] { posLon, posLat, 0 },
+                                                    DfoErr = DfoErrHz,
+                                                    EphPosErr = EphPosErrM,
+                                                    EphVelErr = EphVelErr,
+                                                    fu = leoX1.FreqUp,
+                                                    Pe = 0.5,
+                                                    OutputErrPoint = false
+                                                };
+                                                var errRes = await GetErrEllipseResDto(errdto, posLon, posLat);
+                                                StringBuilder sb = new StringBuilder();
+                                                sb.Append($"{leoX1.SigTime:yyyy}\t");
+                                                sb.Append($"{leoX1.SigTime:MM}\t");
+                                                sb.Append($"{leoX1.SigTime:dd}\t");
+                                                sb.Append($"{leoX1.SigTime:HH}\t");
+                                                sb.Append($"{leoX1.SigTime:mm}\t");
+                                                sb.Append($"{leoX1.SigTime:ss}\t");
+                                                sb.Append($"{leoX1.SigTime:fff}\t");
+                                                sb.Append($"{leoX1.CheckRes.SmpCount * 1000 / ch0File.Fs:D4}\t");//信号持续时间ms
+                                                sb.Append($"{Convert.ToInt64(group.First().FreqDownMHz * 1e6):D12}\t");//下行频点
+                                                sb.Append($"{Convert.ToInt64((group.First().FreqDownMHz + 44) * 1e6):D12}\t");//上行频点
+                                                sb.Append($"{GetSignalType(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(leoX1.Dto1 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(leoX1.Dfo1 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(leoX1.Snr1 * 1e2):D6}\t");
+                                                sb.Append($"{Convert.ToInt64(leoX1.Dto2 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(leoX1.Dfo2 * 1e2):D10}\t");
+                                                sb.Append($"{Convert.ToInt64(leoX1.Snr2 * 1e2):D6}\t");
+                                                sb.Append($"{Convert.ToInt64(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
@@ -374,12 +378,12 @@ namespace X1LeoTaskServer54.Service
             return signalType;
         }
 
-        private async Task<ErrEllipseResDto> GetErrEllipseResDto(ErrorEllipseLeoX1Dto dto,double posLon,double posLat)
+        private async Task<ErrEllipseResDto> GetErrEllipseResDto(ErrorEllipseLeoX1Dto dto, double posLon, double posLat)
         {
             ErrEllipseResDto errRes = new ErrEllipseResDto();
             if (posLon != 0 && posLat != 0 && posLon != 999 && posLat != 999)
             {
-               
+
                 var errResRsp = await HttpHelper.PostRequestAsync<ErrEllipseResDto>(baseUrl + "Ellipse/X1Leo", dto);
                 if (errResRsp.code != 200)
                 {
@@ -419,9 +423,9 @@ namespace X1LeoTaskServer54.Service
 
         private AdFile StringToAdFile(string file)
         {
-            //20240409094240_ADC_ch02.dat
+            //20240625151700_D260_FS96000_ch1_xd1.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", "XD" }, StringSplitOptions.RemoveEmptyEntries);
             var time = DateTime.ParseExact(arr[0], "yyyyMMddHHmmss", null);
 
             AdFile adFile = new AdFile()

+ 4 - 1
Service/X2D1TaskServer54/Service/TaskService.cs

@@ -385,7 +385,10 @@ namespace X2D1NoRefTaskServer54.Service
                                                 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());
+                                                lock (this)
+                                                {
+                                                    File.AppendAllText(resFile, sb.ToString());
+                                                }
                                             }
                                         }
                                         catch (Exception ex)

+ 4 - 1
Service/X2LeoTaskServer54/Service/TaskService.cs

@@ -350,7 +350,10 @@ namespace X2LeoTaskServer54.Service
                                             sb.Append($"{(long)deteResp.data[i].ModRate.Value:D12}");//符号速率bps  12个
                                             sb.Append("\r\n");
                                             string resFile = Path.Combine(PosResDir, $"低轨双星定位结果_{posRes.SigTime:yyyyMMdd}.txt");
-                                            File.AppendAllText(resFile, sb.ToString());
+                                            lock (this)
+                                            {
+                                                File.AppendAllText(resFile, sb.ToString());
+                                            }
                                         }
                                     }
                                     catch (Exception ex)

+ 5 - 2
Service/X3LeoTaskServer54/Service/TaskService.cs

@@ -79,7 +79,7 @@ namespace X3LeoTaskServer54.Service
                         {
                             var mainInfo = ConfigurationManager.AppSettings["Time1SatInfo"].Replace(",", ",").Trim();
                             var adja1Info = ConfigurationManager.AppSettings["Time2SatInfo"].Replace(",", ",").Trim();
-                            var adja2Info = ConfigurationManager.AppSettings["Time2SatInfo"].Replace(",", ",").Trim();
+                            var adja2Info = ConfigurationManager.AppSettings["Time3SatInfo"].Replace(",", ",").Trim();
                             var arr1 = mainInfo.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                             var arr2 = adja1Info.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                             var arr3 = adja2Info.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
@@ -310,7 +310,10 @@ namespace X3LeoTaskServer54.Service
                                             sb.Append($"{(long)deteResp.data[i].ModRate.Value:D12}");//符号速率bps  12个
                                             sb.Append("\r\n");
                                             string resFile = Path.Combine(PosResDir, $"低轨单星定位结果_{posRes.SigTime:yyyyMMdd}.txt");
-                                            File.AppendAllText(resFile, sb.ToString());
+                                            lock (this)
+                                            {
+                                                File.AppendAllText(resFile, sb.ToString());
+                                            }
                                         }
                                     }
                                     catch (Exception ex)

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

@@ -360,7 +360,10 @@ namespace X3TaskServer54.Service
                                                 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());
+                                                lock (this)
+                                                {
+                                                    File.AppendAllText(resFile, sb.ToString());
+                                                }
                                             }
                                         }
                                         catch (Exception ex)

+ 31 - 3
XdCxRhDW.Api/AddIns/低轨/LeoPosApi.cs

@@ -97,7 +97,7 @@ namespace XdCxRhDW.Api
         /// <param name="LOP_Len"></param>
         [DllImport(leoPos, EntryPoint = "SingleStar_PCX", CallingConvention = CallingConvention.Cdecl)]
         public extern static void SingleStar_PCX(double[] main_sat, double[] neigh_sat
-            , double[] Zone, double target_dfo, double fu, out IntPtr LOP_Value, ref int LOP_Len); 
+            , double[] Zone, double target_dfo, double fu, out IntPtr LOP_Value, ref int LOP_Len);
 
         public static double[] X1_POS(CgRes cg, double upfreqHz)
         {
@@ -109,7 +109,21 @@ namespace XdCxRhDW.Api
             double[] res = new double[6];
             SingleStar_DFO_DW(mainSat, adjaSat1, adjaSat2, zone, cg.Dfo1.Value, cg.Dfo2.Value, upfreqHz, res);
 
-            return ConvertToGeoPoint(res);
+            var posRes = ConvertToGeoPoint(res);
+            if (posRes[1] < 5 && posRes[4] > 10 && posRes[4] < 30)
+            {
+
+                var p0 = posRes[0];
+                var p1 = posRes[1];
+                var p2 = posRes[2];
+                posRes[0] = posRes[3];
+                posRes[1] = posRes[4];
+                posRes[2] = posRes[5];
+                posRes[3] = p0;
+                posRes[4] = p1;
+                posRes[5] = p2;
+            }
+            return posRes;
         }
 
         /// <summary>
@@ -132,7 +146,21 @@ namespace XdCxRhDW.Api
             var refDto = (cg.YbMainDto.Value - cg.YbAdja1Dto.Value) / 1e6;
             var refDfo = cg.YbMainDfo.Value - cg.YbAdja1Dfo.Value;
             TwoStar_DTFO_DW(mainSat, adjaSat1, refStation, zone, cg.Dto1.Value / 1e6, cg.Dfo1.Value, refDto, refDfo, upfreqHz1, upfreqHz2, res);
-            return ConvertToGeoPoint(res);
+            var posRes = ConvertToGeoPoint(res);
+            if (posRes[1] < 5 && posRes[4] > 10 && posRes[4] < 30)
+            {
+
+                var p0 = posRes[0];
+                var p1 = posRes[1];
+                var p2 = posRes[2];
+                posRes[0] = posRes[3];
+                posRes[1] = posRes[4];
+                posRes[2] = posRes[5];
+                posRes[3] = p0;
+                posRes[4] = p1;
+                posRes[5] = p2;
+            }
+            return posRes;
         }
         private static double[] ConvertToGeoPoint(double[] res)
         {

+ 12 - 8
XdCxRhDW.Api/AddIns/信号仿真/DataEmulationHelper.cs

@@ -16,8 +16,8 @@ namespace XdCxRhDW.Api
         [DllImport(dll, EntryPoint = "genSignalsWithDtDf", CallingConvention = CallingConvention.Cdecl)]
         private extern static void GenSignalsWithDtDfCore(string file1, string file2, long fsHz, int sigLenMs, double dt, double df, int snr2, int snr1);
 
-        [DllImport(dll, EntryPoint = "genSignalsWithTwoDtDf", CallingConvention = CallingConvention.Cdecl)]
-        private extern static void GenSignalsWithTwoDtDf(string file1, string file2, string file3, long fsHz, int sigLenMs, double dt1, double df1, double dt2, double df2, int snr2, int snr1, int snr3);
+        [DllImport(dll, EntryPoint = "genSignalsWithDtDfEx", CallingConvention = CallingConvention.Cdecl)]
+        private extern static void GenSignalsWithTwoDtDf(string file1, string file2, string file3, long fsHz, int sigLenMs, double dt1, double df1, double dt2, double df2, int snr3, int snr2, int snr1);
 
         //生成噪声,文件,采样率,时长ms,最大幅度
         [DllImport(dll, EntryPoint = "genNoizes", CallingConvention = CallingConvention.Cdecl)]
@@ -42,17 +42,21 @@ namespace XdCxRhDW.Api
         /// <summary>
         /// 生成两组(ch1、ch2、ch3三个文件)常规信号文件
         /// </summary>
-        /// <param name="file1">输出文件1</param>
-        /// <param name="file2">输出文件2</param>
+        /// <param name="file1">输出文件1(主)</param>
+        /// <param name="file2">输出文件2(邻1)</param>
+        /// <param name="file3">输出文件3(邻2)</param>
         /// <param name="fsHz">采样率Hz</param>
         /// <param name="sigTimeLenMs">信号时长(毫秒)</param>
-        /// <param name="dt">时差秒</param>
-        /// <param name="df">频差Hz</param>
+        /// <param name="dt1">时差1(秒)</param>
+        /// <param name="df1">频差1</param>
+        /// <param name="dt2">时差2</param>
+        /// <param name="df2">频差2</param>
         /// <param name="snr1">文件1信噪比</param>
         /// <param name="snr2">文件2信噪比</param>
+        /// <param name="snr3">文件3信噪比</param>
         public static void GenNormalFiles(string file1, string file2, string file3, long fsHz, int sigTimeLenMs, double dt1, double df1, double dt2, double df2, int snr1, int snr2, int snr3)
         {
-            GenSignalsWithTwoDtDf(file1, file2, file3, fsHz, sigTimeLenMs, dt1, df1, dt2, df2, snr2, snr1, snr3);
+            GenSignalsWithTwoDtDf(file1, file2, file3, fsHz, sigTimeLenMs, dt1, df1, dt2, df2, snr3, snr2, snr1);
         }
         /// <summary>
         /// 生成单个噪声文件
@@ -137,7 +141,7 @@ namespace XdCxRhDW.Api
             var n13 = File.ReadAllBytes("n13.dat");
             var s1 = File.ReadAllBytes("s1.dat");
             var s2 = File.ReadAllBytes("s2.dat");
-            var s3 = File.ReadAllBytes("s2.dat");
+            var s3 = File.ReadAllBytes("s3.dat");
             var n21 = File.ReadAllBytes("n21.dat");
             var n22 = File.ReadAllBytes("n22.dat");
             var n23 = File.ReadAllBytes("n23.dat");

BIN
XdCxRhDW.Api/AddIns/信号仿真/SignalEmulation.dll


+ 16 - 0
XdCxRhDW.Api/AddIns/信号仿真/SignalEmulation.h

@@ -153,6 +153,22 @@ extern "C"
 	///
 	SignalEmulation_EXPORT void genSignalsWithDtDf(char *file1, char *file2, __int64 fsample, int tlenms, double dt, double df, int snr1, int snr2);
 
+	///
+	/// 根据给定时频差生成信号
+	/// f1		主星文件	
+	/// f2		邻星文件
+	/// fsample 采样率
+	// tlenms			生成信号时长   ms
+	/// dt		时差
+	/// df		频差
+	///  snr1    邻1
+	///  snr2    邻2
+	///  snrmain    主
+	///
+	SignalEmulation_EXPORT void genSignalsWithDtDfEx(char *file1, char *file2, char *file3, __int64 fsample, int tlenms
+		, double dt1, double df1, double dt2, double df2, int snr1, int snr2, int snrmain);
+
+
 
 	///
 	/// 根据给定时频差生成信号

+ 74 - 74
XdCxRhDW.App/EditForms/SignalEmulation.Designer.cs

@@ -59,49 +59,49 @@
             DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject23 = new DevExpress.Utils.SerializableAppearanceObject();
             DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject24 = new DevExpress.Utils.SerializableAppearanceObject();
             this.layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
+            this.txtSplitTime = new DevExpress.XtraEditors.CheckEdit();
             this.btnOpenDir = new DevExpress.XtraEditors.SimpleButton();
             this.btnBuild = new DevExpress.XtraEditors.SimpleButton();
             this.txtFsHz = new DevExpress.XtraEditors.ButtonEdit();
             this.txtSigLen = new DevExpress.XtraEditors.ButtonEdit();
             this.txtDto1 = new DevExpress.XtraEditors.ButtonEdit();
             this.txtDfo1 = new DevExpress.XtraEditors.ButtonEdit();
+            this.txtDto2 = new DevExpress.XtraEditors.ButtonEdit();
+            this.txtDfo2 = new DevExpress.XtraEditors.ButtonEdit();
             this.Root = new DevExpress.XtraLayout.LayoutControlGroup();
             this.layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
             this.layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
             this.layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem9 = new DevExpress.XtraLayout.LayoutControlItem();
             this.layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
             this.layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
             this.layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
             this.layoutControlItem8 = new DevExpress.XtraLayout.LayoutControlItem();
-            this.tablePanel1 = new DevExpress.Utils.Layout.TablePanel();
-            this.txtDto2 = new DevExpress.XtraEditors.ButtonEdit();
             this.layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
-            this.txtDfo2 = new DevExpress.XtraEditors.ButtonEdit();
             this.layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
-            this.txtSplitTime = new DevExpress.XtraEditors.CheckEdit();
-            this.layoutControlItem9 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.tablePanel1 = new DevExpress.Utils.Layout.TablePanel();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).BeginInit();
             this.layoutControl1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.txtSplitTime.Properties)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.txtFsHz.Properties)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.txtSigLen.Properties)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.txtDto1.Properties)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.txtDfo1.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtDto2.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtDfo2.Properties)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.Root)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlGroup1)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem4)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem9)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem5)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem6)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem7)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem8)).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)(this.tablePanel1)).BeginInit();
-            this.tablePanel1.SuspendLayout();
-            ((System.ComponentModel.ISupportInitialize)(this.txtDto2.Properties)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)(this.txtDfo2.Properties)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)(this.txtSplitTime.Properties)).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem9)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.tablePanel1)).BeginInit();
+            this.tablePanel1.SuspendLayout();
             this.SuspendLayout();
             // 
             // layoutControl1
@@ -125,6 +125,16 @@
             this.layoutControl1.TabIndex = 0;
             this.layoutControl1.Text = "layoutControl1";
             // 
+            // txtSplitTime
+            // 
+            this.txtSplitTime.EditValue = true;
+            this.txtSplitTime.Location = new System.Drawing.Point(12, 12);
+            this.txtSplitTime.Name = "txtSplitTime";
+            this.txtSplitTime.Properties.Caption = "分时信号";
+            this.txtSplitTime.Size = new System.Drawing.Size(372, 20);
+            this.txtSplitTime.StyleController = this.layoutControl1;
+            this.txtSplitTime.TabIndex = 9;
+            // 
             // btnOpenDir
             // 
             this.btnOpenDir.Location = new System.Drawing.Point(210, 214);
@@ -189,6 +199,28 @@
             this.txtDfo1.StyleController = this.layoutControl1;
             this.txtDfo1.TabIndex = 6;
             // 
+            // txtDto2
+            // 
+            this.txtDto2.EditValue = "1500";
+            this.txtDto2.Location = new System.Drawing.Point(12, 177);
+            this.txtDto2.Name = "txtDto2";
+            this.txtDto2.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "us", -1, false, true, false, editorButtonImageOptions5, new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), serializableAppearanceObject17, serializableAppearanceObject18, serializableAppearanceObject19, serializableAppearanceObject20, "", null, null, DevExpress.Utils.ToolTipAnchor.Default)});
+            this.txtDto2.Size = new System.Drawing.Size(184, 23);
+            this.txtDto2.StyleController = this.layoutControl1;
+            this.txtDto2.TabIndex = 6;
+            // 
+            // txtDfo2
+            // 
+            this.txtDfo2.EditValue = "4311";
+            this.txtDfo2.Location = new System.Drawing.Point(200, 177);
+            this.txtDfo2.Name = "txtDfo2";
+            this.txtDfo2.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "Hz", -1, false, true, false, editorButtonImageOptions6, new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), serializableAppearanceObject21, serializableAppearanceObject22, serializableAppearanceObject23, serializableAppearanceObject24, "", null, null, DevExpress.Utils.ToolTipAnchor.Default)});
+            this.txtDfo2.Size = new System.Drawing.Size(184, 23);
+            this.txtDfo2.StyleController = this.layoutControl1;
+            this.txtDfo2.TabIndex = 6;
+            // 
             // Root
             // 
             this.Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
@@ -250,6 +282,15 @@
             this.layoutControlItem4.TextSize = new System.Drawing.Size(48, 14);
             this.layoutControlItem4.TextToControlDistance = 5;
             // 
+            // layoutControlItem9
+            // 
+            this.layoutControlItem9.Control = this.txtSplitTime;
+            this.layoutControlItem9.Location = new System.Drawing.Point(0, 0);
+            this.layoutControlItem9.Name = "layoutControlItem9";
+            this.layoutControlItem9.Size = new System.Drawing.Size(376, 24);
+            this.layoutControlItem9.TextSize = new System.Drawing.Size(0, 0);
+            this.layoutControlItem9.TextVisible = false;
+            // 
             // layoutControlItem5
             // 
             this.layoutControlItem5.Control = this.txtDto1;
@@ -312,35 +353,6 @@
             this.layoutControlItem8.TextSize = new System.Drawing.Size(0, 0);
             this.layoutControlItem8.TextVisible = false;
             // 
-            // tablePanel1
-            // 
-            this.tablePanel1.Columns.AddRange(new DevExpress.Utils.Layout.TablePanelColumn[] {
-            new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 5F),
-            new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 400F),
-            new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 5F)});
-            this.tablePanel1.Controls.Add(this.layoutControl1);
-            this.tablePanel1.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.tablePanel1.Location = new System.Drawing.Point(0, 0);
-            this.tablePanel1.Name = "tablePanel1";
-            this.tablePanel1.Rows.AddRange(new DevExpress.Utils.Layout.TablePanelRow[] {
-            new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 26F),
-            new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 280F),
-            new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 26F)});
-            this.tablePanel1.Size = new System.Drawing.Size(551, 434);
-            this.tablePanel1.TabIndex = 1;
-            this.tablePanel1.UseSkinIndents = true;
-            // 
-            // txtDto2
-            // 
-            this.txtDto2.EditValue = "1000";
-            this.txtDto2.Location = new System.Drawing.Point(12, 177);
-            this.txtDto2.Name = "txtDto2";
-            this.txtDto2.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
-            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "us", -1, false, true, false, editorButtonImageOptions5, new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), serializableAppearanceObject17, serializableAppearanceObject18, serializableAppearanceObject19, serializableAppearanceObject20, "", null, null, DevExpress.Utils.ToolTipAnchor.Default)});
-            this.txtDto2.Size = new System.Drawing.Size(184, 23);
-            this.txtDto2.StyleController = this.layoutControl1;
-            this.txtDto2.TabIndex = 6;
-            // 
             // layoutControlItem1
             // 
             this.layoutControlItem1.Control = this.txtDto2;
@@ -359,17 +371,6 @@
             this.layoutControlItem1.TextSize = new System.Drawing.Size(31, 14);
             this.layoutControlItem1.TextToControlDistance = 5;
             // 
-            // txtDfo2
-            // 
-            this.txtDfo2.EditValue = "200";
-            this.txtDfo2.Location = new System.Drawing.Point(200, 177);
-            this.txtDfo2.Name = "txtDfo2";
-            this.txtDfo2.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
-            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "Hz", -1, false, true, false, editorButtonImageOptions6, new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), serializableAppearanceObject21, serializableAppearanceObject22, serializableAppearanceObject23, serializableAppearanceObject24, "", null, null, DevExpress.Utils.ToolTipAnchor.Default)});
-            this.txtDfo2.Size = new System.Drawing.Size(184, 23);
-            this.txtDfo2.StyleController = this.layoutControl1;
-            this.txtDfo2.TabIndex = 6;
-            // 
             // layoutControlItem2
             // 
             this.layoutControlItem2.Control = this.txtDfo2;
@@ -388,24 +389,23 @@
             this.layoutControlItem2.TextSize = new System.Drawing.Size(31, 14);
             this.layoutControlItem2.TextToControlDistance = 5;
             // 
-            // txtSplitTime
-            // 
-            this.txtSplitTime.EditValue = true;
-            this.txtSplitTime.Location = new System.Drawing.Point(12, 12);
-            this.txtSplitTime.Name = "txtSplitTime";
-            this.txtSplitTime.Properties.Caption = "分时信号";
-            this.txtSplitTime.Size = new System.Drawing.Size(372, 20);
-            this.txtSplitTime.StyleController = this.layoutControl1;
-            this.txtSplitTime.TabIndex = 9;
-            // 
-            // layoutControlItem9
+            // tablePanel1
             // 
-            this.layoutControlItem9.Control = this.txtSplitTime;
-            this.layoutControlItem9.Location = new System.Drawing.Point(0, 0);
-            this.layoutControlItem9.Name = "layoutControlItem9";
-            this.layoutControlItem9.Size = new System.Drawing.Size(376, 24);
-            this.layoutControlItem9.TextSize = new System.Drawing.Size(0, 0);
-            this.layoutControlItem9.TextVisible = false;
+            this.tablePanel1.Columns.AddRange(new DevExpress.Utils.Layout.TablePanelColumn[] {
+            new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 5F),
+            new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 400F),
+            new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 5F)});
+            this.tablePanel1.Controls.Add(this.layoutControl1);
+            this.tablePanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tablePanel1.Location = new System.Drawing.Point(0, 0);
+            this.tablePanel1.Name = "tablePanel1";
+            this.tablePanel1.Rows.AddRange(new DevExpress.Utils.Layout.TablePanelRow[] {
+            new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 26F),
+            new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 280F),
+            new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 26F)});
+            this.tablePanel1.Size = new System.Drawing.Size(551, 434);
+            this.tablePanel1.TabIndex = 1;
+            this.tablePanel1.UseSkinIndents = true;
             // 
             // SignalEmulation
             // 
@@ -421,26 +421,26 @@
             this.Text = "时频差数据仿真";
             ((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).EndInit();
             this.layoutControl1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.txtSplitTime.Properties)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.txtFsHz.Properties)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.txtSigLen.Properties)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.txtDto1.Properties)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.txtDfo1.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtDto2.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtDfo2.Properties)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.Root)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlGroup1)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem4)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem9)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem5)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem6)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem7)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem8)).EndInit();
-            ((System.ComponentModel.ISupportInitialize)(this.tablePanel1)).EndInit();
-            this.tablePanel1.ResumeLayout(false);
-            ((System.ComponentModel.ISupportInitialize)(this.txtDto2.Properties)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).EndInit();
-            ((System.ComponentModel.ISupportInitialize)(this.txtDfo2.Properties)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).EndInit();
-            ((System.ComponentModel.ISupportInitialize)(this.txtSplitTime.Properties)).EndInit();
-            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem9)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.tablePanel1)).EndInit();
+            this.tablePanel1.ResumeLayout(false);
             this.ResumeLayout(false);
 
         }

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

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

+ 3 - 1
XdCxRhDW.App/XdCxRhDW.App.csproj

@@ -700,7 +700,9 @@ xcopy x86 AddIns\x86 /EHCIY
 rmdir x86 /S/Q
 rmdir x64 /S/Q
 rmdir logs /S/Q
-rmdir wwwroot /S/Q</PostBuildEvent>
+rmdir wwwroot /S/Q
+rmdir 信号仿真 /S/Q
+</PostBuildEvent>
   </PropertyGroup>
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>