| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- using DevExpress.XtraEditors;
- using Ips.Library.Basic;
- using Ips.Library.DxpLib;
- using Ips.Sim.Interops;
- 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.SignalMerges
- {
- public partial class SignalMergeMainCtrl : DevExpress.XtraEditors.XtraUserControl
- {
- public SignalMergeMainCtrl()
- {
- InitializeComponent();
- InFsButtonEdit.SetUnitText("M");
- OutFsButtonEdit.SetUnitText("M");
- gvMain.UseDefaultSettings(new GridViewDefaultSetting()
- {
- Editable = true,
- MultiSelect = true,
- DefaultEmptyDisplayText = false
- });
- }
- string vmfile = Path.Combine(SpsConst.VmFolder, "signalmerge.json");
- SignalMergeViewModel vm;
- private void SignalMergeMainCtrl_Load(object sender, EventArgs e)
- {
- if (File.Exists(vmfile))
- {
- vm = JsonSerializer.Deserialize<SignalMergeViewModel>(File.ReadAllText(vmfile));
- }
- else
- {
- vm = new SignalMergeViewModel();
- }
- bsMain.DataSource = vm;
- }
- private void OutFileButtonEdit_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
- {
- string fileName = ToolDialog.SaveFile(OutFileButtonEdit.Text, "输出文件");
- OutFileButtonEdit.EditValue = fileName;
- }
- private void inFileEdit_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
- {
- string infile = ToolDialog.OpenFile("", "输入文件");
- gvMain.ActiveEditor.EditValue = infile;
- }
- private void btnSigMerge_Click(object sender, EventArgs e)
- {
- if (!ValidateInput()) return;
- string vmjson = JsonSerializer.Serialize(vm, new JsonSerializerOptions() { WriteIndented = true });
- File.WriteAllText(vmfile, vmjson);
- var mergeItems = vm.MergeItems.Where(m => m.FileName.IsNotNullOrWhitespace()).ToList();
- var infs = vm.InFs.E6l();
- var outfs = vm.OutFs.E6l();
- var outfile = vm.OutFile;
- string outdir = Path.GetDirectoryName(outfile);
- DirectoryUtil.CreateIfNotExists(outdir);
- int res = -1;
- if (mergeItems.Count == 2)
- {
- var item1 = mergeItems[0];
- var item2 = mergeItems[1];
- res = SignalEmulationApi.mergeSignals(infs, item1.FileName, item1.Ffc.E6l(), item2.FileName, item2.Ffc.E6l(), outfs, outfile);
- }
- else if (mergeItems.Count == 3)
- {
- var item1 = mergeItems[0];
- var item2 = mergeItems[1];
- var item3 = mergeItems[2];
- res = SignalEmulationApi.mergeSignalsEx_M(infs, item1.FileName, item1.Ffc.E6l(), item2.FileName, item2.Ffc.E6l(), item3.FileName, item3.Ffc.E6l(), outfs, outfile);
- }
- else
- {
- MsgHelper.ShowMsg("支持两个输入文件或三个输入文件");
- }
- if (res != 0)
- {
- MsgHelper.ShowError($"合并失败,错误代码:{res}");
- }
- else
- {
- bool openFolder = MsgHelper.ShowConfirm("合并成功,是否打开目录!");
- if (openFolder)
- {
- Process.Start("explorer", outdir);
- }
- }
- }
- private bool ValidateInput()
- {
- dxError.ClearErrors();
- if (vm.InFs == 0) dxError.SetError(InFsButtonEdit, "输入采样率不能为空!");
- if (vm.OutFs == 0) dxError.SetError(OutFsButtonEdit, "输入采样率不能空!");
- if (vm.OutFile.IsNullOrWhitespace()) dxError.SetError(OutFileButtonEdit, "输出文件不能空!");
- if (!vm.MergeItems.Where(m => m.FileName.IsNotNullOrWhitespace()).Any()) dxError.SetError(grdMain, "必须包含输入文件信息!");
- return dxError.HasErrors == false;
- }
- }
- }
|