Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Вопрос по пингу  (Прочитано 224 раз)

iww70

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Вопрос по пингу
« : 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.
« Изменён: 01 Октября 2026, 07:16:03 от iww70 »

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 302
    • Просмотр профиля
    • Simple-Scada
Re: Вопрос по пингу
« Ответ #1 : 30 Сентября 2026, 10:32:51 »
Здравствуйте.

1. См. описание процедуры "StartPing". Пинг будет работать до остановки проекта или остановки его через процедуры "StopPing" и "StopPingByObject"
2. См. описание события "Изменился пинг" и свойств параметра "PingData".

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

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