| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | 
							- using System;
 
- using System.Diagnostics;
 
- using System.IO;
 
- using System.Linq;
 
- using System.Reflection;
 
- using System.Threading.Tasks;
 
- using System.Windows.Forms;
 
- using XdCxRhDW.App.CpuCgTools;
 
- using System.Collections;
 
- using System.Collections.Generic;
 
- namespace XdCxRhDW.App.CorTools
 
- {
 
-     class XcorrStruct
 
-     {
 
-         public String file1 { get; set; }
 
-         public String file2 { get; set; }
 
-         public int smpStart { get; set; }           //开始样点
 
-         public int smpCount { get; set; }           //样点数
 
-         public double samplingRate { get; set; }    //采样率
 
-         public double dtCenter { get; set; }        //时差中心
 
-         public double dtRange { get; set; }         //时差范围
 
-         public double dfRange { get; set; }         //频差范围
 
-         public double snrThreshold { get; set; }	//信噪比门限
 
-     }
 
-     class XcorrUtils
 
-     {
 
-         static Process p = new Process();
 
-         // D:/data/test/r1.dat  D:/data/test/r4.dat 1562500 -250000 20 16384 100000 1048576 11
 
-         public static async Task<CafResult> Calc(XcorrStruct xs)
 
-         {
 
-             CafResult res = new CafResult();
 
-             await Task.Run(() =>
 
-             {
 
-                 p.StartInfo.FileName = Path.Combine(p.StartInfo.WorkingDirectory, "xcorr\\XcorrCpu.exe");
 
-                 p.StartInfo.Arguments = $"\"{xs.file1}\" \"{xs.file2}\" {(Int64)(xs.samplingRate)} {xs.dtCenter} {xs.dtRange} {xs.dfRange} {xs.smpStart} {xs.smpCount} {xs.snrThreshold}";
 
-                 p.StartInfo.CreateNoWindow = true;
 
-                 p.StartInfo.RedirectStandardError = true;
 
-                 p.StartInfo.RedirectStandardOutput = true;
 
-                 p.StartInfo.UseShellExecute = false;
 
-                 p.Start();
 
-                 Stopwatch stopWatch = new Stopwatch();
 
-                 stopWatch.Start();
 
-                 p.WaitForExit();
 
-                 stopWatch.Stop();
 
-                 TimeSpan ts = stopWatch.Elapsed;
 
-                 var str = p.StandardOutput.ReadToEnd();
 
-                 res.FromLine(str);
 
-                 res.file1 = xs.file1;
 
-                 res.file2 = xs.file2;
 
-                 res.tm = stopWatch.Elapsed.TotalSeconds;
 
-                 res.smpstart = xs.smpStart;
 
-                 res.smplen = xs.smpCount;
 
-             });
 
-             return res;
 
-         }
 
-         public static async Task<IEnumerable<DmcResult>> DmcCheckAsync(string fileName, double fs)
 
-         {
 
-             return await Task.Run(() =>
 
-              {
 
-                  p.StartInfo.FileName = Path.Combine(p.StartInfo.WorkingDirectory, "xcorr\\dmc.exe");
 
-                  p.StartInfo.Arguments = $"all \"{fileName}\" -f {fs} -c --dmfirst";
 
-                  p.StartInfo.CreateNoWindow = true;
 
-                  p.StartInfo.RedirectStandardError = true;
 
-                  p.StartInfo.RedirectStandardOutput = true;
 
-                  p.StartInfo.UseShellExecute = false;
 
-                  p.Start();
 
-                  Stopwatch stopWatch = new Stopwatch();
 
-                  stopWatch.Start();
 
-                  p.WaitForExit();
 
-                  stopWatch.Stop();
 
-                  TimeSpan ts = stopWatch.Elapsed;
 
-                  var str = p.StandardOutput.ReadToEnd();
 
-                  return ConvertDmcResult(str);
 
-              });
 
-         }
 
-         public static IEnumerable<DmcResult> ConvertDmcResult(string res)
 
-         {
 
-             var lines = res.Split(Environment.NewLine.ToArray(), StringSplitOptions.RemoveEmptyEntries);
 
-             foreach (var line in lines)
 
-             {
 
-                 var items = line.Split('\t');
 
-                 if (items.Length < 2) continue;
 
-                 int start = int.Parse(items[0]);
 
-                 int length = int.Parse(items[1]);
 
-                 string userName = "";
 
-                 if (items.Length >= 3)
 
-                     userName = items[2];
 
-                 yield return new DmcResult(start, length, userName);
 
-             }
 
-         }
 
-         public static void Stop()
 
-         {
 
-             try
 
-             {
 
-                 p.Kill();
 
-             }
 
-             catch (Exception)
 
-             {
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |