Получение тренда канала в C#

Стартовая страница Форумы Разработка и интеграция Получение тренда канала в C#

Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Автор
    Записи
  • #8602
    Kazam
    Участник

    Добрый день!
    Хочу поделиться решением получением тренда
    Объявляем просто класс:

    public class GetScada
    {
        public GetScada()
        {
            //
            // TODO: добавьте логику конструктора
            //
        }
        public List<Tuple<string, string>> GetChannel(int cnlNum, string date)
        {
            DateTime dateTrend = DateTime.Parse(date);
            List<Tuple<string, string>> nv = new List<Tuple<string, string>>();
            Log.WriteLineDelegate writeToLog;
            writeToLog = text => { }; // заглушка
            CommSettings cm = new CommSettings("localhost", 10000, "ScadaApi", "ScadaApi", 10000);
            ServerComm sc = new ServerComm(cm, writeToLog);
            Trend tr = new Trend(cnlNum);
            //если указать h - часовые срезы, m - минутные срезы
            sc.ReceiveTrend("h ", dateTrend, tr);
            sc.Close();
            foreach (var trend in tr.Points)
            {
                var one = new Tuple<string, string>
                (Math.Round(trend.Val,0).ToString(), trend.DateTime.ToString());
                    nv.Add(one);
            }
    
            return nv;
        }
    }

    А вот как можно получить и сериализовать в Json для передачи, в JS

    `/// <summary>
    /// Метод для получения тренда
    /// </summary>
    [WebMethod(Description = «Тренд»)]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public void GetTrend(string cnlnum, string date)
    {
    GetScada GS = new GetScada();
    var points = GS.GetChannel(Convert.ToInt32(cnlnum), date);

    this.Context.Response.ContentType = «application/json; charset=utf-8»;
    this.Context.Response.Write(JsonConvert.SerializeObject(points));
    }`

Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Для ответа в этой теме необходимо авторизоваться.