Добрый день!
Хочу поделиться решением получением тренда
Объявляем просто класс:
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));
}`