列挙型を使用する LED 制御関数のコードの生成
この例では、列挙型を使用する関数のコードを生成する方法を示します。この例での列挙型は基本データ型の int32
を継承します。基本データ型には int8
、uint8
、int16
、uint16
または int32
を使用できます。
列挙型の sysMode
を定義します。これを MATLAB® パス上の sysMode.m
に保存します。
type sysMode.m
classdef sysMode < int32 enumeration OFF(0), ON(1) end end
列挙型の LEDcolor
を定義します。これを MATLAB パス上の LEDcolor.m
に保存します。
type LEDcolor.m
classdef LEDcolor < int32 enumeration GREEN(1), RED(2) end end
関数 displayState
を定義します。この関数は列挙データを使用し、デバイスの状態に基づいて LED 表示を有効にします。displayState
は ON の状態を示すために緑色の LED 表示を点灯します。また、OFF の状態を示すために赤色の LED 表示を点灯します。
type displayState.m
function led = displayState(state) %#codegen if state == sysMode.ON led = LEDcolor.GREEN; else led = LEDcolor.RED; end
displayState
の MEX 関数を生成します。displayState
が列挙データ型 sysMode
をもつ入力引数を 1 つとることを指定します。
codegen displayState -args {sysMode.ON}
Code generation successful.
MEX 関数をテストします。
displayState_mex(sysMode.OFF)
ans = LEDcolor enumeration RED
関数 displayState
のスタティック ライブラリを生成します。displayState
が列挙データ型 sysMode
をもつ入力引数を 1 つとることを指定します。
codegen -config:lib displayState -args {sysMode.ON}
Code generation successful.
codegen は既定の名前 displayState
をもつ C のスタティック ライブラリを生成します。また、既定のフォルダー codegen/lib/displayState
にサポート ファイルを生成します。
ヘッダー ファイル displayState_types.h
を表示します。
type codegen/lib/displayState/displayState_types.h
/* * Prerelease License - for engineering feedback and testing purposes * only. Not for sale. * File: displayState_types.h * * MATLAB Coder version : 5.6 * C/C++ source code generated on : 30-Jan-2023 12:47:20 */ #ifndef DISPLAYSTATE_TYPES_H #define DISPLAYSTATE_TYPES_H /* Include Files */ #include "rtwtypes.h" /* Type Definitions */ #ifndef enum_sysMode #define enum_sysMode enum sysMode { OFF = 0, /* Default value */ ON }; #endif /* enum_sysMode */ #ifndef typedef_sysMode #define typedef_sysMode typedef enum sysMode sysMode; #endif /* typedef_sysMode */ #ifndef enum_LEDcolor #define enum_LEDcolor enum LEDcolor { GREEN = 1, /* Default value */ RED }; #endif /* enum_LEDcolor */ #ifndef typedef_LEDcolor #define typedef_LEDcolor typedef enum LEDcolor LEDcolor; #endif /* typedef_LEDcolor */ #endif /* * File trailer for displayState_types.h * * [EOF] */
列挙型 LEDcolor
は C の列挙型として表現されています。これは LEDcolor
のクラス定義の基本データ型が int32
であるためです。基本データ型が int8
、uint8
、int16
または uint16
の場合、このコード ジェネレーターは列挙型に対して typedef
を生成します。また、列挙型の値に対して #define
ステートメントを生成します。次に例を示します。
typedef short LEDcolor; #define GREEN ((LEDcolor)1) #define RED ((LEDcolor)2)