//Прочитать значения за период, возвращает количество прочитанных значений public int ReadValues(DateTime beg, DateTime en) { int n = 0; try { CsData m = new CsData(); var dbeg = beg.TimeToKvint(); var den = en.TimeToKvint(); if (CsApi.FindFirst(_handler, ref m, dbeg, -1)) { n += AddValue(m); } if (CsApi.FindFirst(_handler, ref m, dbeg)) { n += AddValue(m); while (true) { if (!CsApi.FindNext(_handler, ref m) || m.Time >= den) { break; } n += AddValue(m); } } } catch (Exception ex) { Provider.Logger.AddError("Ошибка при чтении значений", ex); } return(n); }
private int AddValue(CsData m) { DateTime t = m.Time.KvintToTime(); double d = m.Value; int e = m.ErrorCode; if (e == 0) { AddMoment(t, d); } else { AddMoment(new Moment(DataType, d, t, 2, new ErrorCalc("Ошибка " + e, Code))); } return(1); }
public static extern bool ReadData(int handle, //handle параметра ref CsData data); //Возвращаемое значение
public static extern bool FindNext(int handle, //handle параметра ref CsData data, //возвращаемые данные int direction = 1); //1
public static extern bool FindFirst(int handle, //handle параметра ref CsData data, //возвращаемые данные double time, //указанное время int direction = 1); //1 (направление поиска)