Beispiel #1
0
        private void Update()
        {
            if (Input.GetKeyDown(KeyCode.F1))
            {
                TimeScaleHelper.ShootPause(0.7f);
            }

            if (Input.GetKeyDown(KeyCode.F2))
            {
                TimeScaleHelper.ShootPause(0.2f);
            }
        }
Beispiel #2
0
        private void DoUpload()
        {
            CtrlWaiting waiting = new CtrlWaiting(() =>
            {
                var ctrls = ControllerHelper.GetList("1=1");
                if (ctrls.Count == 0)
                {
                    WinInfoHelper.ShowInfoWindow(this, "没有控制器!");
                    return;
                }
                Maticsoft.BLL.SMT_TIMESCALE_INFO tsBll = new Maticsoft.BLL.SMT_TIMESCALE_INFO();
                var models = tsBll.GetModelList("");
                models     = models.OrderBy(m => m.TIME_NO).ToList();//时段升序
                Maticsoft.BLL.SMT_WEEKEX_INFO wbll = new Maticsoft.BLL.SMT_WEEKEX_INFO();
                var weekexs = wbll.GetModelList("");

                SmtLog.Info("设置", "上传时间段设置");
                FrmDetailInfo.Show(false);
                FrmDetailInfo.AddOneMsg(string.Format("开始上传控制器时段:控制器数={0},时段数={1} ...", ctrls.Count, models.Count));
                List <ManualResetEvent> eventList = new List <ManualResetEvent>();
                foreach (var item in ctrls)
                {
                    ManualResetEvent evt = new ManualResetEvent(false);
                    eventList.Add(evt);
                    ThreadPool.QueueUserWorkItem(new WaitCallback((o) =>
                    {
                        try
                        {
                            var ctrl = ControllerHelper.ToController(item);
                            using (IAccessCore acc = new WGAccess())
                            {
                                if (acc.ClearTimeScales(ctrl))
                                {
                                    FrmDetailInfo.AddOneMsg(string.Format("清除控制器时间段成功:SN={0},IP={1},开始上传控制器时间段...", ctrl.sn, ctrl.ip));
                                    foreach (var model in models)
                                    {
                                        var m    = TimeScaleHelper.ToTimeScale(model);
                                        bool ret = acc.SetTimeScales(ctrl, m);
                                        if (!ret)
                                        {
                                            FrmDetailInfo.AddOneMsg(string.Format("上传控制器时间段失败:时段号={0},控制器IP={1}", model.TIME_NO, ctrl.ip), isRed: true);
                                        }
                                        else
                                        {
                                            FrmDetailInfo.AddOneMsg(string.Format("上传控制器时间段成功:时段号={0},控制器IP={1}", model.TIME_NO, ctrl.ip));
                                        }
                                    }
                                }
                                else
                                {
                                    FrmDetailInfo.AddOneMsg(string.Format("清除控制器时间段失败:SN={0},IP={1},结束该控制器上传...", ctrl.sn, ctrl.ip), isRed: true);
                                }

                                if (acc.SetHoliday(ctrl, new HolidayPrm()
                                {
                                    IsClear = true,
                                    startDate = DateTime.Now,
                                    endDate = DateTime.Now.AddDays(1)
                                }))
                                {
                                    FrmDetailInfo.AddOneMsg(string.Format("清除控制器假期约束成功:SN={0},IP={1},开始上传假期约束...", ctrl.sn, ctrl.ip));
                                    foreach (var w in weekexs)
                                    {
                                        bool ret = acc.SetHoliday(ctrl, new HolidayPrm()
                                        {
                                            IsClear   = false,
                                            IsOnDuty  = w.WEEKEX_ON_DUTY,
                                            startDate = w.WEEKEX_START_DATE,
                                            endDate   = w.WEEKEX_END_DATE
                                        });
                                        if (!ret)
                                        {
                                            FrmDetailInfo.AddOneMsg(string.Format("上传控制器假期约束失败:约束={0},起止时间={1}~{2},控制器IP={3}", w.WEEKEX_ON_DUTY ? "上班" : "假期", w.WEEKEX_START_DATE, w.WEEKEX_END_DATE, ctrl.ip), isRed: true);
                                        }
                                        else
                                        {
                                            FrmDetailInfo.AddOneMsg(string.Format("上传控制器假期约束成功:约束={0},起止时间={1}~{2},控制器IP={3}", w.WEEKEX_ON_DUTY ? "上班" : "假期", w.WEEKEX_START_DATE, w.WEEKEX_END_DATE, ctrl.ip));
                                        }
                                    }
                                }
                                else
                                {
                                    FrmDetailInfo.AddOneMsg(string.Format("清除控制器假期约束失败:SN={0},IP={1}", ctrl.sn, ctrl.ip), isRed: true);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            FrmDetailInfo.AddOneMsg(string.Format("上传控制器时间段失败:SN={0},IP={1},异常信息:{2},结束该控制器上传...", item.SN_NO, item.IP, ex.Message), isRed: true);
                            log.Error("上传控制器时间段失败,", ex);
                            SmtLog.ErrorFormat("设置", "上传控制器时间段失败:SN={0},IP={1},异常信息:{2},结束该控制器上传...", item.SN_NO, item.IP, ex.Message);
                        }
                        finally
                        {
                            evt.Set();
                        }
                    }));
                }
                foreach (var item in eventList)
                {
                    item.WaitOne(60000);
                }
                FrmDetailInfo.AddOneMsg("结束控制器时段上传!");
            });

            waiting.Show(this);
        }