Dim objProcess As System.Diagnostics.Process; objProcess = New System.Diagnostics.Process(); objProcess.StartInfo.FileName = "C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe"; objProcess.StartInfo.Arguments = "/A page=10 C:\Program Files\Wonderware\InTouch\ITDocGuide.pdf"; objProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal; objProcess.Start();
Архив рубрики: Примеры и скрипты
Диалог выбора имени файла для InTouch
Задача: вызвать диалоговое окно выбора файла и по результату получить имя выбранного файла(ов).
Решение: Использование функционала класса System.Windows.Forms.OpenFileDialog
1. Импортируем библиотеку System.Windows.Forms.
ArchestrA IDE -> меню Galaxy -> Import -> Script Function Library… -> выбираем файл для .NET 2.0: C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll
2. Создаем ArchestrA символ и открываем его в ArchestrA Sysmbol Editor
3. Заводим Custom Properties с именем fName и типом данных string
4. Добавляем элемент Text и привязываем ему анимацию «Value Display«. Тип string, для переменной fName. Здесь будет выводиться имя выбранного нами файла.
5. Добавляем кнопку. По нажатию на нее будет вызываться скрипт выбора файла. Анимация ActionScript.
Текст скрипта:
dim f as System.Windows.Forms.OpenFileDialog; f = new System.Windows.Forms.OpenFileDialog; if(f.ShowDialog() == System.Windows.Forms.DialogResult.OK) then fName=f.FileName; endif;
6. Тестируем
Результат: По нажатию на кнопку вызывается диалог ОС выбора файла. После выбора мы получаем имя этого файла в виде строки.
Дополнительно:
- описание класса OpenFileDialog на MSDN
- добавить фильтрацию по типу файлов
- возможность выбора нескольких файлов
- и многое другое, см. описание класса на MSDN
—
Представление 64 битных беззнаковых целочисленных значений в InTouch
В классическом InTouch и в Application Server нельзя использовать теги и переменные типа Integer емкостью более 32 бит. Но, если при работе с Application Server есть доступ к классу MS .NET System.UInt64 (System.Int64), то в классическом InTouch этот функционал отсутствует. В практике, периодически, возникают задачи принять данные с разрядностью более 32 бит.
Недавно передо мной встала проблема отображения данных со счетчика, подключенного по Modbus RTU. Счетчик выдает данные в 3-х шестнадцати разрядных регистрах в целочисленном формате, т.е. для отображения этого значения мне потребуется не менее 48 бит. Но я взялся за более общую задачу — завести и отобразить переменную емкостью 64 бита (на самом деле описанный ниже способ легко переделать и для еще большей емкости переменной :)) хоть такого в практике я уже и не встречал).
Обновление и миграция до SP 2014
Вот и вышла наконец-то версия WSP2014. Сейчас она доступна для заказа, а в январе 2014 обещают выложить для скачивания на WDN. В ноябре-начале декабря я уже успел протестировать release candidate WPS2014, а до этого beta версию. Много появилось интересного и полезного, но интересности я расскажу в вебинаре 17-го января (записаться на вебинар по System Platform 2014 можно здесь), а в этой статье подробно разберу пример обновления и миграции с предыдущей версии SP2012R2 path 1.

Русификация форм входа для InTouch Access Anywhere
Изменение частоты сбора данных с System Platform
Задача собрать данные с частотой 100 мс
Как правило для сбора данных с устройств ввода-вывода подходит скорость сбора от 1 сек и более. Сохранение данных на сервер Historian рекомендуется по скорости изменения, см. Swinging door, Rate deadband Но, часто возникает задача скоростного сбора части данных, например, с дискретностью 100 мс.