Сгенерируйте представления Simulink пользовательских типов данных, заданных C или Кодом С++
importInfo = Simulink.importExternalCTypes(headerFiles)
importInfo = Simulink.importExternalCTypes(modelName)
importInfo = Simulink.importExternalCTypes(___,Name,Value)
анализирует C или заголовочные файлы C++ (importInfo
= Simulink.importExternalCTypes(headerFiles
).h
или .hpp
) идентифицированный headerFiles
для typedef
, struct
и определений типа enum
, и генерирует представления Simulink® типов. Вывод, importInfo
, идентифицирует успешно и неудачно импортированные типы.
Можно использовать представления Simulink:
Снова используйте свой существующий алгоритмический код С и, посредством симуляции, протестируйте ее взаимодействие со своим алгоритмом управления Simulink. Для примера, который показывает, как использовать Legacy Code Tool, смотрите, Интегрируют Функцию C, Аргументы Которой Являются Указателями на Структуры.
Сгенерируйте код (Simulink Coder™), который снова использует типы и данные, которые задает ваш существующий код. Можно затем интегрировать и скомпилировать сгенерированный и существующий код в отдельное приложение. Для примера смотрите, обмениваются Структурированными и Перечислимыми Данными Между Сгенерированным и Внешним Кодом (Embedded Coder).
Создайте и организуйте данные (сигналы, параметры и состояния) в модели при помощи стандартных типов данных, которые ваша организация задает в коде С.
Чтобы создать структуры сигналов в Simulink, используйте невиртуальные шины. Смотрите Начало работы с Шинами.
Чтобы создать структуры параметров, используйте структуры MATLAB® и объекты Simulink.Parameter
. Смотрите Организуют Связанные Определения Параметров блоков в Структурах.
Чтобы создать перечисленные данные, смотрите Использование Перечислимые Данные в Моделях Simulink.
Чтобы совпадать с примитивным оператором typedef
, используйте объект Simulink.AliasType
установить параметр и типы данных сигнала в модели.
По умолчанию, функция:
Импортирует перечислимый тип путем генерации файла скрипта, который выводит класс перечисления от Simulink.IntEnumType
, как описано в Задают Перечисления Simulink. При необходимости можно затем отредактировать определение класса, чтобы настроить его (например, путем реализации метода addClassNameToEnumNames
).
Импортирует тип структуры путем генерации объекта Simulink.Bus
в базовом рабочем пространстве.
Импортирует примитивный оператор typedef
путем генерации объекта Simulink.AliasType
в базовом рабочем пространстве.
Интерпретирует типичные типы данных C, такие как int
или short
, согласно размерам слова вашего хоста - компьютера. Например, для большинства современных машин, int
имеет 32-битный размер слова, таким образом, функция представляет поле структуры int
как элемент шины, который использует тип данных Simulink int32
.
Чтобы заменить это поведение по умолчанию, идентифицируйте свою плату целевого компьютера при помощи аргумента пары HardwareImplementation
.
Для получения дополнительной информации о поведении по умолчанию смотрите Советы.
генерирует представления Simulink пользовательских типов данных C путем анализа модели, которую вы идентифицируете с importInfo
= Simulink.importExternalCTypes(modelName
)modelName
. Когда вы будете использовать параметры конфигурации Simulation Target в модели, чтобы идентифицировать заголовочные файлы для включения во время симуляции, используйте этот синтаксис, чтобы импортировать типы в целях симуляции модели на вашем хосте - компьютере. Функция интерпретирует типичные типы данных C согласно размерам слова вашего хоста - компьютера.
Когда вы используете этот синтаксис, не используйте парные аргументы, такие как HardwareImplementation
, который может конфликтовать с параметрами конфигурации целевой модели. Когда вы используете такие парные аргументы с этим синтаксисом, функция генерирует предупреждение.
задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Можно использовать этот синтаксис для:importInfo
= Simulink.importExternalCTypes(___,Name,Value)
Задайте имена типов, чтобы импортировать при помощи аргумента пары Names
.
Управляйте способом, которым Simulink хранит импортированные типы, например, путем генерации типов в словаре данных Simulink. Используйте MATFile
и аргументы пары DataDictionary
.
Управляйте способом, которым функция интерпретирует типичные типы данных C. Используйте аргумент пары HardwareImplementation
.
Поддержите синхронию между определениями кода С и представлениями Simulink путем попытки импортировать обновленные определения кода С снова. Можно выбрать, перезаписать ли существующие представления Simulink. Используйте Overwrite
и аргументы пары Verbose
.
Функция не поддерживает:
Типы данных C, которые не соответствуют типу, который поддерживает Simulink. Например, Simulink не распознает эквивалент за long double
. Для получения информации о типах данных, которые поддерживает Simulink, смотрите Типы данных, Поддержанные Simulink.
Типы указателей, такие как структура, которая задает поле, значение которого является указателем или оператором typedef
, базовый тип которого является типом указателя.
Структуры, которые задают поле, значение которого имеет больше чем одну размерность.
Если значение поля является 1D массивом, функция создает элемент шины, который представляет вектор, не матрицу.
Объединения.
Если поле структуры представляет данные фиксированной точки, или если оператор typedef
сопоставляет с базовым типом фиксированной точки, функция устанавливает тип данных соответствующего элемента шины или объекта Simulink.AliasType
к соответствующему целочисленному типу Simulink (такому как int16
). Средство импорта не может определить фиксированную точку, масштабирующуюся путем парсинга кода С. После использования функции необходимо вручную задать тип данных элемента шины или базовый тип объекта Simulink.AliasType
при помощи функции fixdt
.
Если график блок MATLAB function или Stateflow® в вашей модели использует импортированное перечисление или тип структуры, сконфигурируйте образцовые параметры конфигурации, чтобы включать (#include
) определение типа от вашего внешнего заголовочного файла. Смотрите Управление Импортированные Определения Шины и Перечисляемого типа (для блока MATLAB function) и доступ к Переменным Пользовательского кода и Функциям в диаграммах Stateflow (Stateflow) и Интегрируйте Пользовательские Структуры в диаграммах Stateflow (Stateflow) (для графика).
По умолчанию:
Для импортированного перечисления, потому что класс перечисления Simulink выводит от Simulink.IntEnumType
, когда вы моделируете или генерируете код из модели, перечисление использует целочисленный размер, который является нативным к вашему целевому компьютеру. Вы задаете характеристики своего целевого компьютера при помощи образцовых параметров конфигурации, таких как Production device vendor and type и Native word size in production hardware.
Для импортированного типа структуры:
Функция импортирует поле структуры, так же численно объединяют, только если поле использует один из соответствующих типов структуры Simulink Coder как тип данных. Например, если поле структуры в вашем внешнем коде использует тип данных cint8_T
, функция импортирует поле как элемент шины (объект Simulink.BusElement
), чьим типом данных является int8
и чье свойство Complexity
установлено в 'complex'
.
Для вложенных структур функция генерирует объект шины для каждого уникального типа структуры.
Для импортированного типа структуры или перечисления, если ваш внешний код использует оператор typedef
, чтобы назвать тип, имя сгенерированного объекта шины или класса перечисления Simulink совпадает с именем typedef
. Если ваш код не использует оператор typedef
, именем объекта или класса является
или struct_type
, где enum_type
type
является именем тега типа. Если вы не задаете имя тега или применяете имя typedef
, Simulink генерирует произвольное имя для объекта или класса.
Функция конфигурирует сгенерированные представления Simulink, как импортировано в целях симуляции и генерации кода. Например, для объектов шины, функция устанавливает свойство DataScope
на 'Imported'
и свойство HeaderFile
к имени вашего внешнего заголовочного файла. Чтобы моделировать или сгенерировать код из модели, которая использует одно из этих представлений Simulink, необходимо сделать заголовочный файл доступным для модели.
Когда вы задаете файлы для Simulink.importExternalCTypes
, чтобы использовать или сгенерировать, например, при помощи аргумента пары DataDictionary
:
Если существующие файлы, чтобы использовать находятся в вашей текущей папке или на пути MATLAB, вы не должны задавать путь к файлу. Можно задать имя файла отдельно.
Чтобы управлять местоположением папки сгенерированных файлов, можно задать пути, а также имена файлов. Можно также использовать аргумент пары OutputDir
.
Simulink.AliasType
| Simulink.Bus
| enumeration