下記の様な2次元配列を使っていますが、動作が良く分からないので御教授をお願いします。
st_g.u1_mode_system = (gp_u1_def_action[u1_event][st_g.u1_mode_system])(g_u1_def_state[u1_event][st_g.u1_mode_system], u1_id);
には、unsigned char の8ビットの値が入るのでしょうか?
又、関数のアドレスの2次元配列とはどういう使い方になるのでしょうか? そもそも、2次元配列を使って何がしたいのか良く分かりません。
御教授お願いします。
###発生している問題・エラーメッセージ
エラーメッセージ
st_g.u1_mode_system = (gp_u1_def_action[u1_event][st_g.u1_mode_system])(g_u1_def_state[u1_event][st_g.u1_mode_system], u1_id);
には、unsigned char の8ビットの値が入るのでしょうか?
又、関数のアドレスの2次元配列とはどういう使い方になるのでしょうか? そもそも、2次元配列を使って何がしたいのか良く分かりません。
御教授お願いします。
#define MTR_MODE_INACTIVE (0x00)
#define MTR_MODE_ACTIVE (0x01)
#define MTR_MODE_ERROR (0x02)
#define MTR_SIZE_STATE (3)
#define MTR_EVENT_STOP (0x00)
#define MTR_EVENT_RUN (0x01)
#define MTR_EVENT_ERROR (0x02)
#define MTR_EVENT_RESET (0x03)
#define MTR_SIZE_EVENT (4)
typedef struct
{
volatile unsigned char u1_mode_system; /* system mode /
volatile unsigned short u2_run_mode; / drive mode /
volatile unsigned short u2_error_status; / error status */
・
・
・
} MTR_ST_LESS_120;
MTR_ST_LESS_120 st_g;
static unsigned char (* gp_u1_def_action[MTR_SIZE_EVENT][MTR_SIZE_STATE])(unsigned char u1_state, unsigned char u1_id) = {
{ mtr_act_none, mtr_act_inactive, mtr_act_none }, /* 0:STOP /
{ mtr_act_active, mtr_act_none, mtr_act_none }, / 1:RUN /
{ mtr_act_error, mtr_act_error, mtr_act_none }, / 2:ERROR /
{ mtr_act_reset, mtr_act_error, mtr_act_reset },}; / 3:RESET */
static const volatile unsigned char g_u1_def_state[MTR_SIZE_EVENT][MTR_SIZE_STATE] = {
{ MTR_MODE_INACTIVE, MTR_MODE_INACTIVE, MTR_MODE_ERROR }, /* 0:STOP /
{ MTR_MODE_ACTIVE, MTR_MODE_ACTIVE, MTR_MODE_ERROR }, / 1:RUN /
{ MTR_MODE_ERROR, MTR_MODE_ERROR, MTR_MODE_ERROR }, / 2:ERROR /
{ MTR_MODE_INACTIVE, MTR_MODE_ERROR, MTR_MODE_INACTIVE },}; / 3:RESET */
st_g.u1_mode_system = (gp_u1_def_action[u1_event][st_g.u1_mode_system])(g_u1_def_state[u1_event][st_g.u1_mode_system], u1_id);
###試したこと 課題に対してアプローチしたことを記載してください ###補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/29 00:34
2016/08/29 01:06