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 System.Threading; using System.ComponentModel; using FLY.Simulation.Flyad7; namespace FLYAD7_Simulation_Wpf { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window, INotifyPropertyChanged { FlyADClientUI flyadclient_ui; private double timespan1ms; public double TimeSpan1ms { get { return timespan1ms; } set { if (timespan1ms != value) { timespan1ms = value; NotifyPropertyChanged("TimeSpan1ms"); } } } private int oneSecCnt; public int OneSecCnt { get { return oneSecCnt; } set { if (oneSecCnt != value) { oneSecCnt = value; NotifyPropertyChanged("OneSecCnt"); } } } FLYAD7 flyad7; FLY.Simulation.Flyad7.OBJProxy.Flyad7_OBJProxy flyad7objproxy; bool bClosed = false; public MainWindow() { InitializeComponent(); FObjBase.PollModule.Current.IsAccurate = true; flyad7 = new FLYAD7(); flyad7objproxy = new FLY.Simulation.Flyad7.OBJProxy.Flyad7_OBJProxy(0, flyad7); flyad7objproxy.Listen(); flyadclient_ui = new FlyADClientUI(flyad7); this.DataContext = flyadclient_ui; this.groupbox_ip.DataContext = flyad7; groupBox4.DataContext = this; comboBox1.DataContext = flyad7; Thread t = new Thread(OnPoll); t.IsBackground = true; t.Start(); //FObjBase.PollModule.Current.Start(); } DateTime dt_cnt = DateTime.MinValue; int onesecondcnt = 0; TimeSpan ts_1scnt = TimeSpan.Zero; void Update1sCnt() { DateTime d = DateTime.Now; if (dt_cnt == DateTime.MinValue) dt_cnt = d; else { onesecondcnt++; TimeSpan ts = (d - dt_cnt); if (ts.TotalMilliseconds >= 1.28) { //OneSecCnt = (int)(d - dt_cnt).TotalMilliseconds;// onesecondcnt; OneSecCnt = onesecondcnt; onesecondcnt = 0; dt_cnt = d; } else { ts_1scnt = d - dt_cnt; } } } void OnPoll() { while (true) { if (bClosed) return; timer_Tick(null, null); //Update1sCnt(); Thread.Sleep(0); } } DateTime dt = DateTime.MinValue; void UpdateTimeSpan1ms() { DateTime d = DateTime.Now; if (dt == DateTime.MinValue) dt = d; else { TimeSpan1ms = (d-dt).TotalMilliseconds; dt = d; } } void timer_Tick(object sender, EventArgs e) { FObjBase.PollModule.Current.OnPoll(); //UpdateTimeSpan1ms(); } #region INotifyPropertyChanged 成员 protected void NotifyPropertyChanged(string propertyName) { if (this.PropertyChanged != null) this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName)); } public event PropertyChangedEventHandler PropertyChanged; #endregion private void Window_Closed(object sender, EventArgs e) { bClosed = true; } private void button1_Click(object sender, RoutedEventArgs e) { if (flyad7.mSimGageAD is FLY.Simulation.Coating.GageAD) { WindowCoating wb = new WindowCoating(); wb.Init((flyad7.mSimGageAD as FLY.Simulation.Coating.GageAD).mCoating); wb.ShowDialog(); } else if (flyad7.mSimGageAD is FLY.Simulation.HeaderAndTailer.GageAD) { WindowHeaderAndTailer wb = new WindowHeaderAndTailer(); wb.Init((flyad7.mSimGageAD as FLY.Simulation.HeaderAndTailer.GageAD)); wb.ShowDialog(); } else if(flyad7.mSimGageAD is FLY.Simulation.Blowing.GageAD) { WindowBlowing wb = new WindowBlowing(); wb.mBlowing = (flyad7.mSimGageAD as FLY.Simulation.Blowing.GageAD).mBlowing; wb.ShowDialog(); } else if (flyad7.mSimGageAD is FLY.Simulation.Casting.GageAD) { MessageBox.Show("不支持"); } else { MessageBox.Show("不支持"); } } private void button2_Click(object sender, RoutedEventArgs e) { flyad7.Save(); MessageBox.Show("保存成功,请重启"); } private void button3_Click(object sender, RoutedEventArgs e) { Window_SyncList w = new Window_SyncList(); w.Init(flyad7); w.Show(); } } public class IO2BinConverter : IValueConverter { #region IValueConverter 成员 public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { UInt16 io = (UInt16)value; string str = System.Convert.ToString(io, 2); return str.PadLeft(12, '0'); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value == null) return 0xffff; else { string str = value as string; UInt16 io; if (UInt16.TryParse(str, out io)) return io; else return 0xffff; } } #endregion } public class EnumToIsCheckedConverter<TEnum> : IValueConverter where TEnum : struct { #region IValueConverter 成员 public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { TEnum type = (TEnum)value; if (Enum.GetName(typeof(TEnum), type) == (parameter as string)) return true; else return false; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if ((bool)value == true) { return Enum.Parse(typeof(TEnum), (parameter as string)); } else { return null; } } #endregion } public class SimModeConverter : EnumToIsCheckedConverter<FLY.Simulation.Flyad7.FLYAD7.SIM_MODE> { } }