Вопросы по скриптам в Simple-Scada 2

Автор Simple-Scada, 29 января 2016, 15:19:20

Миханик

#915
Цитата: Simple-Scada от 31 августа 2019, 09:42:55Переменная успешно восстанавливает своё значение, но сразу стирается скриптом "Button_ClearPhoneNumber_OnDataChange", ведь при запуске проекта переменные инициализируются и происходит выполнение OnDataChange скриптов. Используйте событие OnClick вместо OnDataChange чтобы скрипт выполнялся только по клику на объект.
Изначально я так и сделал (по событию OnClick), но мне нужно было, чтобы при этом работало подтверждение на действие. А при событии OnClick, подтверждение не обрабатывается.

Редак.
Сделал сейчас очистку по событию OnClick, а OnDataChange удалил - ничего не поменялось, номер в поле при загрузке пустой.

Simple-Scada

ЦитироватьИзначально я так и сделал (по событию OnClick), но мне нужно было, чтобы при этом работало подтверждение на действие. А при событии OnClick, подтверждение не обрабатывается.
Для этого у Вас должна быть кнопка "с фиксацией", на событие OnClick нужно назначить стирание номера телефона, событие OnDataChange нужно удалить. Да и привязку кнопки к переменной можно убрать.

ЦитироватьСделал сейчас очистку по событию OnClick, а OnDataChange удалил - ничего не поменялось, номер в поле при загрузке пустой.
У нас после изменений в Вашем проекте всё работает как нужно, включая автовосстановление и кнопку с подтверждением. Вы перезапустили проект после внесения изменений? Если да, то пришлите текущую версию проекта, вероятно Вы что-о упустили.

Dmitry_Impuls

Цитата: pan2000 от 02 сентября 2019, 10:32:36По Вашему сообщению можно предположить:

Большое спасибо за ответ. Но он несколько запоздал.
Объекты одинаковые. Отличаются тегом. По тегу понимаем какие переменные брать.
И, да, привязка динамическая... лень тыкать мышкой было...

Смотрите первое сообщение на этой странице. Ошибка была в  том, что переменные не привязывались.
Просто выводились их значения в свойство Text.

Попутно вопрос возник.

А как отображаются объекты (текстовое поле, ячейка и т.д.) у которых привязан тег сервера/переменная и есть свойство Text?
Сейчас при вводе видно число секунд (ввод пользователя), потом их преобразование в формат времени.

Миханик

Цитата: Simple-Scada от 02 сентября 2019, 12:24:32Для этого у Вас должна быть кнопка "с фиксацией", на событие OnClick нужно назначить стирание номера телефона, событие OnDataChange нужно удалить. Да и привязку кнопки к переменной можно убрать.
Спасибо. Изменил кнопку на "С фиксацией" и всё заработало как надо.

pan2000

Цитата: Dmitry_Impuls от 30 августа 2019, 14:57:24. . .
  Columns[2].Cells[1].Text:=SecondsToStr(GetVariableByName('StepRunTimeSet_T'+aNum+'_W').AsInt64);
надо привязку всё-таки сделать...
  Columns[2].Cells[1].Variable:=(GetVariableByName('StepRunTimeSet_T'+aNum+'_W');
Привязка переменной к Полю или Ячейке выводит на экран её значение в формате переменной, свойство ячейки Text не используется при редактировании ячейки.

Цитата: Dmitry_Impuls от 02 сентября 2019, 20:05:51А как отображаются объекты (текстовое поле, ячейка и т.д.) у которых привязан тег сервера/переменная и есть свойство Text?
1. Объект ТЕКСТ не редактируется (пока?), переменные связаны только с событиями.

2. Объект ПОЛЕ имеет собственную текстовую переменную с начальным значением устанавливаемым в редакторе и первоначально выводимой на экран.
В дальнейшем на экране отображается последнее изменение: или собственная переменная (запись свойства Text) или форматированная переменная (при привязке или изменении).
Чтение свойства Text при отсутствии привязки - из собственной переменной, при наличии - форматированное из переменной.
Редактирование с сохранением результата только в переменную, редактирование без привязанной переменной выполняется в числовом формате и не сохраняется.

3. Ячейка ТАБЛИЦЫ - комбинация из редактируемого ТЕКСТа и ПОЛЯ. Поведение аналогично объекту ПОЛЕ (приоритет по убыванию: переменная, Text переменной, Text ячейки).

Взаимную связь составляющих объектов ПОЛЕ и ячейка ТАБЛИЦЫ можно посмотреть в примере из вложения.

ЦитироватьСейчас при вводе видно число секунд (ввод пользователя), потом их преобразование в формат времени.

В примере можно смоделировать Ваш ввод.

Миханик

Цитата: Simple-Scada от 31 августа 2019, 09:42:55
Цитата: Миханик от 29 августа 2019, 12:18:24Бьюсь с отправкой смс - если отправляю сообщение кирилицей, то всё нормально. Если отправляю на латинице, то приходит абракадабра (вложение).
Сделали исправление при отправке на латинице,  обновление будет в ближайшее время.
Обновление 2.3.6.0
Теперь СМС на латинице вообще не отправляются (даже абракадабра не приходит).
Если меняю параметр ACyrillic на True без изменения текста сообщения, то приходит 2 СМС на латинице (но меня так не устраивает).
Хотя если отправлять тестовое из Options.exe, то сообщение приходит.

Simple-Scada

#921
Только что ещё раз проверили отправку:
 1. короткой SMS с кириллицей. SendSMS('79281112233', 'Авария 10', TRUE);
 2. длинной SMS с кириллицей. SendSMS('79281112233', 'Авария 10 Авария 10 Авария 10 Авария 10 Авария 10 Авария 10', FALSE);
 3. короткой SMS с латиницей. SendSMS('79281112233', 'Alarm number 10', FALSE); ;
 4. длинной SMS с латиницей. SendSMS('79281112233', 'Alarm number 10 Alarm number 10 Alarm number 10 Alarm number 10', FALSE);

Все SMS приходят корректно и с выключенными опциями "Менять режимы" и "Ждать ответа" и с включенными. USB-модем МТС 829F.
Также мы запустили Ваш проект, скрипт "Button_SendTestSMS_OnClick", в строке отправки SMS выключили кириллицу:
Код: pascal
SendSMS('79281112233', DateTimeToStr(Now) +
          ', s.Vozzhaevka, MK 492. Uroven mazuta: ' +
          Level1 + ', ' + Level2, FALSE);
Затем запустили проект и нажали кнопку "Button_SendTestSMS". Пришла одна SMS с текстом: "09.09.2019 12:22:07, s.Vozzhaevka, MK 492. Uroven mazuta: L1=0mm,, L2=0mm".

Если снова включить кириллицу, то приходит две смс:
1. "09.09.2019 12:22:07, s.Vozzhaevka, MK 492. Uroven mazut";
2. "a: L1=0mm,, L2=0mm";

Попробуйте в опциях выключить флажки "Менять режимы" и "Ждать ответа", сохранить, затем перезапустить сервер скады. Меняется ли что-нибудь?
Какой модем Вы используете?

Upd: есть предположение, что это из-за текстового режима отправки. Мы отправили Вам на почту тестовое обновление сервера скады которое всегда работает в цифровом режиме. Решает ли это обновление проблему?

Миханик

Цитата: Simple-Scada от 09 сентября 2019, 12:29:06Upd: есть предположение, что это из-за текстового режима отправки. Мы отправили Вам на почту тестовое обновление сервера скады которое всегда работает в цифровом режиме. Решает ли это обновление проблему?
С этим сервером работает!

Simple-Scada

Спасибо за информацию. Мы включили это изменение в официальную версию 2.3.6.0. Теперь отправка всегда в цифровом режиме. Также обратите внимание на опции "Менять режимы" и "Ждать ответа". Если у Вас отправка корректно работает без этих опций, то лучше их не включать. Тогда отправка будет быстрее. Данные опции нужно использовать только если без них отправка не работает.

azrael454

Вопрос: как в скриптах описать сравнение текущего времени с некоторым заданным? Например, мне нужно сбрасывать некоторые переменные по достижению определенного времени. Значит мне нужно сравнить текущее время с временем условия сброса в формате ЧЧ:ММ:СС. Какую функцию мне использовать для обозначения времени для сравнения? Сравнивать буду через SameTime.

Neskad

EncodeTime(ЧЧ, ММ, СС); В справке описаны в разделе "Время и дата/Формирование значения"

azrael454

Цитата: Neskad от 13 сентября 2019, 11:03:52EncodeTime(ЧЧ, ММ, СС); В справке описаны в разделе "Время и дата/Формирование значения"
Спасибо за ответ

bacchus1

Добрый день!
Как возможно поменять картинки из скрипта? Мне нужно, чтобы по разным значениям тега появлялись разные изображения. Понятно, что можно наложить друг на друга несколько изображений и менять их видимость, но это неудобно.

Как я понял, свойство TextureName доступно только для чтения, поэтому через него не получится. Хотел сделать через анимацию. Т.е. менять свойство Frame, но опять же не получилось, при этом частота кадров была 0.
Возможно ли сделать статическую смену кадров (когда скорость анимации 0) из скриптов? Это была бы очень полезная функция, т.к. во многих скадах она реализована и активно используется.

Victor_P.

Через номер фрейма в анимашке работало нормально.

bacchus1

Теперь заработало.
Видимо я изначально вставил картинку как обычную, потом сделал из нее анимацию. Удалил и вставил заново, все заработало.