| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | 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<SignalDdcViewModel>(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<string>;                    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;        }    }}
 |