diff --git a/Wetterstation/Form1.cs b/Wetterstation/Form1.cs index 9fa26604c45d8fa4fd52c6d3a7ec4981d5e39998..622d690b66bd2296910c9af34fe9487e1816c8cc 100644 --- a/Wetterstation/Form1.cs +++ b/Wetterstation/Form1.cs @@ -22,6 +22,7 @@ namespace Wetterstation Sensor node1In = new Sensor(); Sensor node1Out = new Sensor(); Sensor owm = new Sensor(); + int tendenzCount = 10; public Hintergrund() { @@ -245,7 +246,7 @@ namespace Wetterstation lbTempOutMin.Invoke(new Action(() => { lbTempOutMin.Text = weatherData.tempMin + " °C"; })); lbTempOutMax.Invoke(new Action(() => { lbTempOutMax.Text = weatherData.tempMax + " °C"; })); owm.Temperatures = weatherData.temp; - if (owm._temperatures.Count < 10) pbTendenzTempOut.Invoke(new Action(() => { pbTendenzTempOut.Visible = false; })); + if (owm._temperatures.Count < tendenzCount && owm.tempTendenz() != -1) pbTendenzTempOut.Invoke(new Action(() => { pbTendenzTempOut.Visible = false; })); else pbTendenzTempOut.Invoke(new Action(() => { pbTendenzTempOut.Visible = true; })); pbTendenzTempOut.Invoke(new Action(() => { pbTendenzTempOut.Image = RotateImage((Bitmap)global::Wetterstation.Properties.Resources.ResourceManager.GetObject("Tendenz"), owm.tempTendenz()); })); } @@ -253,7 +254,7 @@ namespace Wetterstation { lbLuftfeuchtAussen.Invoke(new Action(() => { lbLuftfeuchtAussen.Text = weatherData.humidity + " %"; })); owm.Humiditys = (double)weatherData.humidity; - if (owm._humiditys.Count < 10) lbTendenzHumidityOut.Invoke(new Action(() => { lbTendenzHumidityOut.Visible = false; })); + if (owm._humiditys.Count < 10 && owm.humidityTendenz() != -1) lbTendenzHumidityOut.Invoke(new Action(() => { lbTendenzHumidityOut.Visible = false; })); else lbTendenzHumidityOut.Invoke(new Action(() => { lbTendenzHumidityOut.Visible = true; })); lbTendenzHumidityOut.Invoke(new Action(() => { lbTendenzHumidityOut.Image = RotateImage((Bitmap)global::Wetterstation.Properties.Resources.ResourceManager.GetObject("Tendenz"), owm.humidityTendenz()); })); } @@ -270,7 +271,7 @@ namespace Wetterstation { lbLuftdruck.Invoke(new Action(() => { lbLuftdruck.Text = weatherData.pressure + " mbar"; })); owm.Pressures = (double)weatherData.pressure; - if (owm._pressures.Count < 10) pbTendenzPressure.Invoke(new Action(() => { pbTendenzPressure.Visible = false; })); + if (owm._pressures.Count < tendenzCount && owm.pressureTendenz() != -1) pbTendenzPressure.Invoke(new Action(() => { pbTendenzPressure.Visible = false; })); else pbTendenzPressure.Invoke(new Action(() => { pbTendenzPressure.Visible = true; })); pbTendenzPressure.Invoke(new Action(() => { pbTendenzPressure.Image = RotateImage((Bitmap)global::Wetterstation.Properties.Resources.ResourceManager.GetObject("Tendenz"), owm.pressureTendenz()); })); } @@ -366,7 +367,7 @@ namespace Wetterstation lbTempInMin.Invoke(new Action(() => { lbTempInMin.Text = node1In.tempMin + " °C"; })); lbTempInMax.Invoke(new Action(() => { lbTempInMax.Text = node1In.tempMax + " °C"; })); node1In.Temperatures = (double)weatherData[0]["temperature"]; - if (node1In._temperatures.Count < 10) pbTendenzTempIn.Invoke(new Action(() => { pbTendenzTempIn.Visible = false; })); + if (node1In._temperatures.Count < tendenzCount && node1In.tempTendenz() != -1) pbTendenzTempIn.Invoke(new Action(() => { pbTendenzTempIn.Visible = false; })); else pbTendenzTempIn.Invoke(new Action(() => { pbTendenzTempIn.Visible = true; })); pbTendenzTempIn.Invoke(new Action(() => { pbTendenzTempIn.Image = RotateImage((Bitmap)global::Wetterstation.Properties.Resources.ResourceManager.GetObject("Tendenz"), node1In.tempTendenz()); })); } @@ -375,7 +376,7 @@ namespace Wetterstation node1In.humidity = true; lbLuftFeuchtInnen.Invoke(new Action(() => { lbLuftFeuchtInnen.Text = weatherData[0]["humidity"] + " %"; })); node1Out.Humiditys = (double)weatherData[0]["humidity"]; - if (node1In._humiditys.Count < 10) lbTendenzHumidityIn.Invoke(new Action(() => { lbTendenzHumidityIn.Visible = false; })); + if (node1In._humiditys.Count < tendenzCount && node1In.humidityTendenz() != -1) lbTendenzHumidityIn.Invoke(new Action(() => { lbTendenzHumidityIn.Visible = false; })); else lbTendenzHumidityIn.Invoke(new Action(() => { lbTendenzHumidityIn.Visible = true; })); lbTendenzHumidityIn.Invoke(new Action(() => { lbTendenzHumidityIn.Image = RotateImage((Bitmap)global::Wetterstation.Properties.Resources.ResourceManager.GetObject("Tendenz"), node1In.humidityTendenz()); })); } @@ -384,7 +385,7 @@ namespace Wetterstation node1In.pressure = true; lbLuftdruck.Invoke(new Action(() => { lbLuftdruck.Text = weatherData[0]["pressure"] + " hPa"; })); node1In.Pressures = (double)weatherData[0]["pressure"]; - if (node1In._pressures.Count < 10) pbTendenzPressure.Invoke(new Action(() => { pbTendenzPressure.Visible = false; })); + if (node1In._pressures.Count < tendenzCount && node1In.pressureTendenz() != -1) pbTendenzPressure.Invoke(new Action(() => { pbTendenzPressure.Visible = false; })); else pbTendenzPressure.Invoke(new Action(() => { pbTendenzPressure.Visible = true; })); pbTendenzPressure.Invoke(new Action(() => { pbTendenzPressure.Image = RotateImage((Bitmap)global::Wetterstation.Properties.Resources.ResourceManager.GetObject("Tendenz"), node1In.pressureTendenz()); })); } @@ -399,7 +400,7 @@ namespace Wetterstation lbTempOutMin.Invoke(new Action(() => { lbTempOutMin.Text = node1Out.tempMin + " °C"; })); lbTempOutMax.Invoke(new Action(() => { lbTempOutMax.Text = node1Out.tempMax + " °C"; })); node1Out.Temperatures = (double)weatherData[0]["temperature"]; - if (node1Out._temperatures.Count < 10) pbTendenzTempOut.Invoke(new Action(() => { pbTendenzTempOut.Visible = false; })); + if (node1Out._temperatures.Count < tendenzCount && node1Out.tempTendenz() != -1) pbTendenzTempOut.Invoke(new Action(() => { pbTendenzTempOut.Visible = false; })); else pbTendenzTempOut.Invoke(new Action(() => { pbTendenzTempOut.Visible = true; })); pbTendenzTempOut.Invoke(new Action(() => { pbTendenzTempOut.Image = RotateImage((Bitmap)global::Wetterstation.Properties.Resources.ResourceManager.GetObject("Tendenz"), node1Out.tempTendenz()); })); } @@ -408,7 +409,7 @@ namespace Wetterstation node1Out.humidity = true; lbLuftfeuchtAussen.Invoke(new Action(() => { lbLuftfeuchtAussen.Text = weatherData[0]["humidity"] + " %"; })); node1Out.Humiditys = (double)weatherData[0]["humidity"]; - if (node1Out._humiditys.Count < 10) lbTendenzHumidityOut.Invoke(new Action(() => { lbTendenzHumidityOut.Visible = false; })); + if (node1Out._humiditys.Count < tendenzCount && node1Out.humidityTendenz() != -1) lbTendenzHumidityOut.Invoke(new Action(() => { lbTendenzHumidityOut.Visible = false; })); else lbTendenzHumidityOut.Invoke(new Action(() => { lbTendenzHumidityOut.Visible = true; })); lbTendenzHumidityOut.Invoke(new Action(() => { lbTendenzHumidityOut.Image = RotateImage((Bitmap)global::Wetterstation.Properties.Resources.ResourceManager.GetObject("Tendenz"), node1Out.humidityTendenz()); })); } diff --git a/Wetterstation/Sensor.cs b/Wetterstation/Sensor.cs index 5211358520a2dfb632be59e6663a7a242605edee..8fda3399f12938745387f1e2b19b0ac3eaeb67ab 100644 --- a/Wetterstation/Sensor.cs +++ b/Wetterstation/Sensor.cs @@ -24,7 +24,7 @@ namespace Wetterstation { set { - if (_temperatures.Count == 10) + if (_temperatures.Count == 3) { _temperatures.RemoveAt(0); } @@ -35,7 +35,7 @@ namespace Wetterstation { set { - if (_pressures.Count == 10) + if (_pressures.Count == 3) { _pressures.RemoveAt(0); } @@ -46,7 +46,7 @@ namespace Wetterstation { set { - if (_humiditys.Count == 10) + if (_humiditys.Count == 3) { _humiditys.RemoveAt(0); } @@ -57,15 +57,22 @@ namespace Wetterstation { int up = 0; int down = 0; + int same = 0; double oldTemp = 0; foreach (double temp in _temperatures) { + Console.WriteLine("--> tempTendenz " + oldTemp + " / " + temp); if (temp > oldTemp) { up++; oldTemp = temp; } + else if (temp == oldTemp) + { + same++; + oldTemp = temp; + } else { down++; @@ -73,22 +80,30 @@ namespace Wetterstation } } - if (up > down) return 180; - else return 0; + if (up > down && up > (same / 2)) return 180; + else if (down > up && down > (same / 2)) return 0; + else return -1; } public float pressureTendenz() { int up = 0; int down = 0; + int same = 0; double oldPressure = 0; foreach (double pressure in _pressures) { + Console.WriteLine("--> pressureTendenz " + oldPressure + " / " + pressure); if (pressure > oldPressure) { up++; oldPressure = pressure; } + else if (pressure == oldPressure) + { + same++; + oldPressure = pressure; + } else { down++; @@ -96,22 +111,30 @@ namespace Wetterstation } } - if (up > down) return 180; - else return 0; + if (up > down && up > (same / 2)) return 180; + else if (down > up && down > (same / 2)) return 0; + else return -1; } public float humidityTendenz() { int up = 0; int down = 0; + int same = 0; double oldHumidity = 0; foreach (double humidity in _humiditys) { + Console.WriteLine("--> humidityTendenz " + oldHumidity + " / " + humidity); if (humidity > oldHumidity) { up++; oldHumidity = humidity; } + else if( humidity == oldHumidity) + { + same++; + oldHumidity = humidity; + } else { down++; @@ -119,8 +142,9 @@ namespace Wetterstation } } - if (up > down) return 180; - else return 0; + if (up > down && up > (same / 2)) return 180; + else if (down > up && down > (same / 2)) return 0; + else return -1; } } }