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

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

Автор Тема: Вопросы по скриптам в Simple-Scada 2  (Прочитано 1214451 раз)

seriych

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #855 : 29 Мая 2019, 12:25:41 »
Добрый день,
не получается решить проблему.
Есть таблицы и назначенные для них события OnCellClick (события OnClick и OnDblClick для таблиц не заданы). Есть поля, которые привязаны к внутренним переменным и с назначенными событиями OnDoneInput.
Проблема: если пользователь редактирует значение любого поля и нажимает "enter", а затем наводит мышь на любую таблицу и кликает, то событие OnCellClick с первого раза не срабатывает. Только со второго и последующих.
При этом, если после редактирования поля, провзаимодействовать с каким-то иным элементом, а не полем (например, с кнопкой), то все хорошо: во-первых само взаимодействие с эти элементом происходит с первого клика, во вторых OnCellClick на таблице после этого срабатывает с первого раза.
Непонятно, с чем это связано и как лечить. Пробовал всякими OnMouseLeave, OnMouseEnter, заставить поле потерять фокус, а таблицу принять, но все попытки безуспешны. Пробовал создавать поле, которое ни к чему не привязано и вообще без обработки событий (просто кидаем новое на форму) - все равно после взаимодействия с ним при переходе на таблицу OnCellClick срабатывает только со второго раза.

*Версия 2.3.3.0

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3211
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #856 : 01 Июня 2019, 10:36:55 »
Здравствуйте.

Цитировать
Если пользователь редактирует значение любого поля и нажимает "enter", а затем наводит мышь на любую таблицу и кликает, то событие OnCellClick с первого раза не срабатывает.
Исправим в ближайшем обновлении.

emoxristov

  • Пользователь
  • **
  • Сообщений: 53
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #857 : 05 Июня 2019, 17:49:52 »
Simple Scada мне нужна срочная помощь.У меня есть аналоговый вход, который я получаю от 0-20 мV датчиков.Какой сценарий я должен сделать, чтобы вызвать 5mV первую кнопку, 7mV вторую кнопку и 8,5mV третью кнопку.Могу ли я создать дополнительное окно для ввода для каждой кнопки при mV активировать.Буду очень признателен за вашу помощь
« Изменён: 05 Июня 2019, 20:27:53 от emoxristov »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1393
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #858 : 06 Июня 2019, 14:56:40 »
Здравствуйте.

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

Код: (delphi)
begin
  { записываем значение 1 в переменную ArduinoSerial0_D2}
  ArduinoSerial0_D2.Value := 1;
end.

Цитировать
Могу ли я создать дополнительное окно для ввода для каждой кнопки при mV активировать.
Да, окно можно создать через пункт меню "Окна". Для вызова окна из скрипта нужно использовать процедуры ShowAll, ShowClient.

emoxristov

  • Пользователь
  • **
  • Сообщений: 53
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #859 : 06 Июня 2019, 20:57:15 »
Simple Scada:
ArduinoSerial0_D2.Value := 1;    Вы имеете в виду, что 1 равен одному вольту, так ?
Как сделать милливольт, Я хочу активировать кнопку на милливольт?

asutpvit

  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #860 : 07 Июня 2019, 08:46:11 »
Simple Scada:
ArduinoSerial0_D2.Value := 1;    Вы имеете в виду, что 1 равен одному вольту, так ?
Как сделать милливольт, Я хочу активировать кнопку на милливольт?
Все зависит от представления переменной, если у Вас шкала этой переменной описана от 0 до 20 мВ, то в данном случае будет 1 мВ
с десятичными так же вопрос решается, через шкалу переменной, как опишите представление так и будет

emoxristov

  • Пользователь
  • **
  • Сообщений: 53
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #861 : 07 Июня 2019, 13:30:25 »
Будет ли это работать с 0-20 милливольт?
Пожалуйста, объясните, как ввести милливольт, вольт или импеданс.
« Изменён: 07 Июня 2019, 17:26:58 от emoxristov »

vyacheslav

  • Новичок
  • *
  • Сообщений: 40
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #862 : 10 Июня 2019, 07:46:49 »
Добрый день, подскажите пожалуйста, обновил симпл до версии 2.3.5.0, перестали открываться отчеты с проекта. Скрипт выглядит таким образом:
Код: (delphi)
 begin
  ReportView(GetClientName, 'Электроэнергия - Гагарина, 8');
end.
что могло произойти?
« Изменён: 10 Июня 2019, 12:45:34 от Simple_Scada »

vyacheslav

  • Новичок
  • *
  • Сообщений: 40
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #863 : 10 Июня 2019, 08:09:43 »
И как реагировать на это всплывающее окно? то есть не один скрипт из за этого не работает? раньше такого не было. и как мне найти проблемный скрипт среди тысяч?  в проекте возможно есть старые не действительные, даже не знаю где они лежат

vyacheslav

  • Новичок
  • *
  • Сообщений: 40
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #864 : 10 Июня 2019, 08:26:56 »
И вот говорит что здесь ошибка, можете помочь, какая? до обновления все работало!

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3211
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #865 : 10 Июня 2019, 09:53:00 »
Здравствуйте.

Все изменения в компиляции в версии 2.3.5.0 описаны здесь. Если обновиться не получается и не получается понять причину, то вышлите нам текущую версию проекта (или версию до перехода на 2.3.5.0) на support@simple-scada.com, наши специалисты в короткий срок обновят проект с учетом всех изменений в скриптах.

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #866 : 10 Июня 2019, 16:29:01 »
добрый день , есть проблема , которая возникла  на пустом месте , скрипт работал, пока не увеличил количества строк в файле , в общем читаю текстовый файл ,сначала интежер , затем  строку
Код
  S := TextFileReadLn;                        
  B1.Value := StrToInt(S);
  S := TextFileReadLn;                   
  B1_STRING_24.Value := S;
где B1 тэг интежер , значение не читается а в логе сервера пишется что число пример:ошибка в скрипте строка  18    '5840' is not a valid integer value  , подскажите как это понимать, почему строка 5840 не может конвертироваться в интежер

подразобрался немного , в общем все дело в самом файле, получается так , если я цифры в текстовом файле просто набрал , то они читаются нормально, но если скопировал с другого файла , то  уже не читаются и в сервер летит ошибка , что то похожее происходит и со строкой.
« Изменён: 11 Июня 2019, 09:50:03 от Simple-Scada »

Victor_P.

  • Пользователь
  • **
  • Сообщений: 69
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #867 : 10 Июня 2019, 19:16:15 »
lipvasko, может из-за того, что кодировки файлов разные.

pan2000

  • Постоялец
  • ***
  • Сообщений: 225
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #868 : 10 Июня 2019, 22:51:06 »
...
 подскажите как это понимать, почему строка 5840 не может конвертироваться в интежер
...

Ошибка StrToInt для аргумента завершающегося не цифрой:
Код: (delphi)
begin
  Text1.Text := IntToStr(StrToInt(' 5840'));    //  5840
  Text2.Text := IntToStr(StrToInt('5840 '));    // Ошибка в скрипте "Script_0" в строке 3.
end.                                          //  '5840 ' is not a valid integer value

Добавлено 13 июня 2019 года:
Посмотреть последовательность кодов символов переменной S типа String можно с помощью скрипта. Результат отображается в области Text1 четырехзначными шестнадцатиразрядными числами.

Код: (delphi)
var i: integer;
    aStr: string;
begin
  Text1.Text := '';
  aStr := S.AsStr;
  for i := 1 to Length(aStr) do
    Text1.Text := Text1.Text + IntToHex(integer(aStr[i]), 4) + ' ';
end.
« Изменён: 13 Июня 2019, 17:53:18 от pan2000 »

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #869 : 11 Июня 2019, 08:28:23 »
...
 подскажите как это понимать, почему строка 5840 не может конвертироваться в интежер
...

Ошибка StrToInt для аргумента завершающегося не цифрой:
Код: (delphi)
begin
  Text1.Text := IntToStr(StrToInt(' 5840'));    //  5840
  Text2.Text := IntToStr(StrToInt('5840 '));    // Ошибка в скрипте "Script_0" в строке 3.
end.                                          //  '5840 ' is not a valid integer value
РАЗОБРАЛСЯ , необходимо было удалять невидимые символы , до команды каретки , использовал нотепад++
« Изменён: 11 Июня 2019, 09:53:09 от lipvasko »