private async void Run()
        {
            string alarmCode, _alarmCode = "-1";

            while (true)
            {
                try
                {
                    D300      = int.Parse(Inifile.INIGetStringValue(iniParameterPath, "Machine", "State", "-1"));
                    alarmCode = Inifile.INIGetStringValue(iniParameterPath, "AlarmCommand", "Code", "-1");
                    if (_alarmCode != alarmCode)
                    {
                        AlarmData alarmData = AlarmList.FirstOrDefault(s => s.Code == alarmCode);
                        if (alarmData != null)
                        {
                            AddMessage($"{alarmData.Code}:{alarmData.Content} 发生");

                            AlarmRecordViewModel newrow = new AlarmRecordViewModel
                            {
                                Time    = DateTime.Now,
                                Code    = alarmData.Code,
                                Content = alarmData.Content
                            };
                            AlarmRecord.Add(newrow);

                            string banci = GetBanci();
                            if (!File.Exists(System.IO.Path.Combine(@"D:\报警记录", "AlarmRecord" + banci + ".csv")))
                            {
                                string[] heads = new string[] { "时间", "报警代码", "报警内容" };
                                Csvfile.savetocsv(System.IO.Path.Combine(@"D:\报警记录", "AlarmRecord" + banci + ".csv"), heads);
                            }
                            string[] conts = new string[] { DateTime.Now.ToString(), alarmData.Code, alarmData.Content };
                            Csvfile.savetocsv(System.IO.Path.Combine(@"D:\报警记录", "AlarmRecord" + banci + ".csv"), conts);
                        }

                        _alarmCode = alarmCode;
                    }
                }
                catch (Exception ex) { AddMessage(ex.Message); }


                #region 换班
                if (LastBanci != GetBanci())
                {
                    try
                    {
                        WriteStatetoExcel(Path.Combine("D:\\报警记录", "时间统计" + LastBanci + ".xlsx"));
                        MachineStateA.Clean();
                        WriteToJson(MachineStateA, System.IO.Path.Combine(System.Environment.CurrentDirectory, "MachineStateA.json"));

                        LastBanci = GetBanci();
                        Inifile.INIWriteValue(iniParameterPath, "Summary", "LastBanci", LastBanci);
                        AddMessage(LastBanci + " 换班数据清零");
                    }
                    catch (Exception ex)
                    {
                        AddMessage(ex.Message);
                    }
                }
                #endregion
                await Task.Delay(100);
            }
        }
        public MainWindowViewModel()
        {
            #region 初始化参数
            Version             = "20201011";
            MessageStr          = "";
            HomePageVisibility  = "Visible";
            AlarmPageVisibility = "Collapsed";
            try
            {
                using (StreamReader reader = new StreamReader(System.IO.Path.Combine(System.Environment.CurrentDirectory, "MachineStateA.json")))
                {
                    string json = reader.ReadToEnd();
                    MachineStateA = JsonConvert.DeserializeObject <MachineStateViewModel>(json);
                }
            }
            catch (Exception ex)
            {
                MachineStateA = new MachineStateViewModel()
                {
                    DaiLiao       = 0,
                    YangBen       = 0,
                    TesterAlarm   = 0,
                    Down          = 0,
                    UploaderAlarm = 0,
                    Run           = 0
                };
                WriteToJson(MachineStateA, System.IO.Path.Combine(System.Environment.CurrentDirectory, "MachineStateA.json"));
                AddMessage(ex.Message);
            }
            AlarmRecord = new ObservableCollection <AlarmRecordViewModel>();
            try
            {
                if (!Directory.Exists(@"D:\报警记录"))
                {
                    Directory.CreateDirectory(@"D:\报警记录");
                }
                DataTable dt;
                Csvfile.csv2dt(System.IO.Path.Combine(@"D:\报警记录", "AlarmRecord" + GetBanci() + ".csv"), 1, out dt);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    AlarmRecordViewModel newrow = new AlarmRecordViewModel
                    {
                        Time    = Convert.ToDateTime(dt.Rows[i][0]),
                        Code    = (string)dt.Rows[i][1],
                        Content = (string)dt.Rows[i][2]
                    };
                    AlarmRecord.Add(newrow);
                }
            }
            catch (Exception ex)
            {
                AddMessage(ex.Message);
            }
            dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
            dispatcherTimer.Tick    += DispatcherTimer_Tick;
            dispatcherTimer.Start();

            LastBanci = Inifile.INIGetStringValue(iniParameterPath, "Summary", "LastBanci", "null");
            #endregion

            // If you use EPPlus in a noncommercial context
            // according to the Polyform Noncommercial license:
            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

            #region 报警文档
            try
            {
                ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
                string alarmExcelPath = Path.Combine(System.Environment.CurrentDirectory, "报警.xlsx");
                if (File.Exists(alarmExcelPath))
                {
                    FileInfo existingFile = new FileInfo(alarmExcelPath);
                    using (ExcelPackage package = new ExcelPackage(existingFile))
                    {
                        // get the first worksheet in the workbook
                        ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
                        for (int i = 1; i <= worksheet.Dimension.End.Row; i++)
                        {
                            AlarmData ad = new AlarmData();
                            ad.Code    = worksheet.Cells["A" + i.ToString()].Value == null ? "Null" : worksheet.Cells["A" + i.ToString()].Value.ToString();
                            ad.Content = worksheet.Cells["B" + i.ToString()].Value == null ? "Null" : worksheet.Cells["B" + i.ToString()].Value.ToString();
                            ad.Type    = worksheet.Cells["C" + i.ToString()].Value == null ? "Null" : worksheet.Cells["C" + i.ToString()].Value.ToString();
                            ad.Start   = DateTime.Now;
                            ad.End     = DateTime.Now;
                            ad.State   = false;
                            AlarmList.Add(ad);
                        }
                        AddMessage("读取到" + worksheet.Dimension.End.Row.ToString() + "条报警");
                    }
                }
                else
                {
                    AddMessage("VPP报警.xlsx 文件不存在");
                }
            }
            catch (Exception ex)
            {
                AddMessage(ex.Message);
            }
            #endregion

            AppLoadedEventCommand = new DelegateCommand(new Action(this.AppLoadedEventCommandExecute));
            OperateButtonCommand  = new DelegateCommand <object>(new Action <object>(this.OperateButtonCommandExecute));
            MenuActionCommand     = new DelegateCommand <object>(new Action <object>(this.MenuActionCommandExecute));
        }