using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using FLY.Thick.Base.UI.Converter; using System.Net; using FLY.Thick.Base.Common; using FLY.Thick.Base.Client; using FLY.Thick.Base.IService; using Unity; using System.ComponentModel; using GalaSoft.MvvmLight.Command; namespace FLY.Thick.Base.UI { /// <summary> /// Page_Initparam.xaml 的交互逻辑 /// </summary> public partial class PgInitparam : Page { PgInitParamVm viewModel; public PgInitparam() { InitializeComponent(); } [InjectionMethod] public void Init(IInitParamService initParamService) { viewModel = new PgInitParamVm(); viewModel.Init(initParamService); this.DataContext = viewModel; } } public class PgInitParamVm : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; #region 参数 /// <summary> /// 扫描架长 /// </summary> public int PosLength { get; set; } public bool IsTimeGridAdvEnabled { get; set; } public int ADLag { get; set; } /// <summary> /// 自动归原点间距,次数 /// </summary> public int AutoOrgInterval { get; set; } /// <summary> /// 编码器1 mm/pulse /// </summary> public double Encoder1_mmpp { get; set; } /// <summary> /// 设置的速度,与 实际速度比例 Speed1 = VScan*Speed1Scale /// </summary> public double Speed1Scale { get; set; } /// <summary> /// 线速度来源 /// </summary> public FilmVSRC FilmVSrc { get; set; } /// <summary> /// 最小线速度 m/min /// </summary> public int FilmVThreshold { get; set; } /// <summary> /// 线速度:编码器2 mm/pulse /// </summary> public double Encoder2_mmpp { get; set; } /// <summary> /// 编码器2 放大 /// </summary> public float Encoder2_comp { get; set; } /// <summary> /// 线速度:1圈多少mm /// </summary> public double MmOfR { get; set; } /// <summary> /// 数据有效源 /// </summary> public DATAVALIDSRC DataValidSrc { get; set; } /// <summary> /// 当数据有效状态改变,自动按F1,F3 /// </summary> public bool AutoF1F3 { get; set; } /// <summary> /// 当数据有效状态 无效->有效 ,等待多久重新扫描 ,单位s /// </summary> public int ReStartDelay { get; set; } /// <summary> /// 有按样标定硬件 /// </summary> public bool HasProfileSample { get; set; } /// <summary> /// 有小托辊 /// </summary> public bool HasHold { get; set; } #region 速度 /// <summary> /// 扫描时速度 Velocity Of Scan /// </summary> public UInt32 VScan { get; set; } /// <summary> /// 调试时速度,向前走,向后走 Velocity Of JOG /// </summary> public UInt32 VJOG { get; set; } /// <summary> /// 精确速度 Velocity Of Accuracy 如: 机架修正, 样品取样, 机架信息获取 /// </summary> public UInt32 VAccuracy { set; get; } /// <summary> /// 开始速度 Start Velocity /// </summary> public UInt32 SVelocity { set; get; } /// <summary> /// 加速时间 /// </summary> public UInt32 ATime { set; get; } /// <summary> /// 减速时间 /// </summary> public UInt32 DTime { set; get; } /// <summary> /// 归0速度1 /// </summary> public UInt32 HVelocity1 { set; get; } /// <summary> /// 归0速度2 /// </summary> public UInt32 HVelocity2 { set; get; } #endregion /// <summary> /// 数据库保存的月数 /// </summary> public int DBKeepMonth { get; set; } /// <summary> /// 数据库路径 /// </summary> public string DbPath { get; set; } #endregion #region Command public RelayCommand ApplyCmd { get; } public RelayCommand SelectDbPathCmd { get; } #endregion IInitParamService initParamService; public PgInitParamVm() { ApplyCmd = new RelayCommand(Apply); SelectDbPathCmd = new RelayCommand(SelectDbPath); } public void Init(IInitParamService initParamService) { this.initParamService = initParamService; Misc.BindingOperations.SetBinding(initParamService, "PosLength", this, "PosLength"); Misc.BindingOperations.SetBinding(initParamService, "IsTimeGridAdvEnabled", this, "IsTimeGridAdvEnabled"); Misc.BindingOperations.SetBinding(initParamService, "ADLag", this, "DLag"); Misc.BindingOperations.SetBinding(initParamService, "AutoOrgInterval", this, "AutoOrgInterval"); Misc.BindingOperations.SetBinding(initParamService, "Encoder1_mmpp", this, "Encoder1_mmpp"); Misc.BindingOperations.SetBinding(initParamService, "Speed1Scale", this, "Speed1Scale"); Misc.BindingOperations.SetBinding(initParamService, "FilmVSrc", this, "FilmVSrc"); Misc.BindingOperations.SetBinding(initParamService, "FilmVThreshold", this, "FilmVThreshold"); Misc.BindingOperations.SetBinding(initParamService, "Encoder2_mmpp", this, "Encoder2_mmpp"); Misc.BindingOperations.SetBinding(initParamService, "Encoder2_comp", this, "Encoder2_comp"); Misc.BindingOperations.SetBinding(initParamService, "MmOfR", this, "MmOfR"); Misc.BindingOperations.SetBinding(initParamService, "DataValidSrc", this, "DataValidSrc"); Misc.BindingOperations.SetBinding(initParamService, "AutoF1F3", this, "AutoF1F3"); Misc.BindingOperations.SetBinding(initParamService, "ReStartDelay", this, "ReStartDelay"); Misc.BindingOperations.SetBinding(initParamService, "HasProfileSample", this, "HasProfileSample"); Misc.BindingOperations.SetBinding(initParamService, "HasHold", this, "HasHold"); Misc.BindingOperations.SetBinding(initParamService, "VScan", this, "VScan"); Misc.BindingOperations.SetBinding(initParamService, "VJOG", this, "VJOG"); Misc.BindingOperations.SetBinding(initParamService, "VAccuracy", this, "VAccuracy"); Misc.BindingOperations.SetBinding(initParamService, "SVelocity", this, "SVelocity"); Misc.BindingOperations.SetBinding(initParamService, "ATime", this, "ATime"); Misc.BindingOperations.SetBinding(initParamService, "DTime", this, "DTime"); Misc.BindingOperations.SetBinding(initParamService, "HVelocity1", this, "HVelocity1"); Misc.BindingOperations.SetBinding(initParamService, "HVelocity2", this, "HVelocity2"); Misc.BindingOperations.SetBinding(initParamService, "DBKeepMonth", this, "DBKeepMonth"); Misc.BindingOperations.SetBinding(initParamService, "DbPath", this, "DbPath"); } private void Apply() { if (!WdPassword.Authorize("InitParam")) return; initParamService.PosLength=this.PosLength; initParamService.IsTimeGridAdvEnabled=this.IsTimeGridAdvEnabled; initParamService.ADLag=this.ADLag; initParamService.AutoOrgInterval=this.AutoOrgInterval; initParamService.Encoder1_mmpp=this.Encoder1_mmpp; initParamService.Speed1Scale=this.Speed1Scale; initParamService.FilmVSrc=this.FilmVSrc; initParamService.FilmVThreshold=this.FilmVThreshold; initParamService.Encoder2_mmpp=this.Encoder2_mmpp; initParamService.Encoder2_comp=this.Encoder2_comp; initParamService.MmOfR=this.MmOfR; initParamService.DataValidSrc=this.DataValidSrc; initParamService.AutoF1F3=this.AutoF1F3; initParamService.ReStartDelay=this.ReStartDelay; initParamService.HasProfileSample=this.HasProfileSample; initParamService.HasHold=this.HasHold; initParamService.VScan=this.VScan; initParamService.VJOG=this.VJOG; initParamService.VAccuracy=this.VAccuracy; initParamService.SVelocity=this.SVelocity; initParamService.ATime=this.ATime; initParamService.DTime=this.DTime; initParamService.HVelocity1=this.HVelocity1; initParamService.HVelocity2=this.HVelocity2; initParamService.DBKeepMonth=this.DBKeepMonth; initParamService.DbPath = this.DbPath; initParamService.Apply(); FLY.ControlLibrary.Window_Tip.Show("应用成功", null, TimeSpan.FromSeconds(2)); } private void SelectDbPath() { System.Windows.Forms.FileDialog open = new System.Windows.Forms.OpenFileDialog(); open.Filter = "sqlite3文件|*.sqlite3|所有文件|*.*"; open.Title = "打开音乐文件"; if (System.IO.Path.IsPathRooted(DbPath)) open.InitialDirectory = System.IO.Path.GetDirectoryName(DbPath); else open.InitialDirectory = System.Environment.CurrentDirectory; if (open.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string currentDirectory = System.Environment.CurrentDirectory.ToLower(); string filename = open.FileName.ToLower(); if (filename.StartsWith(currentDirectory)) { //CurrentDirectory没有最后的\ 需要+1 DbPath = open.FileName.Substring(System.Environment.CurrentDirectory.Length + 1); } else { DbPath = open.FileName; } } } } }