Esempio n. 1
0
 /// <summary>
 /// Построить полное имя файла таблицы минутных срезов на основе даты
 /// </summary>
 public static string BuildMinFileName(string arcDir, DateTime date)
 {
     return((new StringBuilder())
            .Append(arcDir).Append("Min").Append(Path.DirectorySeparatorChar)
            .Append(SrezAdapter.BuildMinTableName(date))
            .ToString());
 }
Esempio n. 2
0
        /// <summary>
        /// Получить тренд минутных данных заданного канала за сутки
        /// </summary>
        /// <remarks>Возвращаемый тренд после загрузки не изменяется экземпляром данного класса,
        /// таким образом, чтение его данных является потокобезопасным.
        /// Метод всегда возвращает объект, не равный null</remarks>
        public Trend GetMinTrend(DateTime date, int cnlNum)
        {
            Trend trend = new Trend(cnlNum);

            try
            {
                if (serverComm.ReceiveTrend(SrezAdapter.BuildMinTableName(date), date, trend))
                {
                    trend.LastFillTime = DateTime.UtcNow; // единообразно с часовыми данными и событиями
                }
                else
                {
                    throw new ScadaException(Localization.UseRussian ?
                                             "Не удалось принять тренд." :
                                             "Unable to receive trend.");
                }
            }
            catch (Exception ex)
            {
                log.WriteException(ex, Localization.UseRussian ?
                                   "Ошибка при получении тренда минутных данных за {0}" :
                                   "Error getting minute data trend for {0}", date.ToLocalizedDateString());
            }

            return(trend);
        }
Esempio n. 3
0
        /// <summary>
        /// Get the trend of the minute data of the specified channel for the day
        /// </summary>
        /// <remarks>Returned trend after loading is not changed by an instance of this class,
        /// thus, reading its data is thread safe.
        /// The method always returns a non-null object.</remarks>
        public Trend GetMinTrend(DateTime date, int cnlNum)
        {
            var trend = new Trend(cnlNum);

            try {
                if (serverComm.ReceiveTrend(SrezAdapter.BuildMinTableName(date), date, trend))
                {
                    trend.LastFillTime = DateTime.UtcNow; // consistent with hourly data and events
                }
                else
                {
                    throw new ScadaException("Unable to receive trend.");
                }
            } catch (Exception ex) {
                log.WriteException(ex, "Error getting minute data trend for {0}", date.ToLocalizedDateString());
            }

            return(trend);
        }
Esempio n. 4
0
        /// <summary>
        /// Requests input channel data from Server.
        /// </summary>
        private static Trend GetTrend(DateTime date, int cnlNum, bool chekHours)
        {
            string tableName = chekHours ?
                               SrezAdapter.BuildHourTableName(date) :
                               SrezAdapter.BuildMinTableName(date);

            Trend trend        = new Trend(cnlNum);
            bool  dataReceived = serverComm.ReceiveTrend(tableName, date, trend);

            //serverComm.Close();

            if (dataReceived)
            {
                trend.LastFillTime = DateTime.UtcNow;
            }
            else
            {
                Log.WriteError("Unable to receive trend.");
            }

            return(trend);
        }