123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547 |
- using DxHelper;
- using ExtensionsDev;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using DW5S.DTO;
- using DW5S.Repostory;
- using DW5S.KxcApi;
- using DevExpress.XtraLayout.Utils;
- using Serilog;
- using DW5S.Service;
- namespace DW5S.App.CorTools
- {
- public partial class DetectToolForm : DevExpress.XtraEditors.XtraForm
- {
- static readonly string inifile = Path.Combine(Application.StartupPath, "par.ini");
- List<CafResultDto> gridSource = new List<CafResultDto>();
- public DetectToolForm()
- {
- InitializeComponent();
- this.gcCheckCgRes.UseDefault(gridSource);
- txtFileTime.UseDefault().UseDoubleClickToSelectAll();
- gridView1.Columns[nameof(CafResultDto.file1)].MaxWidth = 300;
- gridView1.Columns[nameof(CafResultDto.file2)].MaxWidth = 300;
- }
- private void MainForm_Load(object sender, EventArgs e)
- {
- layoutControl1.BestFit();
- this.gcCheckCgRes.UseRowNumber()
- .UseExportCsv()
- .UseExportXlsx()
- .AddContentMenu<CafResultDto>("时隙参估", SvgHelper.CreateSlotCg(), async data =>
- {
- layoutControl1.Enabled = false;
- data.ForEach(t =>
- {
- t.dt = null;
- t.df = null;
- t.snr = null;
- t.file2 = Path.GetFileName(btnFile2.Text);
- });
- gridView1.RefreshData();
- string file1 = null, file2 = null;
- try
- {
- file1 = await HttpHelper.UploadFileAsync(btnFile1.Text);
- }
- catch (Exception ex)
- {
- layoutControl1.Enabled = true;
- IocContainer.Logger.Error(ex,ex.Message);
- DxHelper.MsgBoxHelper.ShowError(ex.Message);
- return;
- }
- try
- {
- file2 = await HttpHelper.UploadFileAsync(btnFile2.Text);
- }
- catch (Exception ex)
- {
- layoutControl1.Enabled = true;
- IocContainer.Logger.Error(ex,ex.Message);
- DxHelper.MsgBoxHelper.ShowError(ex.Message);
- return;
- }
- CpuCgMultiDto dto = null;
- try
- {
- dto = new CpuCgMultiDto()
- {
- file1 = file1,
- file2 = file2,
- samplingRate = double.Parse(tefs.Text) * 1e6,
- dtCenter = double.Parse(teCenter.Text),
- dtRange = double.Parse(teRange.Text),
- dfRange = int.Parse(teDfRange.Text),
- snrThreshold = int.Parse(teSnr.Text),
- };
- dto.smpPositions.AddRange(data.Select(p => new SmpPosition()
- {
- smpStart = p.smpstart,
- smpCount = p.smplen,
- }));
- }
- catch (Exception ex)
- {
- layoutControl1.Enabled = true;
- IocContainer.Logger.Error(ex,"CPU多时隙参估参数错误");
- DxHelper.MsgBoxHelper.ShowError($"CPU多时隙参估参数错误");
- return;
- }
- try
- {
- var result = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(SysConfig.GetUrl("DetectCg/CpuCgMultiCalc"), dto);
- if (result.code == 200)
- {
- for (int i = 0; i < result.data.Count; i++)
- {
- data[i].dt = result.data[i].Dt;
- data[i].df = result.data[i].Df;
- data[i].snr = result.data[i].Snr;
- data[i].tm = result.data[i].TimeMs;
- }
- this.gridView1.RefreshData();
- WriteIni();
- }
- else
- {
- DxHelper.MsgBoxHelper.ShowError(result.msg);
- IocContainer.Logger.Error(result.msg);
- }
- }
- catch (TaskCanceledException)
- {
- DxHelper.MsgBoxHelper.ShowInfo($"CPU多时隙参估计算超时");
- }
- catch (Exception ex)
- {
- IocContainer.Logger.Error(ex,"CPU多时隙参估计算异常");
- DxHelper.MsgBoxHelper.ShowError($"CPU多时隙参估计算异常");
- }
- await HttpHelper.DeleteFileAsync(SysConfig.GetBaseUrl(), file1, file2);
- layoutControl1.Enabled = true;
- }, false)
- .AddContentMenu<CafResultDto>("信号识别", SvgHelper.CreateSigProc(), async data =>
- {
- layoutControl1.Enabled = false;
- try
- {
- data.ForEach(t =>
- {
- t.ModType = "";
- t.ModRate = null;
- t.FfcHz = null;
- t.dt = null;
- t.df = null;
- t.snr = null;
- });
- gridView1.RefreshData();
- var file1 = await HttpHelper.UploadFileAsync(btnFile1.Text);
- var smps = data.Select(p => new SmpPosition()
- {
- smpStart = p.smpstart,
- smpCount = p.smplen,
- }).ToList();
- var dto = new SignalProcDto()
- {
- File = file1,
- Fs = (long)(Convert.ToDouble(tefs.Text) * 1e6),
- Smps = smps,
- };
- var result = await HttpHelper.PostRequestAsync<List<SignalProcResDto>>(SysConfig.GetUrl("DetectCg/SignalProc"), dto);
- if (result.code == 200)
- {
- var resData = result.data;
- for (int i = 0; i < data.Count; i++)
- {
- data[i].ModType = resData[i].ModType.GetEnumDisplayName();
- data[i].ModRate = resData[i].Rate;
- data[i].FfcHz = resData[i].Ffc;
- data[i].SigSnr = resData[i].Snr;
- }
- gridView1.RefreshData();
- gridView1.BestFitColumns();
- }
- else
- {
- IocContainer.Logger.Error(result.msg);
- DxHelper.MsgBoxHelper.ShowError(result.msg);
- }
- await HttpHelper.DeleteFileAsync(SysConfig.GetBaseUrl(), file1);
- }
- catch (Exception ex)
- {
- IocContainer.Logger.Error(ex,"信号识别异常");
- }
- layoutControl1.Enabled = true;
- }, false)
- .UseClear<CafResultDto>(menuCaption: "清除表格");
- this.btnFile1.UseChooseWaveFile((file, fsHz) =>
- {
- if (fsHz > 0)
- tefs.Text = (fsHz / 1e6).ToString();
- else
- tefs.Text = "0.096";
- }).UseDoubleClickToSelectAll();
- this.btnFile2.UseChooseFile().UseDoubleClickToSelectAll();
- btnCheck.Enabled = !ckKY.Checked && !ckIBS.Checked && !chkDama.Checked ? false : true;
- ReadIni();
- }
- private async void btnCheck_Click(object sender, EventArgs e)
- {
- if (!ValidateFiles(btnFile1.Text))
- {
- return;
- }
- EnumSigCheckTypeDto dmcType = EnumSigCheckTypeDto.DAMA;
- if (ckKY.Checked)
- {
- dmcType |= EnumSigCheckTypeDto.Ky5758;
- }
- if (ckIBS.Checked)
- {
- dmcType |= EnumSigCheckTypeDto.IBS;
- }
- if (chkDama.Checked)
- {
- dmcType |= EnumSigCheckTypeDto.DAMA;
- }
- else
- {
- dmcType = dmcType & ~EnumSigCheckTypeDto.DAMA;
- }
- int v1 = (int)dmcType;
- int v2 = (int)dmcType - 1;
- bool mergeRes = false;
- if ((v1 & v2) != 0) //多选
- {
- mergeRes = MsgBoxHelper.ShowConfirm("是否合并多个检测结果");
- }
- DetectDto dto = new DetectDto();
- dto.mergeRes = mergeRes;
- dto.dmcType = dmcType;
- layoutControl1.Enabled = false;
- gridSource.Clear();
- try
- {
- dto.fsHz = double.Parse(tefs.Text) * 1e6;
- dto.band = double.Parse(txtBand.Text);
- dto.file1 = await HttpHelper.UploadFileAsync(btnFile1.Text);
- var dmcResult = await HttpHelper.PostRequestAsync<IEnumerable<DetectResDto>>(SysConfig.GetUrl("DetectCg/DetectCalc"), dto);
- if (dmcResult.code == 200)
- {
- foreach (var dmcItem in dmcResult.data)
- {
- DateTime? sigTime = null;
- colSigTime.Visible = false;
- if (!string.IsNullOrWhiteSpace(txtFileTime.Text))
- {
- sigTime = txtFileTime.DateTime.AddSeconds(dmcItem.Start / dto.fsHz);
- colSigTime.Visible = true;
- }
- gridSource.Add(new CafResultDto()
- {
- file1 = Path.GetFileName(btnFile1.Text),
- //file2 = btnFile2.Text,
- smpstart = dmcItem.Start,
- smplen = dmcItem.Length,
- DmcType = dmcItem.DmcType,
- SigSnr = dmcItem.Snr,
- SigTime = sigTime,
- tm = dmcItem.TimeMs,
- //ModType = dmcItem.ModType,
- UserName = dmcItem.UserName,
- });
- }
- }
- else
- {
- IocContainer.Logger.Error(dmcResult.msg);
- DxHelper.MsgBoxHelper.ShowError(dmcResult.msg);
- }
- WriteIni();
- }
- catch (TaskCanceledException)
- {
- DxHelper.MsgBoxHelper.ShowInfo($"信号检测超时");
- }
- catch (Exception ex)
- {
- IocContainer.Logger.Error(ex,"信号检测出错");
- DxHelper.MsgBoxHelper.ShowError($"信号检测出错");
- }
- await HttpHelper.DeleteFileAsync(SysConfig.GetBaseUrl(), dto.file1);
- gridView1.RefreshData();
- gridView1.BestFitColumns();
- layoutControl1.Enabled = true;
- }
- private async void btnCalc_Click(object sender, EventArgs e)
- {
- if (!ValidateFiles(btnFile1.Text, btnFile2.Text)) return;
- CpuCgDto xItem = new CpuCgDto();
- layoutControl1.Enabled = false;
- try
- {
- xItem.file1 = await HttpHelper.UploadFileAsync(btnFile1.Text);
- xItem.file2 = await HttpHelper.UploadFileAsync(btnFile2.Text);
- }
- catch (Exception ex)
- {
- layoutControl1.Enabled = true;
- IocContainer.Logger.Error(ex,ex.Message);
- DxHelper.MsgBoxHelper.ShowError(ex.Message);
- return;
- }
- try
- {
- xItem.smpCount = double.Parse(teCount.Text);
- xItem.samplingRate = Convert.ToInt32(double.Parse(tefs.Text) * 1e6);
- xItem.dtCenter = int.Parse(teCenter.Text);
- xItem.dtRange = int.Parse(teRange.Text);
- xItem.dfRange = int.Parse(teDfRange.Text);
- xItem.smpStart = long.Parse(tePos.Text);
- xItem.snrThreshold = int.Parse(teSnr.Text);
- }
- catch (Exception ex)
- {
- layoutControl1.Enabled = true;
- IocContainer.Logger.Error(ex,"CPU文件参估参数错误");
- DxHelper.MsgBoxHelper.ShowError($"CPU文件参估参数错误");
- return;
- }
- WriteIni();
- gridSource.Clear();
- try
- {
- var result = await HttpHelper.PostRequestAsync<CpuCgResDto>(SysConfig.GetUrl("DetectCg/CpuCgCalc"), xItem);
- if (result.code == 200)
- {
- DateTime? sigTime = null;
- if (!string.IsNullOrWhiteSpace(txtFileTime.Text))
- {
- sigTime = txtFileTime.DateTime.AddSeconds(xItem.smpStart / xItem.samplingRate);
- }
- gridSource.Add(new CafResultDto()
- {
- file1 = Path.GetFileName(btnFile1.Text),
- file2 = Path.GetFileName(btnFile2.Text),
- smpstart = result.data.Smpstart,
- smplen = result.data.Smplen,
- dt = result.data.Dt,
- df = result.data.Df,
- snr = result.data.Snr,
- tm = result.data.TimeMs,
- SigTime = sigTime,
- });
- gridView1.FocusedRowHandle = gridSource.Count - 1;
- }
- else
- {
- IocContainer.Logger.Error(result.msg);
- DxHelper.MsgBoxHelper.ShowError(result.msg);
- }
- }
- catch (TaskCanceledException)
- {
- DxHelper.MsgBoxHelper.ShowInfo($"CPU文件参估计算超时");
- }
- catch (Exception ex)
- {
- IocContainer.Logger.Error(ex,"CPU文件参估出错");
- DxHelper.MsgBoxHelper.ShowError("CPU文件参估出错");
- }
- await HttpHelper.DeleteFileAsync(SysConfig.GetBaseUrl(), xItem.file1, xItem.file2);
- gridView1.RefreshData();
- layoutControl1.Enabled = true;
- }
- private async void btnDrawImage_Click(object sender, EventArgs e)
- {
- if (!ValidateFiles(btnFile1.Text, btnFile2.Text)) return;
- layoutControl1.Enabled = false;
- try
- {
- CpuCgDto par = new CpuCgDto()
- {
- file1 = btnFile1.Text,
- file2 = btnFile2.Text,
- samplingRate = Convert.ToInt32(double.Parse(tefs.Text) * 1e6),
- dtCenter = int.Parse(teCenter.Text),
- dtRange = int.Parse(teRange.Text),
- dfRange = int.Parse(teDfRange.Text),
- smpStart = int.Parse(tePos.Text),
- smpCount = double.Parse(teCount.Text),
- snrThreshold = int.Parse(teSnr.Text),
- };
- par.file1 = await HttpHelper.UploadFileAsync(btnFile1.Text);
- par.file2 = await HttpHelper.UploadFileAsync(btnFile2.Text);
- var resp = await HttpHelper.PostRequestAsync<List<ImageResultDto>>(SysConfig.GetUrl("DetectCg/DrawImage"), par);
- await HttpHelper.DeleteFileAsync(SysConfig.GetBaseUrl(), par.file1, par.file2);
- if (resp.code != 200)
- {
- IocContainer.Logger.Error(resp.msg);
- DxHelper.MsgBoxHelper.ShowError(resp.msg);
- }
- else
- {
- if (resp.data != null && resp.data.Any())
- {
- new CgImageForm(resp.data).ShowDialog();
- }
- else
- {
- DxHelper.MsgBoxHelper.ShowInfo("无计算结果!");
- }
- }
- WriteIni();
- }
- catch (TaskCanceledException)
- {
- DxHelper.MsgBoxHelper.ShowInfo($"参估绘图超时");
- }
- catch (Exception ex)
- {
- IocContainer.Logger.Error(ex,"参估绘图失败");
- DxHelper.MsgBoxHelper.ShowError($"参估绘图失败");
- return;
- }
- finally
- {
- layoutControl1.Enabled = true;
- }
- }
- private void chkDama_CheckedChanged(object sender, EventArgs e)
- {
- lciStartPos.Visibility = lciSampleLength.Visibility = ckKY.Checked | ckIBS.Checked | chkDama.Checked ? LayoutVisibility.Never : LayoutVisibility.Always;
- btnCalc.Enabled = ckKY.Checked | ckIBS.Checked | chkDama.Checked ? false : true;
- btnDrawImage.Enabled = btnCalc.Enabled;
- btnCheck.Enabled = !ckKY.Checked && !ckIBS.Checked && !chkDama.Checked ? false : true;
- itemBand.Visibility = ckKY.Checked | ckIBS.Checked | chkDama.Checked ? LayoutVisibility.Always : LayoutVisibility.Never;
- layoutControl1.BestFit();
- }
- private void ckIBS_CheckedChanged(object sender, EventArgs e)
- {
- lciStartPos.Visibility = lciSampleLength.Visibility = ckKY.Checked | ckIBS.Checked | chkDama.Checked ? LayoutVisibility.Never : LayoutVisibility.Always;
- btnCalc.Enabled = ckKY.Checked | ckIBS.Checked | chkDama.Checked ? false : true;
- btnDrawImage.Enabled = btnCalc.Enabled;
- btnCheck.Enabled = !ckKY.Checked && !ckIBS.Checked && !chkDama.Checked ? false : true;
- itemBand.Visibility = ckKY.Checked | ckIBS.Checked | chkDama.Checked ? LayoutVisibility.Always : LayoutVisibility.Never;
- layoutControl1.BestFit();
- }
- private void ckKY_CheckedChanged(object sender, EventArgs e)
- {
- lciStartPos.Visibility = lciSampleLength.Visibility = ckKY.Checked | ckIBS.Checked | chkDama.Checked ? LayoutVisibility.Never : LayoutVisibility.Always;
- btnCalc.Enabled = ckKY.Checked | ckIBS.Checked | chkDama.Checked ? false : true;
- btnDrawImage.Enabled = btnCalc.Enabled;
- btnCheck.Enabled = !ckKY.Checked && !ckIBS.Checked && !chkDama.Checked ? false : true;
- itemBand.Visibility = ckKY.Checked | ckIBS.Checked | chkDama.Checked ? LayoutVisibility.Always : LayoutVisibility.Never;
- layoutControl1.BestFit();
- }
- private bool ValidateFiles(params string[] files)
- {
- foreach (var file in files)
- {
- if (string.IsNullOrWhiteSpace(file))
- {
- DxHelper.MsgBoxHelper.ShowError($"请选择文件!");
- return false;
- }
- if (!System.IO.File.Exists(file))
- {
- DxHelper.MsgBoxHelper.ShowError($"文件【{file}】不存在");
- return false;
- }
- }
- return true;
- }
- //读取配置
- void ReadIni()
- {
- if (System.IO.File.Exists(inifile))
- {
- try
- {
- var lines = System.IO.File.ReadAllLines(inifile);
- btnFile1.Text = lines[0];
- btnFile2.Text = lines[1];
- teCount.Text = lines[2];
- tefs.Text = lines[3];
- teCenter.Text = lines[4];
- teRange.Text = lines[5];
- teSnr.Text = lines[6];
- tePos.Text = lines[7];
- teDfRange.Text = lines[8];
- txtFileTime.Text = lines[9];
- txtBand.Text = lines[10];
- }
- catch
- {
- }
- }
- }
- // 写入配置
- void WriteIni()
- {
- var lines = new List<string>
- {
- btnFile1.Text,
- btnFile2.Text,
- teCount.Text,
- tefs.Text,
- teCenter.Text,
- teRange.Text,
- teSnr.Text,
- tePos.Text,
- teDfRange.Text,
- txtFileTime.Text,
- txtBand.Text,
- };
- System.IO.File.WriteAllLines(inifile, lines);
- }
- private void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
- {
- if (e.Column.FieldName == nameof(CafResultDto.dt)
- || e.Column.FieldName == nameof(CafResultDto.df)
- || e.Column.FieldName == nameof(CafResultDto.snr))
- {
- if (e.Value == null || e.Value.ToString() == "")
- e.DisplayText = "--";
- //var val = gridView1.GetRowCellValue(e.ListSourceRowIndex, gridView1.Columns[nameof(CafResultDto.snr)]);
- //if (val != null && (double)val == 0)
- //{
- // e.DisplayText = "--";
- //}
- }
- else if (e.Column.FieldName == nameof(CafResultDto.ModType)
- || e.Column.FieldName == nameof(CafResultDto.ModRate)
- || e.Column.FieldName == nameof(CafResultDto.FfcHz))
- {
- if (e.Value == null || e.Value.ToString() == "")
- e.DisplayText = "--";
- }
- }
- }
- }
|