using DevExpress.XtraEditors; using Ips.Ddc; using Ips.Library.Basic; using Ips.Library.DxpLib; using Ips.Library.Entity; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Text.Json; using System.Threading.Tasks; using System.Windows.Forms; namespace Ips.Sps.Tools.SignalDdces { public partial class SignalDdcMainCtrl : DevExpress.XtraEditors.XtraUserControl { public SignalDdcMainCtrl() { InitializeComponent(); FsButtonEdit.SetUnitText("M"); gvMain.UseDefaultSettings(new GridViewDefaultSetting() { Editable = true, DefaultEmptyDisplayText = false, ShowRowNum = true }); } string vmfile = Path.Combine(SpsConst.VmFolder, "signalddc.json"); SignalDdcViewModel vm; private void SignalDdcMainCtrl_Load(object sender, EventArgs e) { if (File.Exists(vmfile)) { vm = JsonSerializer.Deserialize(File.ReadAllText(vmfile)); } else { vm = new SignalDdcViewModel(); } bsMain.DataSource = vm; } private void FileInButtonEdit_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e) { FileInButtonEdit.EditValue = ToolDialog.OpenFile("", "选择输入文件"); } private void OutDirButtonEdit_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e) { OutDirButtonEdit.EditValue = ToolDialog.OpenFolder("选择输出路径"); } private void btnDdc_Click(object sender, EventArgs e) { string jsonText = JsonSerializer.Serialize(vm, new JsonSerializerOptions() { WriteIndented = true }); File.WriteAllText(vmfile, jsonText); if (ValidateParams() == false) return; btnDdc.Enabled = false; var fileIn = vm.FileIn; var fs = vm.Fs.E6l(); var outdir = vm.OutDir; var ddcItems = vm.DdcItems.Where(m => m.Mutil > 1) .Select(m => new DdcSigItem(m.Ffc.E6l(), m.Mutil)) .ToList(); Task.Run(() => { var res = DdcUtil.ExecAsync(fileIn, fs, outdir, ddcItems, vm.Real, vm.Gpu).Result; return res; }).ContinueWith(t => { //this.Invoke(() => //{ btnDdc.Enabled = true; try { var res = t.Result as ExeResult; if (res == null) return; if (res.ExitCode == 0) { Process.Start("explorer", outdir); } else { MsgHelper.ShowError("信道化异常,错误消息:" + res.ExitMsg); } } catch (Exception ex) { this.Invoke(() => { MsgHelper.ShowError("信道化出错,错误消息:" + ex.Message); }); } // }); }, TaskScheduler.FromCurrentSynchronizationContext()); } private bool ValidateParams() { dxError.ClearErrors(); if (vm.FileIn.IsNullOrWhitespace() || !File.Exists(vm.FileIn)) dxError.SetError(FileInButtonEdit, "输入文件不存在"); if (vm.OutDir.IsNullOrWhitespace() || !Directory.Exists(vm.OutDir)) dxError.SetError(OutDirButtonEdit, "输出目录不存在"); if (vm.Fs <= 1 * 1e-6) dxError.SetError(FsButtonEdit, "采样率必须大于0"); var ddcitems = vm.DdcItems.Where(m => m.Mutil < 2).ToList(); if (ddcitems.IsNullOrEmpty()) dxError.SetError(grdMain, "信号列表不能为空"); return !dxError.HasErrors; } } }