Установите заданные параметры для входа в семафор в таблице замещения кода
В этом примере показано, как использовать setTflCSemaphoreEntryParameters
функция для установки заданных параметров для записи таблицы замещения кода для замены инициализации семафора.
sem_entry = RTW.TflCSemaphoreEntry; sem_entry.setTflCSemaphoreEntryParameters( ... 'Key', 'RTW_SEM_INIT', ... 'Priority', 100, ... 'ImplementationName', 'mySemCreate', ... 'ImplementationHeaderFile', 'mySem.h', ... 'ImplementationSourceFile', 'mySem.c', ... 'GenCallback', 'RTW.copyFileToBuildDir', ... 'SideEffects', true);
hEntry
- Вход в семафорThe hEntry
- указатель на запись семафора библиотеки замен кода, ранее возвращенный
.hEntry
= RTW.TflCSemaphoreEntry;
Пример: sem_entry
varargin
- Пар имя-значение аргументов для ввода функцииПример: 'Key','RTW_SEM_INIT'
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'Key','RTW_SEM_INIT'
'AcceptExprInput'
- Определяет, принимает ли функция реализации входы выраженияtrue
| false
The AcceptExprInput
значение помечает генератор кода, что функция реализации, описанная этой записью, принимает входы выражения. Значение по умолчанию true
если ImplType
равен FCN_IMPL_FUNCT
и false
если ImplType
равен FCN_IMPL_MACRO
.
Если значение true
, входы выражения интегрируются в сгенерированный код в форме, подобной этой форме:
rtY.Out1 = mySin(rtU.In1 + rtU.In2);
Если значение false
временная переменная генерируется для входного выражения:
real_T rtb_Sum; rtb_Sum = rtU.In1 + rtU.In2; rtY.Out1 = mySin(rtb_Sum);
Пример: 'AcceptExprInput',true
'AdditionalHeaderFiles'
- Задает дополнительные файлы заголовков для записи в таблицу{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalHeaderFiles
значение задает дополнительные файлы заголовков для записи таблицы замещения кода. Векторы символов или строковые массивы могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в MATLAB® рабочая область или как функция MATLAB в пути поиска файлов, который возвращает вектор символов.
Пример: 'AdditionalHeaderFiles',{}
'AdditionalIncludePaths'
- Задает дополнительные пути включения для записи таблицы{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalIncludePaths
значение задает полный путь к дополнительным путям включения для записи замены кода. Векторы символов или строковые массивы могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'AdditionalIncludePaths',{}
'AdditionalLinkObjs'
- Задает дополнительные объекты ссылки для записи в таблицу{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalLinkObjs
значение задает дополнительные объекты ссылки для записи таблицы замещения кода. Векторы символов или строковые массивы могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'AdditionalLinkObjs',{}
'AdditionalLinkObjsPaths'
- Задает дополнительные пути к объектам ссылки для записи в таблицу{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalLinkObjsPaths
значение задает полный путь к дополнительным ссылкам объекта путям для записи замены кода. Векторы символов или строковые массивы могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'AdditionalLinkObjsPaths',{}
'AdditionalSourceFiles'
- задает дополнительные исходные файлы для записи в таблицу{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalSourceFiles
значение задает дополнительные исходные файлы для записи таблицы замены кода. Векторы символов или строковые массивы могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'AdditionalSourceFiles',{}
'AdditionalSourcePaths'
- Задает дополнительные исходные пути для записи таблицы{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalSourcePaths
значение задает полный путь к дополнительным исходным путям для записи замены кода. Векторы символов или строковые массивы могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов. Значение по умолчанию является {}
.
Пример: 'AdditionalSourcePaths',{}
'AdditionalCompileFlags'
- Задает дополнительные флаги компилятора для записи в таблицу{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalCompileFlags
значение задает дополнительные флаги, необходимые для компиляции исходных файлов, определенных для записи таблицы замещения кода.
Пример: 'AdditionalCompileFlags',{}
'AdditionalLinkFlags'
- Задает дополнительные флаги линкера для записи в таблицу{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalLinkFlags
значение задает дополнительные флаги, необходимые для связи скомпилированных файлов с записью таблицы замещения кода.
Пример: 'AdditionalLinkFlags',{}
'GenCallback'
- Задает коллбэк, который следует за генерацией кода''
(по умолчанию) | 'RTW.copyFileToBuildDir'
The GenCallback
задает коллбэк, который следует за генерацией кода. Если вы задаете 'RTW.copyFileToBuildDir'
, и если эта запись функции совпадает и используется, функция RTW.copyFileToBuildDir
вызывается после генерации кода. Эта функция обратного вызова копирует дополнительные файлы заголовка, источника или объекта, которые вы указали для этой записи функции, в папку сборки.
Пример: 'GenCallback',''
'ImplementationHeaderFile'
- Задает имя файла заголовка, который объявляет функцию реализации''
(по умолчанию) | символьный вектор | строковый скалярThe ImplementationHeaderFile
значение задает имя файла заголовка, который объявляет функцию реализации. Вектор символов или строковый скаляр могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'ImplementationHeaderFile','<math.h>'
'ImplementationHeaderPath'
- Задает путь к файлу заголовка реализации''
(по умолчанию) | символьный вектор | строковый скалярThe ImplementationHeaderPath
значение задает полный путь к файлу заголовка реализации. Вектор символов или строковый скаляр могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'ImplementationHeaderPath',''
'ImplementationName'
- Задает имя функции реализации''
(по умолчанию) | символьный вектор | строковый скалярThe ImplementationName
значение задает имя функции реализации, которое может совпадать или отличаться от Key
имя.
Пример: 'ImplementationName','sqrt'
'ImplementationSourceFile'
- задает имя исходного файла реализации''
(по умолчанию) | символьный вектор | строковый скалярThe ImplementationSourceFile
значение задает имя исходного файла реализации. Вектор символов или строковый скаляр могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'ImplementationSourceFile',''
'ImplementationSourcePath'
- Задает путь к исходному файлу реализации''
(по умолчанию) | символьный вектор | строковый скалярThe ImplementationSourcePath
значение задает полный путь к исходному файлу реализации. Вектор символов или строковый скаляр могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'ImplementationSourcePath',''
'ImplType'
- Задает тип записи таблицы'FCN_IMPL_FUNCT'
(по умолчанию) | 'FCN_IMPL_MACRO'
The ImplType
значение задает тип записи таблицы. Использование FCN_IMPL_FUNCT
для функции или FCN_IMPL_MACRO
для макроса.
Пример: 'ImplType','FCN_IMPL_FUNCT'
'Key'
- Задает ключ для замены оператораThe Key
значение задает ключ для замены оператора. Имя должно совпадать с именем функции, указанным в коде, который можно заменить из кода MATLAB или кода, который можно заменить из моделей Simulink.
Пример: 'Key','RTW_OP_ADD'
'Priority'
- Задает приоритет поиска записи функции100
(по умолчанию) | целое число 0.. 100The Priority
значение задает приоритет поиска записи функции относительно других записей того же имени функции и списка концептуальных аргументов в этой таблице. Самый высокий приоритет - 0, а самый низкий - 100. Значение по умолчанию является 100. Если таблица предоставляет две реализации для функции, реализация с более высоким приоритетом затеняет ту, которая имеет более низкий приоритет.
Пример: 'Priority',100
'RoundingModes'
- Задает режимы округления, поддерживаемые функцией реализации'RTW_ROUND_UNSPECIFIED'
(по умолчанию) | 'RTW_ROUND_FLOOR'
| 'RTW_ROUND_CEILING'
| 'RTW_ROUND_ZERO'
| 'RTW_ROUND_NEAREST'
| 'RTW_ROUND_NEAREST_ML'
| 'RTW_ROUND_CONV'
| 'RTW_ROUND_SIMPLEST'
| массив векторов символов | строковые массивыThe RoundingModes
значение задает один или несколько режимов округления, поддерживаемых функцией реализации.
Пример: 'RoundingModes',{'RTW_ROUND_UNSPECIFIED'}
'SaturationMode'
- задает режим насыщения, поддерживаемый функцией реализации'RTW_SATURATE_UNSPECIFIED'
(по умолчанию) | 'RTW_SATURATE_ON_OVERFLOW'
| 'RTW_WRAP_ON_OVERFLOW'
| вектор символов | строковый скалярThe SaturationMode
значение задает режим насыщения, поддерживаемый функцией реализации.
Пример: 'SaturationMode','RTW_SATURATE_UNSPECIFIED'
'SideEffects'
- Определяет, пытаться ли оптимизировать функцию реализацииfalse
(по умолчанию) | true
The SideEffects
значение помечает генератор кода не для того, чтобы оптимизировать функцию реализации, описанную этой записью. Этот параметр применяется к функциям реализации, которые возвращают void
но не должны быть оптимизированы, например, memcpy
реализация или функция реализации, которая обращается к значениям глобальной памяти. Для этих функций реализации необходимо включить этот параметр и задать значение true
.
Пример: 'SideEffects',false
'StoreFcnReturnInLocalVar'
- Определяет, хранить ли функцию реализации независимо от настроек складывания выраженийfalse
(по умолчанию) | true
The StoreFcnReturnInLocalVar
значение помечает генератор кода, что возврат значение функции реализации, описанное этой записью, должно храниться в локальной переменной независимо от других настроек складывания выражений. Если значение false
другие настройки складывания выражения определяют, свернуто ли возвращаемое значение. Хранение функции возвращается в локальной переменной может увеличить четкость сгенерированного кода. В этом примере показан код, сгенерированный с сворачиванием выражения:
void sw_step(void) { if (ssub(sadd(sw_U.In1, sw_U.In2), sw_U.In3) <= smul(ssub(sw_U.In4, sw_U.In5),sw_U.In6)) { sw_Y.Out1 = sw_U.In7; } else { sw_Y.Out1 = sw_U.In8; } }
С StoreFcnReturnInLocalVar
установлено на true
, сгенерированный код потенциально легче понять и отладить:
void sw_step(void) { real32_T rtb_Switch; real32_T hoistedExpr; ...... rtb_Switch = sadd(sw_U.In1, sw_U.In2); rtb_Switch = ssub(rtb_Switch, sw_U.In3); hoistedExpr = ssub(sw_U.In4, sw_U.In5); hoistedExpr = smul(hoistedExpr, sw_U.In6); if (rtb_Switch <= hoistedExpr) { sw_Y.Out1 = sw_U.In7; } else { sw_Y.Out1 = sw_U.In8; } }
Пример: 'StoreFcnReturnInLocalVar',false
addAdditionalHeaderFile
| addAdditionalIncludePath
| addAdditionalLinkObj
| addAdditionalLinkObjPath
| addAdditionalSourceFile
| addAdditionalSourcepath
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.