Тема: Внешние функции
Добрый день! Подскажите, пожалуйста, как подключить функцию из внешнего модуля?
Добро пожаловать на форум компании 'Авионика и Софт'. Здесь вы можете найти информацию, задать вопрос или оставить отзыв о работе компании и её продуктах.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
В новую версию САПР 'ПрагмаСофтСтудия 3.0' добавлена возможность на основе 5 встроенных типов данных (bool, int, uint, float, string) создавать новые типы данных: перечисления и структуры. Перечисления – это именованные списки константных значений. Структуры – это объединения встроенных типов данных, а также других структур и перечислений в именованные группы. Использование перечислений и структур значительно упростит и ускорит создание проектов САПР.
Предлагаем Вам ознакомиться с документацией для САПР ПрагмаСофтСтудия. При желании можете использовать её офлайн версию. В последнем обновлении появился обучающий раздел с описанием шагов по созданию небольшого индикационного элемента.
Если ранее Вы уже просматривали документацию, советуем Вам сделать очистку кэша Вашего браузера.
Авионика и Софт → Использование → Внешние функции
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Добрый день! Подскажите, пожалуйста, как подключить функцию из внешнего модуля?
Здравствуйте!
Опишите, пожалуйста, более подробно, что вы имеете в виду. В каком виде функция и в целом для чего предназначается? Модуль – это dll файл или что-то другое?
Модуль - это "*.c"-файл. Необходимо использовать функцию, описанную в нём, в проекте САПР. Можем ли мы это сделать?
Да, конечно. Элементы функций вычисления и прорисовки имеют ряд полей свойств, объединённых в группу Внешний код. Это как раз механизм, позволяющий заменить автоматически создаваемый кодогенератором программный код вашим.
Далее возможны разные варианты. Можно отказаться от генерации пролога и эпилога функции и полностью задать свой вид её программного кода с вызовом интересующей Вас внешней функции и размещением в начале Вашего кода
#include "ваш_файл"
на внешний *.h или *.c файл.
Или сохранить пролог и эпилог функции САПР, а include на внешний файл разместить в прологе всего Paint.c файла, указав это в настройках кодогенератора в закладке Файлы в группе Paint.h/Paint.c .
Спасибо за помощь! У нас получилось. Единственная просьба: в справочном пособии ничего не сказано о внешних функциях, не могли бы вы добавить в него описание их использования?
Вам спасибо! Постараемся скоро это сделать.
Еще один вопрос. Как нам нарисовать произвольный (в том числе невыпуклый) закрашенный многоугольник?
С помощью полосного или веерного полигонов, или их комбинацией.
Добрый день.
Не могли бы вы помочь с этим же вопросом. Как после этих действий:
Можно отказаться от генерации пролога и эпилога функции и полностью задать свой вид её программного кода с вызовом интересующей Вас внешней функции и размещением в начале Вашего кода
#include "ваш_файл"
на внешний *.h или *.c файл.
Можно вызвать функцию описанную в подключенном *.с файле?
Здравствуйте!
Да, на месте "ваш_файл" может быть указан путь к файлу с любым расширением или без него. Важно, что при компиляции строка
#include "ваш_файл"
будет полностью заменена содержимым вашего файла. При этом, вставляемый файл, естественно, должен содержать и тело функции САПР, программный код которой вы подменяете своим.
Тело функции САПР имеет какую-то структуру? Можно какой-нибудь простейший пример *.c файла, который можно будет подключить к проекту?
Возьмём для примера демонстрационный проект Barrel. Ссылка на него имеется в окне САПР Начальная страница. Проект включает в себя две функции прорисовки. Остановимся на DrawScaleUnitTop. После кодогенерации проекта в файле Paint.c функция будет иметь вид:
void DrawScaleUnitTop(
int32 iy, /* смещение по Y */
int32 inumber) /* отображаемое число */
{
}
Программный код тела функции опустим, он не имеет значения, важен её пролог и эпилог. Такой вид позволит созданному кодогенератором программному коду скомпилироваться, а начинку функции вы укажите свою такой, какая вам необходима.
Теперь, что вам нужно сделать. Выделите в проекте САПР в окне Функции функцию прорисовки или вычисления, которую вы хотите подменить. В окне Свойства в группе Внешний код поле Создание установите в значение Создавать, а поле Пролог, эпилог в значение Не добавлять. После этого в поле Программный код задайте текст
#include "function.c"
Имя файла function.c может быть любым, а также содержать абсолютный или относительный путь перед ним.
Создайте файл с именем function.c и разместите его в папке, куда вы выполняете кодогенерацию. Т.е. он должен лежать рядом с файлом Paint.c, который будет ссылаться на него. В файле вы можете размещать любой нужный вам программный код. Важно, чтобы там также находился пролог и эпилог функции САПР, свойства которой вы только что изменили. Получить их можно, например, выполнив кодогенерацию, установив перед этим поле свойств функции Пролог, эпилог в значение Добавлять. В файле Paint.c при этом будет создан программный код вашей функции без содержимого, только её пролог и эпилог. Скопируйте их в файл function.c.
В результате после кодогенерации в файле Paint.c вместо вашей функции будет находиться текст
#include "function.c"
а в файле function.c уже сама функция со всем тем содержимым, которое вы заходите в неё добавить.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Авионика и Софт → Использование → Внешние функции
2015-2024 © ООО 'Авионика и Софт'. Все права защищены. | Форум работает на PunBB, при поддержке Informer Technologies, Inc |