Тема: Информация о высоте и ширине рабочей области
Не смогли найти как программно извлечь информацию о высоте и ширине рабочей области.
Добро пожаловать на форум компании 'Авионика и Софт'. Здесь вы можете найти информацию, задать вопрос или оставить отзыв о работе компании и её продуктах.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
В новую версию САПР 'ПрагмаСофтСтудия 3.0' добавлена возможность на основе 5 встроенных типов данных (bool, int, uint, float, string) создавать новые типы данных: перечисления и структуры. Перечисления – это именованные списки константных значений. Структуры – это объединения встроенных типов данных, а также других структур и перечислений в именованные группы. Использование перечислений и структур значительно упростит и ускорит создание проектов САПР.
Предлагаем Вам ознакомиться с документацией для САПР ПрагмаСофтСтудия. При желании можете использовать её офлайн версию. В последнем обновлении появился обучающий раздел с описанием шагов по созданию небольшого индикационного элемента.
Если ранее Вы уже просматривали документацию, советуем Вам сделать очистку кэша Вашего браузера.
Авионика и Софт → Кодогенерация, Графические библиотеки, Внешний подыгрыш → Информация о высоте и ширине рабочей области
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Не смогли найти как программно извлечь информацию о высоте и ширине рабочей области.
Здравствуйте.
Ширина и высота рабочей области задаётся в профиле проекта, и предполагается, что тем, кто работает со сгенерированным программным кодом, она должна быть известна.
Боюсь что в нашем случае это предположение не верно, т.к. наша программа пишется без зависимости от конкретного объекта. То есть наша программа подключает динамически библиотеки с объектами и отображает их (по несколько на одной форме) в указанном оператором месте.
Да, но сгенерированный программный код по сути является чёрным ящиком. Он не предоставляет по запросу никому никакой информации, и с нашей точки зрения, и не должен этого делать. Работа с ним происходит по принципу: его вызвали, и он что-то сделал.
С другой стороны, мы не знаем, как организовано ваше ПО, но его ведь что-то вызывает. Что-то знает для какого объекта и с какими размерами экрана происходит вызов вашего ПО. Соответственно, указание на объект или непосредственно размеры индикационного кадра могут быть им переданы в ваше ПО. Т.е. некоторая управляющая часть может при вызове ведомых передать им определённую дополнительную информацию.
Для того чтобы "черный ящик" корректно отрисовал изображение предварительно надо задать его ширину и высоту. То есть нам вместо того чтобы использовать 1 динамическую библиотеку придется рядышком еще создавать файл в котором руками прописывать размеры объектов.
Взять хотя бы тестовое приложение, которому даешь библиотеку, а оно, соблюдая масштаб и пропорции, отрисовывает то что в библиотеке находится. Этому приложению тоже каждый раз размеры вручную указывать? Не логичнее ли брать эту информацию из самой библиотеки, как мы это делаем в том же Scade?
Говоря проще, вы предлагаете доработать кодогенерацию, чтобы она не только выполняла то, что заложено пользователем в проекте САПР, но и содержала программный код, который бы обеспечивал стыкуемую с ней графическую библиотеку некоторой вспомогательной информацией. Идея интересная, хоть и вызывает некоторые вопросы по реализации. Вполне возможно в ближайшем будущем мы это реализуем.
Да, верно, мы очень хотим чтобы при кодогенерации была информация, позволяющая отображать объекты без каких-либо дополнительных знаний. В случае со Scade это было реализовано в файлах target_configuration. Например:
в target_configuration.h:
extern unsigned long target_screen_width;
extern unsigned long target_screen_height;
extern const double ratio_x;
extern const double ratio_y;
extern const unsigned char target_rotation_mode;
extern const char *specification_name;
в target_configuration.c файле соответственно
unsigned long target_screen_width = 96;
unsigned long target_screen_height = 194;
const double ratio_x = 1.0;
const double ratio_y = 1.0;
const unsigned char target_rotation_mode = 0;
const char *specification_name = "button_cower";
Реально из этого мы использовали только target_screen_width и target_screen_height
Здравствуйте!
Данная функциональность реализована в новой версии САПР.
В интерфейсе модуля CGFormatPro 2.X в группу Paint.c/Paint.h закладки Файлы введено новое свойство Информация о профиле. Установка его в значение true позволяет в файлах Paint.c и Paint.h получить группу переменных с некоторой информацией из профиля проекта.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Авионика и Софт → Кодогенерация, Графические библиотеки, Внешний подыгрыш → Информация о высоте и ширине рабочей области
2015-2024 © ООО 'Авионика и Софт'. Все права защищены. | Форум работает на PunBB, при поддержке Informer Technologies, Inc |