Для поддержки пользовательской обработки файлов предоставляются следующие файлы:
: Библиотека функций TLC, реализующая API шаблона кода. matlabroot
/ rtw/c/tlc/mw/codetemplatelib.tlccodetemplatelib.tlc
также предоставляет подробную документацию API в заголовках комментариев, предшествующих каждой функции.
Пример пользовательского шаблона обработки файлов (CFP), который следует использовать в качестве начальной точки для создания собственных шаблонов CFP. Инструкции и примеры для создания шаблона CFP приведены в разделе «Генерация исходных и заголовочных файлов с пользовательским шаблоном обработки файлов» (CFP).matlabroot
/ toolbox/rtw/targets/ecoder/example_file_process.tlc
Файлы TLC, поддерживающие генерацию односкоростных и многоклассных основных программных модулей (см. Пользовательская настройка Генерация основного программного модуля).
После создания шаблона CFP необходимо интегрировать его в процесс генерации кода с помощью поля редактирования шаблона индивидуальной настройки файла. См. «Задание шаблонов для генерации кода».
Пользовательский шаблон обработки файлов (CFP) накладывает простую структуру на процесс генерации кода. Шаблон, файл шаблона генерации кода (CGT), разделяет код, сгенерированный для каждого файла, на несколько разделов. Эти разделы представлены во встроенных лексемах CGT и соответствующих секциях кода и подразделах, определенных для встроенных разделов.
Код для каждого раздела собирается в буферы и затем излучается в указанном порядке в создаваемый файл.
Чтобы сгенерировать раздел файла, ваш шаблон CFP должен сначала собрать код, который будет сгенерирован в буфер. Затем, чтобы излучить раздел, ваш шаблон вызывает функцию TLC
LibSetSourceFileSection(fileH, section, tmpBuf)
где
fileH
- ссылка на файл, который генерируется.
section
является секцией кода или подразделом, которому должен быть выдан код. раздел должен быть одним из имен разделов или подсекций, перечисленных в подразделах, определенных для встроенных разделов.
Определите section
аргумент следующего содержания:
Если подразделы, определенные для встроенных сечений, не определяют подразделы для данного сечения, используйте имя сечения как section
аргумент.
Если Subsections Defined for Built-In Sections задает один или несколько подсекций для данного сечения, можно использовать имя сечения или подсекция в качестве section
аргумент.
Если вы определили пользовательскую лексему, обозначающий пользовательский раздел, не вызывайте LibSetSourceFileSection
. Специальные вызовы API предусмотрены для пользовательских разделов (см. «Генерация пользовательского раздела»).
tmpBuf
- буфер, содержащий код, который будет испускаться.
Нет необходимости генерировать все доступные разделы. Ваш шаблон должен сгенерировать только разделы, которые вы требуете в конкретном файле.
Обратите внимание, что проверка легальности или синтаксиса не выполняется для пользовательского кода в каждом разделе.
Типичные примеры использования см. в разделе «Генерация исходных и заголовочных файлов с помощью пользовательского шаблона обработки файлов (CFP)».
Embedded Coder ® предоставляет расширяемый API для увеличения сгенерированного кода и генерации дополнительных файлов. Параметр конфигурации модели Шаблон индивидуальной настройки файла задает пользовательский скрипт Target Language Compiler (TLC), который выполняется в конце процесса генерации кода. Используя этот скрипт, можно сгенерировать дополнительный код для интерфейса с кодом приложения.
В этом примере файл скрипта TLC rtwdemofileprocess.tlc
создает дополнительную функцию точки входа, rtwdemo_fileprocess
, который вызывает функцию step и инициализирует модель, при необходимости. Функция инициализации прозрачна для вызывающего абонента.
1. Откройте пример модели rtwdemo_fileprocess
.
open_system('rtwdemo_fileprocess');
2. Проверьте, что для параметра конфигурации модели File customization template задано значение rtwdemofileprocess.tlc
дважды кликнув желтую кнопку с меткой View Templates Configuration.
3. Сгенерируйте код.
4. Смотрите сгенерированный код. Дополнительная функция, rtwdemo_fileprocess
, появляется в конце сгенерированного файла rtwdemo_fileprocess.c
. Точка входа объявлена extern
в rtwdemo_fileprocess.h
как rtwdemofileprocess.tlc
задает скрипт.