QuickScript

Материал из archestra.info
Перейти к: навигация, поиск

QuickScript (для InTouch)

QuickScript .NET (для Application Server) и работа с Script Function Library


ОГРАНИЧЕНИЯ

Размер текста скрипта

InTouch scripts can contain a maximum of 22K characters including spaces and have a 32K physical size limit.

Resolution Description:

  • The scripting engine has a size limit based on:
  1. A 32K physical size limitation imposed by the OS; and
  2. An approx. 22K expression (characters incl. spaces) buffer.

If either limit is exceeded, this will result in the "Exceeded Expression Buffer" msg. Or "Not enough room in expression buffer"

Источники:

ActiveX

Tech Note 242 Creating ActiveX Controls for InTouch Using Microsoft Visual Basic

Передача данных из InTouch в Open или MS Office

Для передачи данных из InTouch в Open или MS Office:

Вариант 1: скриптами InTouch записывать данные в файл .CSV, а затем открывать в MS Office или Open Office Для этого используется функция: FileWriteFields (filename, offset, starttag, numberoffields); Например так: FileWriteFields("c:\set.csv",0,"RecipeTag1",4);

Вариант 2: по протоколу DDE получить данные с InTouch в открытый в Open Office файл Здесь можно посмотреть как это реализуется со стороны OpenOffice: http://wiki.i-rs.ru/wiki/RU/kb/00000641 Например так: в пустой ячейке написать (при запущенном WindowViewer):

  • Для OpenOffice Cals: =DDE("view";"tagname";"$ApplicationVersion";0)
  • Для MS Office Excel: =VIEW|Tagname!'$ApplicationVersion'

Вариант 3: написать свой .Net или ActiveX объект для экспорта

Общие вопросы

Функция FileWriteFields. Вывод данных тегов в файл csv

FileWriteFields (filename, offset, starttag, numberoffields);
  • filename - Имя csv файла, в который будут записываться данные. Если файла не существует, то создается новый файл. Литеральное строковое значение, строковый тег, или строковое выражение.
  • offset - Положение(в байтах) в файле, с которого будет начинаться запись. Использовать -1 для записи в конец файла. Литеральное

целочисленное значение, целочисленный тег, или целочисленное выражение.

  • starttag - Имя первого тега, содержащего первые значения, которые будут записаны. Имя тега должно быть в двойных кавычках и

заканчиваться числом, например “My Tag1”. Литеральное строковое значение, строковый тег, или строковое выражение.

  • numberfields - Количество данных, записываемых в csv файл. Литеральное целочисленное значение, целочисленный тег, или целочисленное выражение. Первое значение записывается в файл из тега в параметре starttag, далее данные записываются последовательно из тегов с инкрементированным числовым суффиксом начиная со стартового параметра (My Tag1, My Tag2, MyTag3,…).
  • Пример 1, есть 4 тега RecipeTag1, RecipeTag2, RecipeTag3, RecipeTag4. Для сохранения их в файле c:\RecipeTag.csv необходимо выполнить следующий скрипт. Запись, каждый раз, будет вестись в конец файла (поле offset == -1)
FileWriteFields("c:\RecipeTag.csv",-1,"RecipeTag1",4);
  • Пример 2, тоже что и в примере 1, но запись одного тега RecipeTag1
FileWriteFields("c:\RecipeTag.csv",-1,"RecipeTag1",4);

Получения координат курсора

  • Способ 1: использовать функцию GetCursorPosition("Xtag", "Ytag", UseDesktop) из библиотеки CursorFn.dll.Для это необходимо:
    • в InTouch приложение импортировать указанную библиотеку (Поместить файл CursorFn.dll, CursorFN.wdf and CursorFn.hlp в директорию с InTouch и переоткрыть InTouch приложение)
    • создать в InTouch приложении три тега типа Memory Integer Xtag, Ytag, UseDesktop
    • в скрипте вызвать функцию GetCursorPosition("Xtag", "Ytag", UseDesktop)
    • передать теги Xtag, Ytag в AA символ использую Custom Properties символа
  • Способ 2: использовать .NET библиотеку System.Windows.Forms
    • импортировать библиотеку в IDE: Galaxy-Import-Script Function Libtrary выбрать файл System.Windows.Forms.dll (из папки: \Windows\Microsoft.NET\Framework\v2.0…)
    • в скрипте использовать конструкции типа Integer:
      • System.Windows.Forms.Cursor.Position.X и System.Windows.Forms.Cursor.Position.Y
      • или System.Windows.Forms.Control.MousePosition.X и System.Windows.Forms.Control.MousePosition.Y

Способ 1 приведен в документации Wonderware Tech Note 463 InTouch® Add-On Functions Master Index (см. приложение к письму)

Работа с ListBox

см встроенную справку: Getting or Setting the Value of a List Item Use the wcGetItemData() function to find the integer value associated with the list item identified by the item index. Use the wcSetItemData() function to assign an integer value to the item in the list specified by item index. This assigns a number to a string.