Watchdog.Sleep
Sleep (Объект сторожевого пса) | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
Функция производит выключение (деактивацию) сторожевого пса. Деактивация будет произведена автоматически в момент удаления объекта из системы, если он был в активном состоянии в момент удаления. Функция может использоваться только в консольном клиенте. Замечание: при выполнении команды Sleep система может ждать до 100 мс. момента деактивации пса, и возвратит 0, если деактивация неудачна (вероятность такого события достаточно мала), реальное среднее время ожидания в этом случае может находиться в диапазоне 11..14 мс. Если же объект активного сторожевого пса уничтожается (переменная инициализируется нулем или удаляется при выходе из функции), система не будет ожидать деактивации пса (деактивация будет проходить асинхронно), поэтому, если пес создается и удаляется достаточно часто, возможно, выгоднее удалять его объект, вместо вызова функции Sleep.
Синтаксис
Watchdog.Sleep():<Сторожевой пес удачно деактивирован 1 или 0 (INT)>
Возвращаемое значение
Функция возвращает 1, если пес удачно деактивирован, иначе 0 (пес не был активирован, не консольный клиент и пр.)
Примеры
//Создаем новый объект пса с режимом перезагрузки 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();