// Исходный код Формы

&НаКлиенте
перем ВесовойИндикатор1;

&НаКлиенте
Процедура ПриОткрытии(Отказ)
  Попытка
    ПодключитьВнешнююКомпоненту("C:\GetWeight.dll", "WeightLib", AddInType.Native);
    ВесовойИндикатор1 = Новый("AddIn.WeightLib.WeightClass");
    
    //необходимо указать ip-адрес компьютера на котором установлен сервер GetWeight 
    // и порт который открыл сервер для подключения и передачи веса
    Сообщить("ВесовойИндикатор1: Открываем соединение с сервером GetWeight.");
    Если Не ВесовойИндикатор1.Подключиться("localhost", 8810)  //английский вариант: .Connect("localhost", 8810)
    Тогда
      Сообщить("ВесовойИндикатор1: Произошла ошибка при подключение к серверу GetWeight.");
    КонецЕсли;  
  
    // запускаем таймер (раз в секунду) для отображения информации от Сервера
    ПодключитьОбработчикОжидания("КаждуюСекундуПоказатьВес", 1);
  Исключение	
    Сообщить("Не найден файл библиотеки GetWeight.dll");
    Сообщить(ОписаниеОшибки());
  КонецПопытки;  	
КонецПроцедуры

&НаКлиенте
Процедура КаждуюСекундуПоказатьВес()
  ПоказатьВес(ВесовойИндикатор1, Элементы.ИндикаторИнфо1);
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьВес(ВесовойИндикатор, ИндикаторИнфо)
  Попытка
    Если Не ВесовойИндикатор.СерверПодключен //английский вариант: .ServerConnected
    Тогда 
      // если нет связи с Сервером, то красим шрифт в красный цвет
      ИндикаторИнфо.ЦветТекста = Новый Цвет(255,0,0);
      ИндикаторИнфо.Заголовок = "Нет связи с Сервером";
      Возврат;
    КонецЕсли;  
	  
    Если Не ВесовойИндикатор.ИндикаторПодключен //английский вариант: .IndicatorConnected
    Тогда 
      // если нет связи с индикатором, то красим шрифт в красный цвет
      ИндикаторИнфо.ЦветТекста = Новый Цвет(255,0,0);
      ИндикаторИнфо.Заголовок = "Индикатор не отвечает";
      Возврат;
    КонецЕсли;  
	  
    Если ВесовойИндикатор.ДвижениеНаПлатформе //английский вариант: .Motion
    Тогда 
      // если есть движение на платформе, то красим шрифт в серый цвет
      ИндикаторИнфо.ЦветТекста = Новый Цвет(128,128,128);
    Иначе
      // если нет движения, то красим шрифт в чёрный цвет
      ИндикаторИнфо.ЦветТекста = Новый Цвет(0,0,0);
    КонецЕсли;  
	
    // получаем вес в килограммах
    ИндикаторИнфо.Заголовок = ВесовойИндикатор.Вес; //английский вариант: .Weight
  Исключение
    Сообщить(ОписаниеОшибки());
  КонецПопытки; 
КонецПроцедуры

&НаКлиенте
Функция ПолучитьВесОтИндикатора(ВесовойИндикатор) 
  Попытка
    Если Не ВесовойИндикатор.СерверПодключен //английский вариант: .ServerConnected
    Тогда 
      Возврат("Нет соединения с Сервером.");
    КонецЕсли;  
	  
    Если Не ВесовойИндикатор.ИндикаторПодключен //английский вариант: .IndicatorConnected
    Тогда 
      Возврат("Сервер не получает значения веса от индикатора.");
    КонецЕсли;  
	  
    Если ВесовойИндикатор.ДвижениеНаПлатформе //английский вариант: .Motion
    Тогда 
      Возврат("Движение на весовой платформа");
    КонецЕсли;  
	
    // получаем вес в килограммах
    Возврат(ВесовойИндикатор.Вес);  //английский вариант: .Weight
  Исключение
    Возврат(ОписаниеОшибки());
  КонецПопытки; 
КонецФункции

&НаКлиенте
Процедура ПолучитьВес1(Команда) 
  Сообщить("ВесовойИндикатор1: " + ПолучитьВесОтИндикатора(ВесовойИндикатор1));
КонецПроцедуры

&НаКлиенте
Процедура СделатьСнимок(Команда)
  // пример получения снимка с ip Hikvision
  // параметр1 - ссылка на snapsoshot ip-камеры 
  // параметр2 - логин ip-камеры 
  // параметр3 - пароль ip-камеры 
  // параметр4 - полное имя JPG файла куда сохранять снимок
  // параметр5 - ширина снимка в пикселях (0 - ширина по умолчанию)
  // параметр6 - высота снимка в пикселях (0 - высота по умолчанию)
  // параметр7 - качество сжатия снимка 10..100 (0 - качество по умолчанию)
  ТекстОшибки = ВесовойИндикатор1.Снимок("http://192.168.2.100/ISAPI/Streaming/channels/101/picture?snapShotImageType=JPEG", "admin", "12345", "C:\snapshot.jpg", 1280, 720, 55);  //английский вариант: .Snapshot
  Если ТекстОшибки <> ""
  Тогда 
    Сообщить("Ошибка: " + ТекстОшибки);
  Иначе
    Сообщить("Снимок сохранён в файл: C:\snapshot.jpg");
  КонецЕсли;  
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
  Попытка
    Сообщить("Закрываем все соединения с сервером GetWeight.");
    ВесовойИндикатор1.Отключиться(); //английский вариант: .Disconnect()
  Исключение	
    Сообщить(ОписаниеОшибки());
  КонецПопытки;  	
КонецПроцедуры
