列挙型を使用する LED 制御関数のコードの生成
この例では、列挙型を使用する関数のコードを生成する方法を示します。この例での列挙型は基本データ型の int32 を継承します。基本データ型には int8、uint8、int16、uint16、int32 または uint32 を使用できます。
列挙型の sysMode を定義します。これを MATLAB® パス上の sysMode.m に保存します。
type sysMode.mclassdef sysMode < int32
enumeration
OFF(0),
ON(1)
end
end
列挙型の LEDcolor を定義します。これを MATLAB パス上の LEDcolor.m に保存します。
type LEDcolor.mclassdef LEDcolor < int32
enumeration
GREEN(1),
RED(2)
end
end
関数 displayState を定義します。この関数は列挙データを使用し、デバイスの状態に基づいて LED 表示を有効にします。displayState は ON の状態を示すために緑色の LED 表示を点灯します。また、OFF の状態を示すために赤色の LED 表示を点灯します。
type displayState.mfunction 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/*
* File: displayState_types.h
*
* MATLAB Coder version : 25.1
* C/C++ source code generated on : 13-Jul-2025 16:34:02
*/
#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)