zoulei 11 kuukautta sitten
vanhempi
commit
ecda2353a3

+ 21 - 20
Service/CheckServer/AddIns/SigFilterHelper.cs

@@ -12,29 +12,30 @@ namespace CheckServer.AddIns
     public class SigFilterHelper
     {
 
-        Process pro;
         // 【fin】 [fout] [fsample] [bandwidth]
-        public async Task SigFilter(SigFilterDto dto, string outFile)
+        public static async Task<string> SigFilter(SigFilterDto dto, string outFile)
         {
-            pro = new Process();
-            await Task.Run(() =>
-            {
-                pro.StartInfo.Arguments = $"\"{dto.File}\" \"{outFile}\" {(Int64)(dto.FsHz)} {dto.BandHz}";
+            var pro = new Process();
+            var res = await Task.Run(() =>
+             {
+                 pro.StartInfo.Arguments = $"\"{dto.File}\" \"{outFile}\" {(long)(dto.FsHz)} {dto.BandHz}";
 
-                var exePath = Path.Combine(pro.StartInfo.WorkingDirectory, "AddIns");
-                pro.StartInfo.WorkingDirectory = exePath;
-                pro.StartInfo.FileName = Path.Combine(exePath, "FileFilter.exe");
-                pro.StartInfo.CreateNoWindow = true;
-                pro.StartInfo.RedirectStandardError = true;
-                pro.StartInfo.RedirectStandardOutput = true;
-                pro.StartInfo.UseShellExecute = false;
-                pro.Start();
-                var suceed = pro.WaitForExit(dto.TimeoutSeconds * 1000);
-                if (!suceed)
-                {
-                    throw new Exception("滤波处理超时");
-                }
-            });
+                 var exePath = Path.Combine(pro.StartInfo.WorkingDirectory, "AddIns");
+                 pro.StartInfo.WorkingDirectory = exePath;
+                 pro.StartInfo.FileName = Path.Combine(exePath, "FileFilter.exe");
+                 pro.StartInfo.CreateNoWindow = true;
+                 pro.StartInfo.RedirectStandardError = true;
+                 pro.StartInfo.RedirectStandardOutput = true;
+                 pro.StartInfo.UseShellExecute = false;
+                 pro.Start();
+                 var suceed = pro.WaitForExit(dto.TimeoutSeconds * 1000);
+                 if (!suceed)
+                 {
+                     throw new Exception("滤波处理超时");
+                 }
+                 return outFile;
+             });
+            return res;
         }
 
     }

+ 34 - 26
Service/CheckServer/Controllers/CheckController.cs

@@ -19,7 +19,7 @@ namespace CheckServer.Controllers
     public class CheckController : BaseController
     {
         /// <summary>
-        /// 信号检测(支持DAMA、IBS、能量检测)(需要先上传文件)
+        /// 信号检测(支持DAMA、IBS、能量检测)(需要先上传文件、会根据信号带宽自动对文件进行滤波)
         /// </summary>
         /// <param name="dto">信号检测参数</param>
         /// <returns></returns>
@@ -28,8 +28,23 @@ namespace CheckServer.Controllers
         {
             try
             {
-                await LogHelper.Info($"正在检测文件{dto.file1}");
+                await LogHelper.Info($"正在对文件{dto.file1}执行滤波");
                 dto.file1 = GetLocalFile(dto.file1);
+                var bandHz = dto.band * 1e3;
+                string outFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot", $"{Path.GetFileNameWithoutExtension(dto.file1)}_filter.dat");
+                dto.file1 = await SigFilterHelper.SigFilter(new SigFilterDto()
+                {
+                    BandHz = bandHz,
+                    File = dto.file1,
+                    FsHz = dto.fsHz,
+                    TimeoutSeconds = dto.TimeoutSeconds,
+
+                }, outFile);
+                if (!File.Exists(dto.file1))
+                {
+                    return Error<List<DetectResDto>>("滤波后的文件未能生成");
+                }
+                await LogHelper.Info($"正在检测文件{dto.file1}");
                 List<DetectResDto> list = new List<DetectResDto>();
                 List<DmcResult> listRes = new List<DmcResult>();
                 List<DmcResult> dmcResults = new List<DmcResult>();
@@ -203,8 +218,6 @@ namespace CheckServer.Controllers
         }
 
 
-
-
         /// <summary>
         /// 对信号文件进行滤波处理(需要先上传文件)
         /// </summary>
@@ -213,34 +226,29 @@ namespace CheckServer.Controllers
         [HttpPost]
         public async Task<AjaxResult<SigFilterResponseDto>> SigFilterProc(SigFilterDto dto)
         {
-            await LogHelper.Info($"正在滤波处理文件{dto.File}");
-            return await Task.Run(async () =>
+            try
             {
-                try
+                await LogHelper.Info($"正在滤波处理文件{dto.File}");
+                dto.File = GetLocalFile(dto.File);
+                string outFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot", Guid.NewGuid() + "filter.dat");
+                outFile = await SigFilterHelper.SigFilter(dto, outFile);
+                if (!File.Exists(outFile))
                 {
-                    dto.File = GetLocalFile(dto.File);
-                    string outFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot", Guid.NewGuid() + "filter.dat");
-                    SigFilterHelper sigFilter = new SigFilterHelper();
-                    await sigFilter.SigFilter(dto, outFile);
-                    if (!File.Exists(outFile))
-                    {
-                        return Error<SigFilterResponseDto>("滤波后的文件未能生成");
-                    }
-                    else
-                    {
-                        await LogHelper.Info($"文件{Path.GetFileName(dto.File)}滤波完成");
-
-                        return Success(new SigFilterResponseDto() { File = Path.GetFileName(outFile) });
-                    }
-
+                    return Error<SigFilterResponseDto>("滤波后的文件未能生成");
                 }
-                catch (Exception ex)
+                else
                 {
-                    await LogHelper.Error($"文件{Path.GetFileName(dto.File)}滤波异常", ex);
-                    return Error<SigFilterResponseDto>($"信号滤波算法执行异常");
+                    await LogHelper.Info($"文件{Path.GetFileName(dto.File)}滤波完成");
+
+                    return Success(new SigFilterResponseDto() { File = Path.GetFileName(outFile) });
                 }
-            });
 
+            }
+            catch (Exception ex)
+            {
+                await LogHelper.Error($"文件{Path.GetFileName(dto.File)}滤波异常", ex);
+                return Error<SigFilterResponseDto>($"信号滤波算法执行异常");
+            }
         }
 
 

+ 2 - 29
Service/X2D1NoRefTaskServer/Service/TaskService.cs

@@ -310,6 +310,7 @@ namespace X2D1NoRefTaskServer.Service
                                                 fsHz = minfo.FsHz,
                                                 mergeRes = true,
                                                 SigProc = true,
+                                                band = taskSig.BandHz / 1e3,
                                             };
                                             if (checkFileType == 0)//检测上行信号=0,检测主星下行信号=1
                                             {
@@ -329,20 +330,6 @@ namespace X2D1NoRefTaskServer.Service
                                                 await LogHelper.Warning($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6:f3}MHz],该服务不支持Normal类型信号");
                                                 continue;
                                             }
-                                            SigFilterDto filterDto = new SigFilterDto()
-                                            {
-                                                File = detectDto.file1,
-                                                FsHz = minfo.FsHz,
-                                                BandHz = taskSig.BandHz,
-                                            };
-                                            var filterRes = await HttpHelper.PostRequestAsync<SigFilterResponseDto>(baseUrl + "DetectCg/SigFilterProc", filterDto, token: cts.Token);
-                                            if (filterRes.code != 200)
-                                            {
-                                                await LogHelper.Error($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6:f3}MHz],{capTime:yyyyMMddHHmmss}时刻滤波出错.{filterRes.msg}");
-                                                continue;
-                                            }
-
-                                            detectDto.file1 = filterRes.data.File;
                                             var deteResp = await HttpHelper.PostRequestAsync<List<DetectResDto>>(baseUrl + "DetectCg/DetectCalc", detectDto, token: cts.Token);
                                             if (deteResp.code != 200)
                                             {
@@ -799,6 +786,7 @@ namespace X2D1NoRefTaskServer.Service
                                                     file1 = cdbFile,//11局使用上行泄露信号进行检测
                                                     dmcType = taskSig.SigType,//上行信号检测目前的算法只能使用基于能量的KY或IBS检测
                                                     fsHz = minfo.FsHz,
+                                                    band = taskSig.BandHz / 1e3,
                                                     mergeRes = true,
                                                     SigProc = true,
                                                 };
@@ -820,21 +808,6 @@ namespace X2D1NoRefTaskServer.Service
                                                     await LogHelper.Warning($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6:f3}MHz],该服务不支持Normal类型信号");
                                                     continue;
                                                 }
-                                                SigFilterDto filterDto = new SigFilterDto()
-                                                {
-                                                    File = detectDto.file1,
-                                                    FsHz = minfo.FsHz,
-                                                    BandHz = taskSig.BandHz,
-                                                };
-                                                var filterRes = await HttpHelper.PostRequestAsync<SigFilterResponseDto>(baseUrl + "DetectCg/SigFilterProc", filterDto, token: cts.Token);
-                                                if (filterRes.code != 200)
-                                                {
-                                                    await LogHelper.Error($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6:f3}MHz],{capTime:yyyyMMddHHmmss}时刻滤波出错.{filterRes.msg}");
-                                                    continue;
-                                                }
-
-                                                detectDto.file1 = filterRes.data.File;
-
                                                 var deteResp = await HttpHelper.PostRequestAsync<List<DetectResDto>>(baseUrl + "DetectCg/DetectCalc", detectDto, token: cts.Token);
                                                 if (deteResp.code != 200)
                                                 {

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

@@ -77,7 +77,7 @@ namespace XdCxRhDW.App.Controllers
         }
 
         /// <summary>
-        /// 信号检测(支持DAMA、IBS、能量检测)(需要先上传文件)
+        /// 信号检测(支持DAMA、IBS、能量检测)(需要先上传文件,会根据信号带宽自动对文件进行滤波)
         /// </summary>
         /// <param name="dto">信号检测参数</param>
         /// <returns></returns>

+ 0 - 34
XdCxRhDW.App/CorTools/DetectToolForm.cs

@@ -235,40 +235,6 @@ namespace XdCxRhDW.App.CorTools
             dto.dmcType = dmcType;
             layoutControl1.Enabled = false;
             gridSource.Clear();
-
-            try
-            {
-                SigFilterDto filterDto = new SigFilterDto();
-                filterDto.File = await HttpHelper.UploadFileAsync(btnFile1.Text, SysConfig.GetBaseUrl());
-                filterDto.FsHz = double.Parse(tefs.Text) * 1e6;
-                filterDto.BandHz = double.Parse(txtBand.Text) * 1e3;
-                filterDto.TimeoutSeconds = int.Parse(txtTimeout.Text);
-                var filterRes = await HttpHelper.PostRequestAsync<SigFilterResponseDto>(SysConfig.GetUrl("DetectCg/SigFilterProc"), filterDto, filterDto.TimeoutSeconds);
-                if (filterRes.code == 200)
-                {
-                    dto.file1 = filterRes.data.File;
-                }
-                else
-                {
-                    Serilog.Log.Error(filterRes.msg);
-                    DxHelper.MsgBoxHelper.ShowError(filterRes.msg);
-                    await HttpHelper.DeleteFileAsync(SysConfig.GetBaseUrl(), filterDto.File);
-                    gridView1.BestFitColumns();
-                    layoutControl1.Enabled = true;
-                    return;
-                }
-
-            }
-            catch (TaskCanceledException)
-            {
-                DxHelper.MsgBoxHelper.ShowInfo($"滤波处理超时");
-            }
-            catch (Exception ex)
-            {
-                Serilog.Log.Error(ex, "滤波处理出错");
-                DxHelper.MsgBoxHelper.ShowError($"滤波处理出错");
-            }
-         
             try
             {
                 dto.fsHz = double.Parse(tefs.Text) * 1e6;

+ 2 - 2
XdCxRhDw.Dto/DetectDto.cs

@@ -37,10 +37,10 @@ namespace XdCxRhDW.Dto
         public double fsHz { get; set; }
 
         /// <summary>
-        /// 信号带宽(KHz,只对IBS信号有效,默认25KHz)
+        /// 信号带宽(KHz),会对检测文件进行滤波处理
         /// </summary>
         [RangeDouble(0, 100)]
-        public double? band { get; set; } = 25;
+        public double band { get; set; } = 25;
 
         /// <summary>
         /// 是否对信号进行识别(获取调制类型、速率、频偏等)