127 lines
5.3 KiB
C#
127 lines
5.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Security;
|
|
using Lers.Core;
|
|
using Lers.Data;
|
|
|
|
namespace LersSample
|
|
{
|
|
class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
// Создаем экземпляр объекта LersServer, через который осуществляется работа с сервером ЛЭРС УЧЕТ.
|
|
|
|
Lers.LersServer server = new Lers.LersServer();
|
|
|
|
// Создаем данные для авторизации в системе (логин и пароль).
|
|
|
|
string login = "admin";
|
|
SecureString password = Lers.Networking.SecureStringHelper.ConvertToSecureString("admin");
|
|
|
|
Lers.Networking.BasicAuthenticationInfo authInfo = new Lers.Networking.BasicAuthenticationInfo(login, password);
|
|
|
|
// Выполняем подключение к серверу, указывая имя компьютера и TCP-порт, а так же данные для авторизации.
|
|
|
|
try
|
|
{
|
|
server.Connect("localhost", 10000, authInfo);
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
Console.WriteLine("Ошибка подключения к серверу.\r\n" + exc.Message);
|
|
Console.Read();
|
|
return;
|
|
}
|
|
|
|
Console.WriteLine("Версия сервера: " + server.Version.ToString());
|
|
|
|
// Получаем объект учета по уникальному номеру, который задается в свойствах объекта учета.
|
|
// Указываем через флаг, что нам нужны атрибуты и системы объекта учета.
|
|
Node node = server.Nodes.GetByNumber(1232, NodeInfoFlags.Attributes | NodeInfoFlags.Systems);
|
|
|
|
// Убеждаемся, что мы получили указатель на объект Node.
|
|
// Если объект учета с таким номером не существует или он недоступна для текущего пользовтеля, то метод GetByNumber() вернет null.
|
|
|
|
if (node != null)
|
|
{
|
|
// Выводим наименование Объекта учета.
|
|
|
|
Console.WriteLine("Объект учета \'{0}\'", node.Title);
|
|
|
|
MeasurePoint[] measurePoints = node.Systems.HotWater.MeasurePoints.ToArray();
|
|
|
|
// Запрашиваем данные о суточном потреблении гвс за двое суток.
|
|
|
|
MeasurePointConsumptionRecord[] consumption1 = measurePoints[0].Data.GetConsumption(DateTime.Today.AddDays(-1), DateTime.Today, Lers.Data.DeviceDataType.Day).ToArray();
|
|
|
|
MeasurePointConsumptionRecord[] consumption2 = measurePoints[1].Data.GetConsumption(DateTime.Today.AddDays(-1), DateTime.Today, Lers.Data.DeviceDataType.Day).ToArray();
|
|
|
|
string scheme = (string)node.Attributes["схема"];
|
|
|
|
MeasurePointConsumptionRecord[] consumption = new MeasurePointConsumptionRecord[consumption1.Length];
|
|
|
|
switch (scheme)
|
|
{
|
|
// Первая схема измерения
|
|
case "1":
|
|
|
|
// Здесь реализуем расчет по схеме измерения, например складываем потребления по двум точкам учета.
|
|
|
|
for (int i = 0; i < consumption1.Length; i++)
|
|
{
|
|
MeasurePointConsumptionRecordWater record = new MeasurePointConsumptionRecordWater(consumption1[i].DateTime);
|
|
|
|
record.M_in = ((MeasurePointConsumptionRecordWater)consumption1[i]).M_in + ((MeasurePointConsumptionRecordWater)consumption2[i]).M_in;
|
|
record.M_out = ((MeasurePointConsumptionRecordWater)consumption1[i]).M_out + ((MeasurePointConsumptionRecordWater)consumption2[i]).M_out;
|
|
|
|
consumption[i] = record;
|
|
}
|
|
|
|
break;
|
|
|
|
// Вторая схема измерения
|
|
case "2":
|
|
|
|
// Здесь реализуем расчет по схеме измерения, например вычисляем разницу потребления по двум точкам учета.
|
|
|
|
for (int i = 0; i < consumption1.Length; i++)
|
|
{
|
|
MeasurePointConsumptionRecordWater record = new MeasurePointConsumptionRecordWater(consumption1[i].DateTime);
|
|
|
|
record.M_in = ((MeasurePointConsumptionRecordWater)consumption1[i]).M_in - ((MeasurePointConsumptionRecordWater)consumption2[i]).M_in;
|
|
record.M_out = ((MeasurePointConsumptionRecordWater)consumption1[i]).M_out - ((MeasurePointConsumptionRecordWater)consumption2[i]).M_out;
|
|
|
|
consumption[i] = record;
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
throw new Exception("Неподдерживаемый номер схемы измерения.");
|
|
}
|
|
|
|
// Выводим данные на экран.
|
|
|
|
foreach (MeasurePointConsumptionRecordWater recordWater in consumption)
|
|
{
|
|
Console.WriteLine("{0}: M1 = {1}, M2 = {2}", recordWater.DateTime, recordWater.M_in, recordWater.M_out);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("Объект учета не существует или недоступен для данной учетной записи.");
|
|
}
|
|
|
|
Console.ReadLine();
|
|
|
|
// Отключаемся от сервера.
|
|
// Указываем таймаут 2 секунды на нормальное завершение сеанса, после выхода которого, соединение будет разорвано.
|
|
|
|
server.Disconnect(2000);
|
|
}
|
|
}
|
|
}
|