Ejemplo n.º 1
0
 public RobotDef(Robot onwer, string name, RobotRunMode mode, string param, string runParam)
 {
     _onwer    = onwer;
     _name     = name;
     _mode     = mode;
     _param    = param;
     _runParam = runParam;
 }
Ejemplo n.º 2
0
 public void Update(RobotRunMode mode, string param, string runParam)
 {
     if (_mode != mode || _param != param || _runParam != runParam)
     {
         _mode     = mode;
         _param    = param;
         _runParam = runParam;
         if (_timer != null)
         {
             _timer.Dispose();
             _timer = null;
         }
         RunNow();
     }
 }
Ejemplo n.º 3
0
    public List <RobotDef> LoadDef(string defDoc)
    {
        Dictionary <string, RobotDef> dic = new Dictionary <string, RobotDef>();

        string[] defs = defDoc.Split(new string[] { "\r\n" }, StringSplitOptions.None);
        int      row  = 1;

        foreach (string def in defs)
        {
            string loc1 = def.Trim();
            if (string.IsNullOrEmpty(loc1) || loc1[0] == 65279 || loc1[0] == ';' || loc1[0] == '#')
            {
                continue;
            }
            string pattern = @"([^\s]+)\s+(NONE|SEC|MIN|HOUR|DAY|RunOnDay|RunOnWeek|RunOnMonth)\s+([^\s]+)\s+([^\s]+)";
            Match  m       = Regex.Match(loc1, pattern, RegexOptions.IgnoreCase);
            if (!m.Success)
            {
                onError(new Exception("Robot配置错误“" + loc1 + "”, 第" + row + "行"));
                continue;
            }
            string       name     = m.Groups[1].Value.Trim('\t', ' ');
            RobotRunMode mode     = getMode(m.Groups[2].Value.Trim('\t', ' '));
            string       param    = m.Groups[3].Value.Trim('\t', ' ');
            string       runParam = m.Groups[4].Value.Trim('\t', ' ');
            if (dic.ContainsKey(name))
            {
                onError(new Exception("Robot配置存在重复的名字“" + name + "”, 第" + row + "行"));
                continue;
            }
            if (mode == RobotRunMode.NONE)
            {
                continue;
            }

            RobotDef rd = null;
            if (_dic_robots.ContainsKey(name))
            {
                rd = _dic_robots[name];
                rd.Update(mode, param, runParam);
                _dic_robots.Remove(name);
            }
            else
            {
                rd = new RobotDef(this, name, mode, param, runParam);
            }
            if (rd.Interval < 0)
            {
                onError(new Exception("Robot配置参数错误“" + def + "”, 第" + row + "行"));
                continue;
            }
            dic.Add(rd.Name, rd);
            row++;
        }
        List <RobotDef> rds = new List <RobotDef>();

        foreach (RobotDef rd in dic.Values)
        {
            rds.Add(rd);
        }
        foreach (RobotDef stopBot in _dic_robots.Values)
        {
            stopBot.Dispose();
        }

        return(rds);
    }