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

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

Автор Тема: Работа процедуры Dial  (Прочитано 22886 раз)

eu-1982

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Работа процедуры Dial
« : 15 Января 2026, 08:00:38 »
Здравствуйте, столкнулся в работе с процедурой Dial(ANumber: string);
Все настройки сделаны, СМС отправить могу, как из настроек, так и из самого проекта, но при попытке позвонить ничего не происходит... При этом через АТ команды модем позвонить может.
Казалось бы синтаксис проще некуда, но все же ....

По итогу моих изысканий найдено решение:
Документация на сайте говорит нам, что:
Код: (delphi)
begin
  Dial('7928456789'); // звонок по номеру 7928456789.
end.
По факту это не работает (версия 2.7.3.1)!!!
Далее мною было прочитано еще немного инструкций с сайта и попробовал вариант:
Код: (delphi)
begin
  RunAT('ATD 8928456789;'); // звонок абоненту 8928456789
end.
И он заработал как ни странно... А причина в формате номера абонента, а именно номер должен начинаться с 8, а не 7 и не +7, при этом если написать процедуру Dial вот так:
Код: (delphi)
begin
  Dial('8928456789');
end.
То в этом варианте все прекрасно работает...

Господа поправьте инструкцию пожалуйста, чтобы ваши пользователи не путались в дальнейшем, либо поправьте скаду, чтобы она понимала и 7 в начале номера и 8 в начале номера...
« Изменён: 15 Января 2026, 08:46:36 от Simple Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3210
    • Просмотр профиля
    • Simple-Scada
Re: Работа процедуры Dial
« Ответ #1 : 15 Января 2026, 10:17:56 »
Здравствуйте.

Все примеры описанные в руководстве не раз протестированы. Повторно проверили работу Dial c 7 и с 8, оба варианта работают (GSM модем Телеофис, оператор МТС, Краснодарский край).
Скада не устанавливает никаких собственных требований к номеру, или к AT-командам. Все команды без преобразований отправляются модему. Команда ATD допускает номера с символами: 0-9, *,#,”A”, ”B”, ”C”, ”D”, ”+”. Чаще всего при вызове команды ATD используется международный формат номера ( 7 ), а не внутренний ( 8 ), поэтому в руководстве оставили 7.

Цитировать
либо поправьте скаду, чтобы она понимала и 7 в начале номера и 8 в начале номера...
Скада не предъявляет никаких требований к номерам и никак их не корректирует. С номером работает модем и оператор связи. Указывайте номер в том формате, который подходит Вам.

eu-1982

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Работа процедуры Dial
« Ответ #2 : 15 Января 2026, 12:45:26 »
Понял, спасибо за ответ, значит дело в мегафоне, или в моем стареньком модеме.
Еще вопрос по Dial(): Можно ли как-то получить результат выполнения этой процедуры, к примеру нечто типа ответа модема об окончании звонка? Или это уже все через АТ упражняться надо? Понятно конечно, что это не функция и значения не возвращает... но может есть варианты?
« Изменён: 15 Января 2026, 13:00:49 от eu-1982 »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1385
    • Просмотр профиля
Re: Работа процедуры Dial
« Ответ #3 : 15 Января 2026, 20:37:29 »
Скада-система лишь передает на модем AT-команду и далее всё зависит от модема. Если используемый модем возвращает какую-либо информацию о выполнении AT-команды, то можно вызвать звонок через RunAT и затем обработать ответ от модема в скрипте по событию "Ответ от GSM-модема".