Пример #1
0
        public override SurveyResultData ReadHourlyArchive(IEnumerable <DateTime> dates)
        {
            var data = new List <Data>();

            try
            {
                //каналы для часового архива
                Dictionary <int, ArchiveType> channels = new Dictionary <int, ArchiveType>
                {
                    { 1, ArchiveType.HourlySystem1 },
                    { 2, ArchiveType.HourlySystem2 },
                    { 3, ArchiveType.HourlySystem3 },
                };

                foreach (var channel in channels)
                {
                    foreach (var date in dates)
                    {
                        OnSendMessage(string.Format("чтение часовых данных за {0:dd.MM.yyyy HH:mm} по теплосистеме {1}", date, channel.Key));

                        var bytes        = SendMessageToDevice(new Request65ByDate(NetworkAddress, date, channel.Value));
                        var dataResponse = new Response65(bytes, channel.Key);
                        //Response65.Channel = channel.Key;
                        //var dataResponse = SendMessageToDevice<Response65>(new Request65ByDate(NetworkAddress, date, channel.Value));
                        foreach (var d in dataResponse.Data)
                        {
                            //убираем лишние 59:59
                            d.Date = d.Date.AddMinutes(-59).AddSeconds(-59);
                            data.Add(d);
                        }

                        OnSendMessage(string.Format("{0:dd.MM.yyyy HH:mm} {1}", date, dataResponse.Text));
                    }
                }
            }
            catch (Exception ex)
            {
                OnSendMessage(string.Format("ошибка: {0}", ex.Message));
                return(new SurveyResultData {
                    Records = data, State = SurveyResultState.PartialyRead
                });
            }
            return(new SurveyResultData {
                Records = data, State = SurveyResultState.Success
            });
        }
Пример #2
0
        public override SurveyResultData ReadDailyArchive(IEnumerable <DateTime> dates)
        {
            var data = new List <Data>();

            try
            {
                //каналы для суточного архива
                Dictionary <int, ArchiveType> channels = new Dictionary <int, ArchiveType>
                {
                    { 1, ArchiveType.DailySystem1 },
                    { 2, ArchiveType.DailySystem2 },
                    { 3, ArchiveType.DailySystem3 },
                };

                byte[] bytes = null;


                foreach (var channel in channels)
                {
                    foreach (var date in dates)
                    {
                        try
                        {
                            OnSendMessage(string.Format("чтение суточных данных за {0:dd.MM.yyyy} по теплосистеме {1}", date, channel.Key));
                            bytes = SendMessageToDevice(new Request65ByDate(NetworkAddress, date, channel.Value));
                            //OnSendMessage(string.Format("пришло {0}", string.Join(",", bytes.Select(b => b.ToString("X2")))));
                            var dataResponse = new Response65(bytes, channel.Key);
                            foreach (var d in dataResponse.Data)
                            {
                                //убираем лишние 23:59:59
                                d.Date = d.Date.AddHours(-23).AddMinutes(-59).AddSeconds(-59);
                                data.Add(d);
                            }
                        }
                        catch (Exception ex1)
                        {
                            OnSendMessage(string.Format("ошибка при разборе ответа, запись за {0:dd.MM.yy} по ТС {1} будет пропущена: {2}", date, channel.Key, ex1.Message));
                        }
                    }
                }

                foreach (var date in dates)
                {
                    try
                    {
                        OnSendMessage(string.Format("чтение суточных данных нарастающим итогом за {0:dd.MM.yyyy} ", date));
                        bytes = SendMessageToDevice(new Request65ByDate(NetworkAddress, date, ArchiveType.DailyGrowing));
                        OnSendMessage(string.Format("пришло {0}", string.Join(",", bytes.Select(b => b.ToString("X2")))));
                        var responseTotals = new Response65Totals(bytes);
                        foreach (var d in responseTotals.Data)
                        {
                            //убираем лишние 23:59:59
                            d.Date = d.Date.AddHours(-23).AddMinutes(-59).AddSeconds(-59);
                            data.Add(d);
                        }
                    }
                    catch (Exception ex2)
                    {
                        OnSendMessage(string.Format("ошибка при разборе ответа, запись за {0:dd.MM.yy} нарастающим итогом", date));
                    }
                }
            }
            catch (Exception ex)
            {
                OnSendMessage(string.Format("ошибка: {0}", ex.Message));
                return(new SurveyResultData {
                    Records = data, State = SurveyResultState.PartialyRead
                });
            }
            return(new SurveyResultData {
                Records = data, State = SurveyResultState.Success
            });
        }