ISaGRAF. Version 3.4


“C” функции преобразований - часть 5


Логическая связь между реализацией функции преобразования и использованием преобразования в проекте ISaGRAF осуществляется через имя преобразования. Функция  “объявления” добавляется в исходный “C” код функции преобразования. Эта функция вызывается только один раз, когда приложение стартует и сообщает менеджеру В/В имя преобразования, которое соответствует реализованной функции. Вот стандартный формат такой  функции объявления:

UFP cnvdef_xxx (char *name)

{

             strcpy (name, "XXX");          /* имя преобразования */

             return (CNV_xxx);                   /* возвращает функцию преобразования */

}

/* (xxx is the name of the conversion) */

Имя функции, использующееся оператором strcpy, должно быть написано заглавными буквами. Оно должно быть написано маленькими буквами в реализации функции преобразования и в имени функции объявления.

Использование префиксов ”CNV_” и “cnvdef_” для реализации функции и определения функции позволяет пользователю именовать преобразования ключевыми словами языка “C” или именами существующих функций из “C” библиотек ISaGRAF.

В функцию объявления могут быть добавлены другие операторы для того, чтобы реализовать специфические операции инициализации связанные с этим преобразованием. Система ISaGRAF гарантирует, что эта функция вызывается только однажды при запуске приложения.

Функция объявления вызывается для любой интегрированной функции преобразования, даже если она не используется в приложении ISaGRAF.  Ядро  ISaGRAF выдает ошибку, если в приложении используется не реализованная функция преобразования.

Прежде чем линковать новые функции с ядром, пользователь должен написать другой файл с исходным текстом, под именем “GRCN0LIB.C” и вставить его с сохраненной функцией преобразования в список файлов для линкера. “GRCN0LIB.C” содержит только массив функций объявления. Этот массив читается во время инициализации приложения, для того чтобы создать динамические связи с функциями преобразования написанными на “C”.


- Начало -  - Назад -  - Вперед -