Atmo.UI.DevEx.MainForm.timerRapidFire_TickWU C# (CSharp) Method

timerRapidFire_TickWU() private method

private timerRapidFire_TickWU ( object sender, EventArgs e ) : void
sender object
e EventArgs
return void
        private void timerRapidFire_TickWU(object sender, EventArgs e)
        {
            int sensor_num;
            sensor_num = AppContext.PersistentState.StationSensorIndexWeather;
            string str_not_corr_sensor = "Not correct sensor selected!";

            try
            {

                ISensor[] sensors = _deviceConnection.ToArray();

                if (sensors[sensor_num].IsValid)
                {
                    if (labelControlPwsStatus.Text == str_not_corr_sensor)
                    {
                        //labelControlPwsStatus.Text = "Correct sensor selected";
                        labelControlPwsStatus.SetPropertyThreadSafe(() => labelControlPwsStatus.Text, "Correct sensor selected");
                    }
                }
                else
                {
                    // CancelWindFinder("Not correct sensor selected!");
                    labelControlPwsStatus.SetPropertyThreadSafe(() => labelControlPwsStatus.Text, str_not_corr_sensor);
                    return;
                }

                var reading = sensors[sensor_num].GetCurrentReading();

                var id = AppContext.PersistentState.StationNameWeather;
                var stationPassword = AppContext.PersistentState.StationPasswordWeather;

                Dictionary<string, string> queryParams = new Dictionary<string, string>();
                queryParams.Add("action", "updateraw");
                queryParams.Add("ID", id);
                queryParams.Add("PASSWORD", stationPassword);

                //timeActual = DateTime.UtcNow;

                timeActual = timeTemp.AddMilliseconds(5000);//pov2500
                timeTemp = timeActual;
                timerWU.Interval = 5000;//pov2500

                // is time to time correction ?
                if (++count_to_correction > 100) //2.5*200[s]
                {
                    count_to_correction = 0;

                    dc = GetTimeCorrection(DateTime.UtcNow);

                    // Error by time snchronization ?
                    if (dc == -123456)
                    {
                       // timeActual = DateTime.UtcNow.AddMilliseconds(0);
                    }
                    else
                    {
                        timeActual = DateTime.UtcNow.AddMilliseconds(dc);
                    }

                    timeTemp = timeActual;

                    File.AppendAllText("weatherlog_out.txt", timeTemp +
                                               " - TIME CORRECTION: " + dc.ToString() +
                                                 Environment.NewLine);

                }

                string datetimestr = "";
                datetimestr += timeActual.ToString("yyyy-MM-dd+");
                datetimestr += timeActual.ToString("HH:");// + "%3A";
                datetimestr += timeActual.ToString("mm:");// + "%3A";
                datetimestr += timeActual.ToString("ss");

                queryParams.Add("dateutc", datetimestr); // format casu: priklad 18:50:20

                if (reading.IsWindDirectionValid && reading.WindDirection >= 0 && reading.WindDirection <= 360.0)
                {
                    queryParams.Add("winddir", ((int)(reading.WindDirection)).ToString());
                }

                if (reading.IsWindSpeedValid)
                {
                    var speedConverter = ReadingValuesConverterCache<Reading>.SpeedCache
                        .Get(sensors[sensor_num].SpeedUnit, SpeedUnit.MilesPerHour);
                    var speed = speedConverter.Convert(reading.WindSpeed);
                    queryParams.Add("windspeedmph", speed.ToString());
                }

              //  queryParams.Add("windgustmph", "0,0");
                if (reading.IsWindSpeedValid)
                {
                    queryParams.Add("windgustmph", _advancedSensorValues[sensor_num].m_windgust_WU.ToString() );
                }

                if (reading.IsTemperatureValid)
                {
                    var tempConverter = ReadingValuesConverterCache<Reading>.TemperatureCache
                        .Get(sensors[sensor_num].TemperatureUnit, TemperatureUnit.Fahrenheit);
                    var temperature = tempConverter.Convert(reading.Temperature);
                    queryParams.Add("tempf", temperature.ToString());
                }

              //  queryParams.Add("rainin", "");

                if (reading.IsPressureValid)
                {
                    var pressConverter = ReadingValuesConverterCache<Reading>.PressCache
                        .Get(sensors[sensor_num].PressureUnit, PressureUnit.InchOfMercury);
                    var pressure = pressConverter.Convert(reading.Pressure);
                    queryParams.Add("baromin", pressure.ToString());
                }
                else
                {
              //              queryParams.Add("baromin", "NaN");
                }

                if (reading.IsHumidityValid && reading.IsTemperatureValid)
                {
                    var tempConverterCelcius = ReadingValuesConverterCache<Reading>.TemperatureCache
                        .Get(sensors[sensor_num].TemperatureUnit, TemperatureUnit.Celsius);
                    var tempConverterCToF = ReadingValuesConverterCache<Reading>.TemperatureCache
                        .Get(TemperatureUnit.Celsius, TemperatureUnit.Fahrenheit);

                    var tempC = tempConverterCelcius.Convert(reading.Temperature);
                    var dewPointC = DewPointCalculator.DewPoint(tempC, reading.Humidity);
                    var dewPointF = tempConverterCToF.Convert(dewPointC);
                    queryParams.Add("dewptf", dewPointF.ToString());
                }
                else
                {
               //             queryParams.Add("dewptf", "NaN");
                }

                if (reading.IsHumidityValid)
                {
                    queryParams.Add("humidity", (reading.Humidity * 100.0).ToString());
                }
                else
                {
                    //queryParams.Add("humidity", "NaN");
               //    queryParams.Add("humidity", "100");
                }

            //               queryParams.Add("weather", "");

            //               queryParams.Add("clouds", "");

                queryParams.Add(
                    "softwaretype",
                    "Atmo"
                );

                queryParams.Add("realtime", "1");

                // pokus z pov 2.5
                queryParams.Add("rtfreq", "5"); //pov2.5

            /* rp
             * old
             *             if (builder_wu == null)
                {
                    builder_wu = new UriBuilder("http://rtupdate.wunderground.com/weatherstation/updateweatherstation.php");
                }
            */

                UriBuilder builder_wu;
                builder_wu = new UriBuilder("http://rtupdate.wunderground.com/weatherstation/updateweatherstation.php");

                builder_wu.Query = String.Join(
                    "&",
                    queryParams
                        .Select(kvp => String.Concat(Uri.EscapeDataString(kvp.Key), '=', Uri.EscapeDataString(kvp.Value)))
                        .ToArray()
                );

                try
                {

                    var reqSent = HttpWebRequest.Create(builder_wu.Uri);
                    reqSent.BeginGetResponse(HandleRapidFireResult, reqSent);

                    //rp
                    //debug
                    Log.Warn("WA - sendet packet: " + builder_wu.Uri);

                    // rp
                    // for statistic
                    _internetStreamingStatistics.m_StreamingServers[0].IncrementSendetPacekets();

                }
                catch (Exception ex)
                {
                    Log.Warn("PWS rapid fire failure.1.", ex);
                }
            }
            catch (Exception ex)
            {
                Log.Warn("PWS rapid fire failure.2.", ex);
            }
        }
MainForm