Чтобы добавить пользовательские функции C++ в программе CONTROL, необходимо записать CtrlExtension, что дает возможность получить класс BaseExternHdl.
Допустимые классы и библиотеки
Все библиотеки, которые не были созданы с помощью «КАСКАД Цифра», и все последующие классы библиотек можно использовать для выполнения пользовательских функций программы CONTROL:
- bcm.dll или .so (Linux)
- libBasics.dll или .so (Linux)
- libConfigs.dll или .so (Linux)
- libDatapoint.dll или .so (Linux)
- libMessages.dll или .so (Linux)
- libManager.dll или .so (Linux)
- libCtrl.dll или .so (Linux)
- libV24.lib или .a (Linux)
Данные библиотеки являются частью интерфейса API программы «КАСКАД Цифра».
Недопустимые классы и библиотеки
Библиотеки
- libComDrv.lib или .a (Linux)
также являются частью интерфейса API. Однако, их нельзя использовать.
Загрузка DLL (динамически подключаемых библиотек)
С помощью ключевого слова #uses можно указать, какие расширения программы CTRL необходимы в сценарии или панели. Поэтому больше нет необходимости вводить расширения в конфигурационном файле. Это облегчает использование расширений, при этом они загружаются в первую очередь по мере необходимости. Какие именно расширения должен загрузить менеджер, можно определить также с помощью записей в файле «config.level». Однако мы рекомендуем использовать ключевое слово #uses. Как использовать ключевое слово #usesили как определить, какие именно расширения следует загрузить с помощью записей в файле «config.level», описывается ниже.
ПРИМЕЧАНИЕ
Дополнительные модули драйверов, используемые при работе под Linux вместе с CtrlADO, были переименованы из-за QT4:
QMYSQL3 -> QMYSQL (для MySQL 4 и более поздних версий)>
QOCI8 -> QOCI (для Oracle 9i, 10g и более поздних версий)
Ключевое слово #uses
С помощью ключевого слова #uses можно определить, какое расширение необходимо для панели или сценария. Расширение файла можно опустить, так как оно задается автоматически в зависимости от операционной системы.
#uses «CtrlADO»
Расширения, указанные в сценарии или панели, являются действительными не только в сценарии, но и в менеджере, и остаются в памяти до прекращения работы менеджера. Расширения загружаются в память с помощью ядра программы CTRL. Ключевое слово можно использовать в каждом сценарии перед функциями, а также в глобальных функциях панели. Произвольное число определений #uses можно использовать в панелях и сценариях. Обратите внимание, что открытие панелей может происходить немного дольше, когда одна или несколько больших библиотек загружаются в первый раз.
Записи в файле «config.level»
Для того, чтобы менеджер мог загрузить расширение, необходимо
- скопировать его в каталог bin (корзина) проекта «PVSS_II»,
- сделать записьв файле «config.level».
Для поиска расширений программы CTRL применяется следующий способ:
- Выполняется поиск определенного имени.
- Выполняется поиск различных расширений: «.dll», «.so», «.shlib».
- Выполняется поиск (попытка) приставки «lib». Это значит:
«lib» + запись + «.dll»
«lib» + запись + «.so»
ПРИМЕЧАНИЕ
Мы рекомендуем использовать расширение программы CONTROL без расширения имени файла в предложении #uses, так как сценарий оставляет платформу в нейтральном состоянии и может быть выполнен без изменений на всех платформах. Если вы указываете расширение, например, «CtrlADO.dll», то его будет невозможно найти при работе в Linux, так как оно будет иметь вид «CtrlADO.so». Лучше использовать #uses «CtrlADO».
ПРИМЕР
При работе с Windows можно использовать следующую конфигурационную запись для загрузки DLL:
CtrlDLL = «CtrlADO»
Сначала программа ищет эту библиотеку DLL в каталоге <<путь_проекта>/bin>. Если она там не найдена, программа продолжает поиск в каталоге <путь_КАСКАД>/bin.
Данную запись можно сделать только в секции [ui] или [ctrl]. Если динамически подключаемая библиотека DLL используется интерфейсом пользователя и программой CTRL, ее необходимо ввести в обеих секциях. Можно загрузить любое количество библиотек DLL.
Пример для CtrlExtension
Пример для CtrlExtension можно найти в папке /api/TemplateCtrlExt/ для установки «КАСКАД Цифра». Обязательно прочитайте файл README!