Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: iww70 от 30 Сентября 2026, 04:38:24

Название: Вопрос по пингу
Отправлено: iww70 от 30 Сентября 2026, 04:38:24
Как сделать правильно?
Столкнулся с тем что Запускает пинг указанного хоста из алгоритма по изменению переменной. вводим ип действующий привязка к картинке срабатывает! вводим не действующий привязка работает! А вот если снова вводим действующий ип привязка больше не работает, помогает только перезагрузка проекта.

Получается процесс запущен (пинг) и обратно подключится не может и кажется что ип не доступен! а по факту надо использовать stopping. Не хочется еще городить кнопку.

Кто столкнется с проблемой со сменой ип и пингу вешайте на доп. переменную StopPing, и получится сначало произойдет остановка пинга а далее пинг пойдет.

Проект не надо перезагружать!

Код
  if Ip_cam1.AsStr<>'' then
  begin
    StartPing(Ip_cam1.Value, 1000, Image_cam_conv);
    Ip_cam1_old_1.Value :=Ip_cam1.Value; // сохраняем в переменную ип
  end
  else
  begin
    StopPing(Ip_cam1_old_1.Value); // останавливаем пинг если поле пустое
    Image_cam_conv.Frame:=4;  //gray
  end;


Код
//оставить пинг по доп. переменной
begin
  if not (Sender is TM_Object) then Exit;

  with (Sender as TM_Object) do
    if VariableEx.AsStr<>'' then StopPing(VariableEx.Value);
end.


Пинг изменился
Код
begin
  if PingData.Sender = nil then Exit;
  if not (PingData.Sender is TM_Image) then Exit;

  with PingData.Sender as TM_Image do
    begin
      if PingData.FailCounter=0 then
      begin
        Frame:=3; //green
        Value:=1;
      end;

      if (PingData.FailCounter<5) AND (PingData.FailCounter<>0) then
      begin
        Frame:=1; //yellow
        Value:=2;
      end;

      if PingData.FailCounter=5 then
      begin
        Frame:=4; //gray
        Value:=0;
      end;
    end;
end.
Название: Re: Вопрос по пингу
Отправлено: Simple Scada от 30 Сентября 2026, 10:32:51
Здравствуйте.

1. См. описание процедуры "StartPing (https://simple-scada.com/help/script/startping.html)". Пинг будет работать до остановки проекта или остановки его через процедуры "StopPing (https://simple-scada.com/help/script/stopping.html)" и "StopPingByObject (https://simple-scada.com/help/script/stoppingbyobject.html)"
2. См. описание события "Изменился пинг (https://simple-scada.com/help/script/changed-ping.html)" и свойств параметра "PingData (https://simple-scada.com/help/script/tm-pingdata.html)".

Если привязать разные хосты к одному и тому же объекту и использовать скрипт для изменения его цвета, то цвет будет изменяться при изменении пинга любого из хостов. Повторная привязка ни к чему не приведет. Цвет объекта изменится только после изменения пинга одного из хостов.

Если требуется перепривязывать пинг разных хостов к одному и тому же объекту, то перед привязкой необходимо остановить пинг предыдущего хоста и запустить пинг нового.