Пример #1
0
        private async void WatcherOnPortsChanged(object sender, OnPortsChangedEventArgs e)
        {
            if (e.NewItem.Count > 0 && e.NewItem != null)
            {
                if (e.NewItem.Count == 1)
                {
                    LogList.Insert(0, e.NewItem.Count + " New Device Detected...");
                }
                else
                {
                    LogList.Insert(0, e.NewItem.Count + " New Devices Detected...");
                }
                await Task.Run(() => ReadDeviceList(e.NewItem));

                //await Task.WhenAll(_watcher.ComPorts.Select(async item => await AddNewGsmComm(item)).ToList());
            }

            if (e.RemovedItem.Count > 0 && e.RemovedItem != null)
            {
                foreach (var item in e.RemovedItem)
                {
                    try
                    {
                        foreach (var gsm in GsmList.Where(gsm => gsm.Model.PortName == item))
                        {
                            GsmList.Remove(gsm);
                            LogList.Insert(0, "Removing Device " + gsm.Model.PortName);
                        }
                    }
                    catch (Exception)
                    {
                    }
                }
            }
        }
Пример #2
0
 public void Log(Log log)
 {
     Dispatcher.FromThread(OrderManager.UIThread).InvokeAsync(() =>
     {
         if (LogList.Count > 0 && log.Text == LogList[0].Text && log.Source == LogList[0].Source)
         {
             LogList[0].Time = log.Time;
         }
         else
         {
             log.Text = log.Text.TrimEnd('\n');
             LogList.Insert(0, log);
             if (File.Exists(logfile))
             {
                 try
                 {
                     lock (logFileLock)
                     {
                         using (var sw = new StreamWriter(logfile, true))
                         {
                             sw.WriteLine(ListViewHelper.ObjectToLine(log));
                         }
                     }
                 }
                 catch (Exception ex)
                 {
                     GlobalExceptionHandler.HandleException("Log", ex);
                 }
             }
         }
     });
 }
Пример #3
0
 /// <summary>
 /// Updates the response.
 /// </summary>
 /// <param name="e">The <see cref="CommandRecievedEventArgs"/> instance containing the event data.</param>
 private void UpdateResponse(CommandRecievedEventArgs e)
 {
     try
     {
         if (e != null)
         {
             if (e.CommandID == (int)CommandEnum.GetLogList)
             {
                 ObservableCollection <LogEntry> logsList = JsonConvert.DeserializeObject <ObservableCollection <LogEntry> >(e.Args[0]);
                 UpdateLogList(logsList);
                 isFirstTime = false;
             }
             if (e.CommandID == (int)CommandEnum.LogCommand)
             {
                 if (!isFirstTime)
                 {
                     LogEntry newLog = JsonConvert.DeserializeObject <LogEntry>(e.Args[0]);
                     Dispatcher.CurrentDispatcher.Invoke((System.Action) delegate
                                                         //         App.Current.Dispatcher.Invoke((System.Action)delegate
                     {
                         LogList.Insert(0, newLog);
                     });
                 }
             }
         }
     }
     catch (Exception exc)
     {
         Console.WriteLine(exc.ToString());
     }
 }
Пример #4
0
 public void Log(string message)
 {
     System.Windows.Threading.Dispatcher.FromThread(OrderManager.UIThread).Invoke(() =>
     {
         LogList.Insert(0, new Log()
         {
             Time = DateTime.Now,
             Text = message
         });
     });
 }
Пример #5
0
 /// <summary>
 /// adds new log entry to the event log entries list
 /// </summary>
 /// <param name="responseObj">expected responseObj.Args[0] = EntryType,  responseObj.Args[1] = Message </param>
 private void AddLogEntry(CommandRecievedEventArgs responseObj)
 {
     try
     {
         LogMessage newLogEntry = new LogMessage {
             Type = responseObj.Args[0], Message = responseObj.Args[1]
         };
         LogList.Insert(0, new LogCollection {
             LogType = newLogEntry.Type, Message = newLogEntry.Message
         });
         stringList.Add(new Tuple <string, string>(responseObj.Args[0], responseObj.Args[1]));
     }
     catch (Exception ex)
     {
     }
 }
Пример #6
0
 /// <summary>
 /// Updates the logs messages collection with the input CommandRecievedEventArgs parameter.
 /// </summary>
 /// <param name="obj"></param>
 private void UpdateLogsCollection(CommandRecievedEventArgs obj)
 {
     try
     {
         LogMessage newLogMessage = new LogMessage {
             Type = obj.Args[0], Message = obj.Args[1]
         };
         LogList.Insert(0, new Log {
             LogType = newLogMessage.Type, Message = newLogMessage.Message
         });
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex);
     }
 }
Пример #7
0
        public void OnLogMessageRecieved(object sender, MessageRecievedEventArgs e)
        {
            if (e.EventLogEntryType.ToString().Equals("Information"))
            {
                NumOfInformation++;
            }
            else if (e.EventLogEntryType.ToString().Equals("Error"))
            {
                NumOfErrors++;
            }
            else
            {
                e.EventLogEntryType = EventLogEntryType.Warning;
                NumOfWarnings++;
            }

            LogList.Insert(0, new Tuple <string, string>(e.EventLogEntryType.ToString(), e.Message.Replace(".", "")));
        }
Пример #8
0
        private async Task ProcessMessage(MessageViewModel message)
        {
            await Task.Delay(1000);

            var messageType = MessageDecoder(message);

            if (messageType == MessageType.None)
            {
                LogList.Insert(0, "Garbage Message: " + message.MessageData.UserDataText);
            }

            if (messageType == MessageType.WeatherData)
            {
                //(013226007252592,2017/03/06,00:14:59,25.0,89.0,993.4,0.05,0.00,270,0.88,  0.00,  0.00,-52,11.57)
                //(IMEI,DATE,TIME,TEMP,HUM,PRES,RAIN24H,RAIN15M,WDIR,WSPEED15,IRRMIN,IRRHR,SIGNAL,BATTERY)
                var fields = message.MessageData.UserDataText.Split(',');
                for (var i = 0; i < fields.Length; i++)
                {
                    fields[i] = fields[i].Trim('(', ')');
                }

                var list = fields.ToList();
                try
                {
                    var station =
                        await Task.Run(() => _repository.Stations.GetAsync(c => c.Imei == list.FirstOrDefault()));

                    if (station == null)
                    {
                        LogList.Insert(0, "Imei was not recognized for message:" + message.MessageData.UserDataText);
                        return;
                    }
                    var dt = DateTime.ParseExact(list.ElementAt(1) + " " + list.ElementAt(2), "yyyy/MM/dd HH:mm:ss",
                                                 CultureInfo.InvariantCulture);

                    var records = await
                                  Task.Run(
                        () =>
                        _repository.Measurements.GetRangeAsync(
                            c => c.StationId == station.StationId && c.Date == dt));

                    if (records.Count == 0)
                    {
                        LogList.Insert(0,
                                       "Data is already existing in the system for message:" + message.MessageData.UserDataText);
                        return;
                    }
                    await Task.Run(() => _repository.Measurements.AddAsync(new Measurement
                    {
                        StationId        = station.StationId,
                        Date             = dt,
                        Temperature      = DecimalChecker(list.ElementAt(3)),
                        Humidity         = DecimalChecker(list.ElementAt(4)),
                        Pressure         = DecimalChecker(list.ElementAt(5)),
                        Rainfall24H      = DecimalChecker(list.ElementAt(6)),
                        Rainfall15M      = DecimalChecker(list.ElementAt(7)),
                        WindDirection    = DecimalChecker(list.ElementAt(8)),
                        WindSpeed        = DecimalChecker(list.ElementAt(9)),
                        SolarIrradianceM = DecimalChecker(list.ElementAt(10)),
                        SolarIrradianceH = DecimalChecker(list.ElementAt(11)),
                        SignalLevel      = DecimalChecker(list.ElementAt(12)),
                        Battery          = DecimalChecker(list.ElementAt(13))
                    }));

                    LogList.Insert(0, "Succefully Added Data: " + message.MessageData.UserDataText);
                }
                catch (Exception)
                {
                    LogList.Insert(0,
                                   "Unsuccessful data addition. Format is not acceptable for message: " +
                                   message.MessageData.UserDataText);
                }
            }
            if (messageType == MessageType.WeatherRequest)
            {
                var keyword = new List <string>(message.MessageData.UserDataText.Split(' ')).LastOrDefault();

                try
                {
                    var station = await Task.Run(() => _repository.Stations.GetAsync(c => c.Keyword == keyword));

                    if (station == null)
                    {
                        LogList.Insert(0, "Keyword does not exist: " + message.MessageData.UserDataText);
                        return;
                    }

                    var measurements =
                        await
                        Task.Run(() => _repository.Measurements.GetRangeAsync(c => c.StationId == station.StationId));

                    if (measurements.Count == 0)
                    {
                        LogList.Insert(0,
                                       "There still no data available in this station: " + message.MessageData.UserDataText);
                        return;
                    }
                    var measurement = measurements.OrderByDescending(c => c.Date).FirstOrDefault();
                    var gsm         = GsmList.FirstOrDefault(c => c.Model.PortName == message.Port);
                    var sms         = "As of " + measurement.Date.ToString("yy-mm-dd") + " Temperature: " +
                                      measurement.Temperature + "°C, Humidity: " +
                                      measurement.Humidity + "%, Wind: " + measurement.WindDirection + "° " +
                                      measurement.WindSpeed + "m/s, Rainfall: " + measurement.Rainfall15M + "mm, Pressure" +
                                      measurement.Pressure + " hPa, Solar Irradiance: " + measurement.SolarIrradianceM;
                    if (gsm != null)
                    {
                        await
                        Task.Run(
                            () =>
                            gsm.SendMessageASync(sms, message.PhoneNumber, false, false,
                                                 1));

                        LogList.Insert(0, "Request succesfull: " + message.MessageData);
                    }
                }
                catch (Exception)
                {
                }
            }
            message.IsProcessed = true;
            await DeleteMessage(message);
        }