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); } }
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); }
public void SetMeasuredLevel(DistMeasureRes lvl) { if (lvl.Dist != 0) { _measuredLvl = lvl; } if (_isTwoPump) { OperateTwoPump(); } else { OperatePump(); } }