Пример #1
0
        public void DOInquire(调试模块 tmp)
        {
            ModlesMsg modlesMsg = new ModlesMsg()
            {
                addr = int.Parse(tmp.模块编号),
                模块类型 = "模块查询"
            };

            MainForm.WriteDic.AddOrUpdate(tmp.模块编号 + "," + "查询", modlesMsg, (key, value) => value);
        }
 public static bool BeginDoCommunication(ModlesMsg modlesMsg)
 {
     if (currentCommState != CommState.Idel)
     {
         return(false);
     }
     iar = null;
     currentCommState = modlesMsg.Function;
     if (MainForm.CommMaster != null)
     {
         if (MainForm.CommMaster is Master)
         {
             iar = DoCommunicationFunc.BeginInvoke((MainForm.CommMaster as Master), modlesMsg, null, null);
         }
         else
         {
             iar = DoCommunicationTcpFunc.BeginInvoke((MainForm.CommMaster as TcpMaster), modlesMsg, null, null);
         }
     }
     return(true);
 }
Пример #3
0
        public void OpenSubPanel(调试模块 tmp)
        {
            ModlesMsg modlesMsg = new ModlesMsg()
            {
                addr = int.Parse(tmp.模块编号),
                模块类型 = "模块查询"
            };

            MainForm.UpWriteDic.AddOrUpdate(tmp.模块编号 + "," + "查询", modlesMsg, (key, value) => value);

            ModlesMsg modlesMsg1 = new ModlesMsg()
            {
                addr = int.Parse(tmp.模块编号),
                模块类型 = "信息查询"
            };

            MainForm.UpWriteDic.AddOrUpdate(tmp.模块编号 + "," + "信息", modlesMsg, (key, value) => value);
            OpenModel = true;

            //frm_开关模块界面 = New_Form<开关模块界面>(frm_开关模块界面);
            //frm_开关模块界面.tmp = tmp;
            //frm_开关模块界面.PanelLayout();
        }
Пример #4
0
        public static void FroeachScene()
        {
            DateTime dt1       = DateTime.Now;
            DateTime dt2       = DateTime.Now;
            bool     bSure     = false;
            DateTime currentDt = DateTime.Now;

            if (lastCheckDatetime >= currentDt)
            {
                lastCheckDatetime = currentDt;
                return;
            }
            try
            {
                dt1             = 计算日出日落.计算日出时间(MainForm.currentParam.经度, MainForm.currentParam.维度, DateTime.Now);
                dt2             = 计算日出日落.计算日落时间(MainForm.currentParam.经度, MainForm.currentParam.维度, DateTime.Now);
                MainForm.日出日落时间 = string.Format("日出:{0} 日落:{1}", dt1.ToString("HH:mm:ss"), dt2.ToString("HH:mm:ss"));
                MainForm.日出时间   = dt1.ToString("HH:mm:ss");
                MainForm.日落时间   = dt2.ToString("HH:mm:ss");
                bSure           = true;
            }
            catch (Exception ex)
            {
                bSure = false;
            }
            //for (int i = 0; i < ModelsOperate.ModelsList.Count; i++)
            //{
            //var v = ModelsOperate.ModelsList[i];
            //}

            var tmp = 场景设置.当前场景模块.Where((t, b) =>
            {
                if (t.启用标志)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }).ToList();

            foreach (var v1 in tmp)
            {
                if (tmp.FindIndex(t => t.模式 == SceneModel.国家公休日) != -1)
                {
                    string currentd = DateTime.Now.ToString("yyyyMMdd");
                    if (MainForm.国家公休日列表.FindIndex(t => t.日期 == currentd) != -1)
                    {
                        if (v1.模式 == SceneModel.工作日模式)
                        {
                            continue;
                        }
                    }
                    else
                    {
                        if (v1.模式 == SceneModel.国家公休日)
                        {
                            continue;
                        }
                        if (DateTime.Now.DayOfWeek == DayOfWeek.Monday && ((v1.星期数据 >> 0) & 0x01) == 1 ||
                            DateTime.Now.DayOfWeek == DayOfWeek.Tuesday && ((v1.星期数据 >> 1) & 0x01) == 1 ||
                            DateTime.Now.DayOfWeek == DayOfWeek.Wednesday && ((v1.星期数据 >> 2) & 0x01) == 1 ||
                            DateTime.Now.DayOfWeek == DayOfWeek.Thursday && ((v1.星期数据 >> 3) & 0x01) == 1 ||
                            DateTime.Now.DayOfWeek == DayOfWeek.Friday && ((v1.星期数据 >> 4) & 0x01) == 1 ||
                            DateTime.Now.DayOfWeek == DayOfWeek.Saturday && ((v1.星期数据 >> 5) & 0x01) == 1 ||
                            DateTime.Now.DayOfWeek == DayOfWeek.Sunday && ((v1.星期数据 >> 6) & 0x01) == 1)
                        {
                        }
                        else
                        {
                            continue;
                        }
                    }
                }
                else
                {
                    if (DateTime.Now.DayOfWeek == DayOfWeek.Monday && ((v1.星期数据 >> 0) & 0x01) == 1 ||
                        DateTime.Now.DayOfWeek == DayOfWeek.Tuesday && ((v1.星期数据 >> 1) & 0x01) == 1 ||
                        DateTime.Now.DayOfWeek == DayOfWeek.Wednesday && ((v1.星期数据 >> 2) & 0x01) == 1 ||
                        DateTime.Now.DayOfWeek == DayOfWeek.Thursday && ((v1.星期数据 >> 3) & 0x01) == 1 ||
                        DateTime.Now.DayOfWeek == DayOfWeek.Friday && ((v1.星期数据 >> 4) & 0x01) == 1 ||
                        DateTime.Now.DayOfWeek == DayOfWeek.Saturday && ((v1.星期数据 >> 5) & 0x01) == 1 ||
                        DateTime.Now.DayOfWeek == DayOfWeek.Sunday && ((v1.星期数据 >> 6) & 0x01) == 1)
                    {
                    }
                    else
                    {
                        continue;
                    }
                }
                if (DateTime.Now.Date >= v1.开始时间.Date && v1.结束时间.Date >= DateTime.Now.Date)
                {
                    foreach (var v2 in v1.场景子名称列表)
                    {
                        if (v2.定时方式 != SetTimeType.普通定时 && !bSure)
                        {
                            continue;
                        }
                        DateTime dt3;
                        if (v2.定时方式 == SetTimeType.普通定时)
                        {
                            dt3 = v2.动作时间;
                        }
                        else if (v2.定时方式 == SetTimeType.日出时间)
                        {
                            dt3 = dt1;
                        }
                        else
                        {
                            dt3 = dt2;
                        }
                        var Msg1 = 获取场景模块信息(v2);
                        if (lastCheckDatetime.TimeOfDay < dt3.TimeOfDay && dt3.TimeOfDay <= DateTime.Now.TimeOfDay)
                        {
                            var Msg = 获取场景模块信息(v2);
                            if (Msg != null)
                            {
                                foreach (var tmpMsg in Msg)
                                {
                                    List <ushort> tmpl = new List <ushort>();
                                    foreach (var ii in tmpMsg.channel)
                                    {
                                        tmpl.Add((ushort)ii);
                                    }
                                    var tmpModel = ModelsOperate.GetModel(int.Parse(tmpMsg.addr));
                                    if (tmpModel == null)
                                    {
                                        continue;
                                    }
                                    if (tmpModel.模块类型 == "开关模块")
                                    {
                                        ModlesMsg modlesMsg = new ModlesMsg()
                                        {
                                            addr = int.Parse(tmpMsg.addr),
                                            //action = v2.动作 ? ActionState.Open : ActionState.Close,
                                            bitArray   = tmpl.ToArray(),
                                            valueArray = tmpMsg.value,
                                            模块类型       = tmpModel.模块类型,
                                            bit        = 0xf1
                                        };
                                        MainForm.WriteDic.AddOrUpdate(tmpMsg.addr + "," + "场景", modlesMsg, (key, value) => value);
                                    }
                                    else if (tmpModel.模块类型 == "调光模块")
                                    {
                                        ModlesMsg modlesMsg = new ModlesMsg()
                                        {
                                            addr = int.Parse(tmpMsg.addr),
                                            //action = v2.动作 ? ActionState.Open : ActionState.Close,
                                            bitArray   = tmpl.ToArray(),
                                            valueArray = tmpMsg.value,
                                            模块类型       = tmpModel.模块类型,
                                            bit        = 0xf1
                                        };
                                        MainForm.WriteDic.AddOrUpdate(tmpMsg.addr + "," + "场景_1", modlesMsg, (key, value) => value);
                                        ModlesMsg modlesMsg1 = new ModlesMsg()
                                        {
                                            addr = int.Parse(tmpMsg.addr),
                                            //action = v2.动作 ? ActionState.Open : ActionState.Close,
                                            bitArray   = tmpl.ToArray(),
                                            valueArray = tmpMsg.value,
                                            模块类型       = tmpModel.模块类型,
                                            bit        = 0xf2
                                        };
                                        MainForm.WriteDic.AddOrUpdate(tmpMsg.addr + "," + "场景_2", modlesMsg1, (key, value) => value);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            lastCheckDatetime = currentDt;
        }