ヘルプセンターヘルプセンター
“列挙”ははたの値制约れるれるデータ。“列挙データ”は,“列挙型の値" のセットを定義する MATLAB®クラスです。各列挙型の値は、ソフトウェアが生成コード内で内的に使用する“列挙型名前”と“使用可能”から构成れます。はは基础颜色と名付けられた列挙データ型用の MATLAB クラス定義です。これはこの節の例に使用されます。
基础颜色
classDef basiccolors
列挙データ型と Simulink®モデル内での使用法に関する基本的な情報については、Simulink モデルでの列挙型データの使用を参照してください。Stateflow®チャート内の列挙データ型の詳細については、列挙データ型定义(状态流)を参照してください。
列挙に対しを指定ことにより以下可能。。。
スーパークラスによるコードでの列挙データ型のサイズ制御制御
RAM/ROMの使用量削减削减
コードの移植の向上
レガシ コードとの統合の改善
次の整数データ型を指定できます。
int8
uint8
int16
uint16
int32
Simulink.IntEnumType。お使いのハードウェア プラットフォームの符号付き整数の範囲にある値を指定します。
Simulink.IntEnumType
整数データ型のサイズを指定するには、整数データ型から列挙型クラスを導出します。
classdef颜色枚举红色(0)绿色(1)蓝色(2)结尾结尾
コードジェネレーター次コードを生成し。。
typedef int8_t颜色;#Define Red(((颜色)0)#Define Green((颜色)1)#Define Blue(((颜色)2)
Simulink.defineIntEnumType
整数データ型のサイズを指定するには、名前と値のペアStorageTypeを整数型として指定。。
StorageType
金宝appsimulink.defineintenumtype('颜色',{'红色的',,,,“绿色”,,,,'蓝色的'},。。。[0;1;2],'storageType',,,,'int8')
列挙データするモデルからコードをする场合以下静的メソッドメソッドをを実装実装実装しして,,中および生成生成さされれたたコード
getDefaultValue— 列挙データ型の既定値を指定します。
getDefaultValue
GetDescription— 列挙データ型の記述を指定します。
GetDescription
Getheaderfile— 生成されたコードに型を定義するヘッダー ファイルを指定します。
Getheaderfile
getDataScope- 生成コードデータのをのヘッダーにししたり,ヘッダーファイルからエクスポートエクスポートするかかどうどうかかを。
getDataScope
AddClassNametoenumnames— 生成コードでクラス名を接頭辞にするかどうかを指定します。
AddClassNametoenumnames
このメソッドうち最初のであるであるgetDefaultValueはシミュレーションコードの両方关连しており,既定の列挙値の指定で说明てます。その他他はコードにのみのみ关连ししますます。。。列挙列挙のの动作ををカスタマイズカスタマイズカスタマイズするするするにには方法(静态)セクションにます型をしない场合は,方法(静态)セクションをます以下の表,メソッドそれぞれ与えるデータののです。
方法(静态)
''
列挙型するヘッダーの名前を文字。。。
既定では、生成された#包括命令は,<および>の代わりに、プリプロセッサの区切り記号である“を使用します。命令#include を生成するには、カスタムの戻り値を''として指定します。
#包括
<
>
“
#include
'汽车'
“出口”
'Imported'
错误的
真的
列挙データの说明指定するに,メソッドを列挙型のクラスの方法(静态)セクションに含め。
函数retval = getDescription()%getDescription数据类型的可选描述。retval ='描述';结尾
MATLAB 文字ベクトルをdescriptionに置き換えます。列挙型を定義する生成コードには指定された説明が含まれます。
description
生成コード列挙のデータ型を,外部ファイルで定义されるれるようにするするには,,以下以下以下の方法(静态)セクションに含め。
功能retval =Getheaderfile()% GETHEADERFILE Specifies the file that defines this type in generated code.%方法getDataScope确定指定文件的重要性。retval ='imported_enum_type.h';结尾功能retval =getDataScope()%getDataScope指定生成的代码导入还是导出此类型。% Return one of:%'auto':在Model_Types.h中定义类型,或导入如果指定标题文件% 'Exported': define type in a generated header file% 'Imported': import type definition from specified header file%如果您不定义此方法,DataScope默认情况下为“自动”。retval ='Imported';结尾
模型_types.hで型を定義する (既定の動作) のではなく、生成コードは次のように#包括ステートメントをてされたヘッダー定义をインポートし。。
模型_types.h
模型
#include“导入_enum_type.h”
コードのインポートれたファイル作成され。列挙型ののデータ型型を定义Getheaderfileによって指定た名をしてヘッダーをしなければなりませ。。
既存の C コード列挙型に対応する Simulink 列挙型を作成するには、関数金宝appsimulink.importexternalctypesを使用します。
金宝appsimulink.importexternalctypes
列挙型を定义するファイル别に生成には,,以下ののメソッドをを列挙の方法(静态)セクションに含め。
功能retval =getDataScope()%getDataScope指定生成的代码导入还是导出此类型。% Return one of:%'auto':在Model_Types.h中定义类型,或导入如果指定标题文件% 'Exported': define type in a generated header file% 'Imported': import type definition from specified header file%如果您不定义此方法,DataScope默认情况下为“自动”。retval =“出口”;结尾功能retval =Getheaderfile()% GETHEADERFILE Specifies the file that defines this type in generated code.%方法getDataScope确定指定文件的重要性。retval ='exported_enum_type.h';结尾
生成コード列挙定义をされたヘッダーファイルexported_enum_type.hにエクスポートし。
exported_enum_type.h
既定の設定では、生成コード内の列挙型の値は列挙型クラス定義内のものと同じ名前をもちます。その代わりに、コードがクラス名による接頭辞を列挙型クラス内のすべての列挙型の値に追加することもできます。この方法を使用して、識別子の競合を回避したり、コードの読みやすさを向上させることもできます。クラス名に追加する接頭辞を指定するには、このメソッドを列挙型クラスの方法(静态)セクションに含め。
功能retval =AddClassNametoenumnames()% ADDCLASSNAMETOENUMNAMES Specifies whether to add the class name% as a prefix to enumeration member names in generated code.% Return true or false.%如果您不定义此方法,则不会添加前缀。retval = true;结尾
戻り値を真的に指定して、クラス名の接頭辞追加を有効にするか、错误的に指定して接頭辞追加を抑制します。真的を指定する場合、クラス内の列挙型の各値は、EnumTypename_enumnameとして生成コード内で表示されます。列挙データ型の列挙型の例基础颜色についてはコードのデータ型は次ようなる场合ががます。
EnumTypename_enumname
#ifndef _defined_typedef_for_basiccolors_ #define _defined_typedef_for_for_basiccolors_ typeDef enum {basiccolors_red = 0, / *默认值 * / basiccolors_yellow = 1,basiccolors_blue_blue_blue_blue = 2,basiccolors;#万一
列挙型の名基础颜色は列挙のそれぞれに接头辞表示されます。
ヘッダーから型をインポートとき,コード生成中に列挙列挙型型メンバーメンバー名名名をを使用するかかをを制御制御できできますます。。重复重复するする列挙列挙列挙列挙型メンバーは,,,,[重复する型名]をしコード生成に异なる异なる型で重复列挙メンバー名名を许可许可许可许可するするか,エラーエラーまたはまたは警告警告警告メッセージメッセージを生成生成ししますStorageTypeを持ち次仕様持つ场合に使用できます。
DataScopeが'Imported'に设定さている
DataScope
StorageTypeが'int8','int16','int32','uint8',または'uint16'に设定さている
'int8'
'int16'
'int32'
'uint8'
'uint16'
价值は同じである
价值
以下にを示します。
typedef int32_t enum {red = 0,Yellow = 1,blue = 2,} a;typedef int32_t enum {black = 0,yellow = 1,white = 2,} b;
一种
b
黄色的
列挙型基础颜色を定义し。を使用て生成れたたコードで型定义を実装実装するするように指定指定
枚举ブロック。ネイティブ型は列挙型基となる整数型。
枚举
typedefステートメントと一連の#定义マクロ。typedefステートメントは,int8などの特定の整数データ型の列挙型名を基にします。マクロにより、列挙型メンバーは基となる整数値に関連付けられます。
typedef
#定义
枚举ブロックを使用して型定義を実装するには、次を行います。
Simulink で、スクリプト ファイル内でclassdefブロックをし列挙型定义します。型Simulink.IntEnumTypeから列挙を导出し。。
classdef
または,关数Simulink.defineIntEnumTypeを使用します。プロパティStorageTypeは指定ないでください。
コードをする场合は,枚举ブロックに型定義が表示されます。
#ifndef _DEFINED_TYPEDEF_FOR_BasicColors_ #define _DEFINED_TYPEDEF_FOR_BasicColors_ typedef enum { Red = 0, /* Default value */ Yellow, Blue, } BasicColors; #endif
typedefステートメントと#定义マクロをて定义を実装する,次を行い。。
Simulink で、スクリプト ファイル内でclassdefブロックを使用し、列挙型を定義します。int8などの特定の整数型から列挙型を導出します。
または,关数Simulink.defineIntEnumTypeを使用します。int8などのの型を使用しプロパティプロパティStorageTypeを指定し。
コードをすると,ががtypedefステートメントおよび一连の#定义マクロとしてされます。
#ifndef _DEFINED_TYPEDEF_FOR_BasicColors_ #define _DEFINED_TYPEDEF_FOR_BasicColors_ typedef int8_T BasicColors; #define Red ((BasicColors)0) /* Default value */ #define Yellow ((BasicColors)1) #define Blue ((BasicColors)2) #endif
既定では、生成されたファイル模型_types.hには列挙型の型定義が含まれます。
金宝appsimulink数据类型转换ブロックは型信号を。は入力を列挙型の元となる値のいずれいずれかかににに
入力値が列挙型の値の元となる値と一致しない場合には、Simulink は安全なキャストを挿入して、入力値を列挙型の既定値に置き換えます。
Simulink Data Type Conversion ブロックまたは Stateflow ブロックのコード生成において行われる列挙型の安全なキャストを有効または無効にできます。
安全なキャストを制御するには、[整数オーバーで]ブロック パラメーターを有効または無効にします。パラメーターは以下のように動作します。
有效:Simulink は、シミュレーション中に一致しない入力値を列挙値の既定値と置き換えます。安全なキャストの関数がコード生成中に生成されます。
无效:一致しない入力値に対して、Simulink はシミュレーション中にエラーを生成します。安全なキャストの関数がコード生成中に省略されます。この場合、コードはより効率的になります。ただし、このコードは実行時エラーに対してはより脆弱になります。
この例では、列挙値基础颜色に対する安全なの关数int32_T ET08_safe_cast_to_BasicColors32ビットビット生成される,コードでどのように使用されているいるかを示してて
int32_T ET08_safe_cast_to_BasicColors
static int32_T ET08_safe_cast_to_BasicColors(int32_T input) { int32_T output; /* Initialize output value to default value for BasicColors (Red) */ output = 0; if ((input >= 0) && (input <= 2)) { /* Set output value to input value if it is a member of BasicColors */ output = input; } return output; }
ブロックの[整数オーバーで]パラメーターが场合に,この关数生成には使用されません。
生成されたコードでは、ログ列挙型データはサポートされません。
枚举|Simulink.defineIntEnumType|Simulink.data.getEnumTypeInfo
Simulink.data.getEnumTypeInfo
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select:。
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英语)以获得最佳场地性能。其他Mathworks乡村网站未针对您所在的访问进行优化。
Contact your local office