Watchdog.Feed

From SunFlurry wiki
Jump to: navigation, search
  Feed (Объект сторожевого пса)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Визуальность:Нет

Функция обнуляет время ожидания в режиме сторожевого пса. Функция может использоваться только в консольном клиенте. Функция должна исполняться периодически, чтобы пес не инициировал перезагрузку консольного клиента.

Синтаксис

Watchdog.Feed()

Примеры

//Создаем новый объект пса с режимом перезагрузки
wd:=WatchDog.Create(0);
//Производим включение сторожевого пса с периодом в 30 сек.
wd.Guard(30000);

//В лог будет выведено "Отладка, активность/режим: 1/0"
Message("Отладка, активность/режим: "+wd.Active+"/"+wd.Mode);

//Создаем OLE-объект компоненты весов
Try
  Уст:=CreateOLE("LP16DLLCOM.lp16");
  Уст.ip:="192.168.0.1";
  Уст.port:=8111;
  Уст.Connect();
Except
  Message("Не зарегистрирована компонента весов LP16DLLCOM.dll, либо весы не настроены, обратитесь к администратору!","!");
  Exit 0;
EndTry;

//Производим выгрузку информации в весы. Компонента весов этой марки имеет тенденцию зависать, если во время выгрузки оператор попробует провести работу с весами.
//Т -- текстовый файл с информацией в виде "PLU номер;Цена;Сообщение;Срок;Тара;Группа;Полное имя;Код;Лого;Текстовое Лого"
For i:=1 to T.Size() Do
  s:=T.GetLine(i);

  If i%10=0 Then
    Message("Выгружено "+i+" из "+T.Size());
  EndIf;

  Try
    //Выгружаем строку текстового файла -- один товар
    Уст.PLUNO:=Number(Trunc(tearStr(s,";")));
    Уст.PRICE:=Number(Trunc(tearStr(s,";")));
    Уст.MSG:=Number(Trunc(tearStr(s,";")));
    Уст.LIFE:=Number(Trunc(tearStr(s,";")));
    Уст.TARE:=Number(Trunc(tearStr(s,";")));
    Уст.groupcode:=Number(Trunc(tearStr(s,";")));
        
    //Имя размещается в одной или двух строках с максимальной длиной в 28 символов
    Стр:=Replace(tearStr(s,";"),"@",";");
    s2:=Left(Стр,28);
    if Length(s2)=0 Then
      s2:=" ";
    EndIf;
    Уст.MSG1:=s2;
    s2:=Mid(Стр,29,28);
    if Length(s2)=0 Then
      s2:=" ";
    EndIf;
    Уст.MSG2:=s2;

    Уст.ITEM:=tearStr(s,";");
    Уст.NumberLogo:=Number(Trunc(tearStr(s,";")));

    s2:=tearStr(s,";");
    if Length(s2)>0 Then
      Уст.LogoStr:=s2;
    EndIf;
    Уст.SendPLU();
  Except
    Message("Не удалось отправить товар "+Стр+" в весы! Повторите выгрузку!","!");
    Exit;
  EndTry;

  //После выгрузки одной строки производим обновление времени ожидания пса.
  //Если в момент вызова Уст.SendPLU() произошло зависание, пес, не дождавшись команды Feed() произведет перезагрузку клиента
  wd.Feed();
EndDo;

Try
  Уст.Disconnect();
Except
EndTry;

//Выключаем сторожевого пса (система сделала бы это автоматически при выходе из текущей функции, так как переменная wd была бы уничтожена, 
//  поэтому все инструкции Exit в данном примере не используют конструкцию Try ... Finally)
wd.Sleep();