Example #1
0
        private void InterceptInfo(object source, ElapsedEventArgs e)
        {
            var x = new DistMeasureRes {
                Dist = 0
            };

            var timestamp = (int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds;

            timestamp++;
            while (Math.Abs(x.Dist) < 0.000001)
            {
                using var wc = new WebClient();
                try
                {
                    var json = wc.DownloadString(
                        "http://169.254.168.150/datagen.php?type=Meas&callback=callback&_=" +
                        timestamp);
                    x = GetTemp(json);
                }
                catch (Exception ex)
                {
                    SetLogMessage?.Invoke(ex.Message);
                }

                ObtainedDataEvent?.Invoke(x);
            }
        }
Example #2
0
        private static DistMeasureRes GetTemp(string request)
        {
            const string pattern = @"\[([0-9,-]+)\]"; //@"callback\(\[((\[((-?\d+,?){8})\],?)+)\]\);";
            var          regex   = new Regex(pattern);
            var          res1    = new List <double>();
            var          res2    = new List <double>();

            foreach (Match match in regex.Matches(request))
            {
                var tmp = match.Groups[1].Value.Split(',');
                if (tmp.Length <= 1)
                {
                    continue;
                }
                if (double.TryParse(tmp[1], out var outD))
                {
                    res1.Add(outD / 1000000);
                }
                if (double.TryParse(tmp[2], out var outE))
                {
                    res2.Add(outE / 1000000);
                }
            }

            var res = new DistMeasureRes {
                Dist = 0, IsSingle = true
            };

            if (res1.Count == 0 || res2.Count == 0)
            {
                return(res);
            }

            if (res2.Average() > 1000)
            {
                return new DistMeasureRes {
                           Dist = res1.Average(), IsSingle = true
                }
            }
            ;

            if (res2.Average() > res1.Average())
            {
                res.Dist = res2.Average() - res1.Average();

                res.IsSingle = false;
            }
            else
            {
                res.Dist = res1.Average();
            }

            return(res);
        }
Example #3
0
 public void SetMeasuredLevel(DistMeasureRes lvl)
 {
     if (lvl.Dist != 0)
     {
         _measuredLvl = lvl;
     }
     if (_isTwoPump)
     {
         OperateTwoPump();
     }
     else
     {
         OperatePump();
     }
 }