电路工作状态

#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <math.h>
#include<stdlib.h>
#include <dos.h>
#include <conio.h>

typedef  enum _Cicurt_State
{ 
    Cicuit_Init_State,
    open_circuit_State,
    short_cicuit_State,
    thoroughfare_State,
}Cicurt_State;

typedef  struct _Cicurt
{
    Cicurt_State  cicurt_state;
    int Plain_conductor;
    int electronic_parts;
    int electricals;
}Cicurt;

typedef enum _Cicurt_Event
{
    Plain_conductor_open_circuit_Event,
    Plain_conductor_short_cicuit_Event,
    Plain_conductor_thoroughfare_State,

    electronic_parts_open_circuit_Event,
    electronic_parts_short_cicuit_Event,
    electronic_parts_thoroughfare_State,

    electricals_open_circuit_Event,
    electricals_short_cicuit_Event,
    electricals_thoroughfare_State_Event,

}Cicurt_Event;

typedef  struct _Fsm_Table
{
    Cicurt_Event cicurt_event;
    void(*Event_Process)(Cicurt_Event cicurt_event, Cicurt_State  cicurt_state);
}Fsm_Table;


static void  Plain_conductor_Event_Process(Cicurt_Event cicurt_event, Cicurt_State  cicurt_state)
{
    int* Plain_conductor_Cicurt_state = (int*)&cicurt_state;

    switch (*Plain_conductor_Cicurt_state)
    {
        case Cicuit_Init_State:
            break;
        case open_circuit_State:
            break;
        case short_cicuit_State:
            break;
        case thoroughfare_State:
            break;
    }

}


static void electronic_parts_Event_Process(Cicurt_Event cicurt_event, Cicurt_State  cicurt_state)
{
    int* electronic_parts_Cicurt_state = (int*)&cicurt_state;

    switch (*electronic_parts_Cicurt_state)
    {
        case Cicuit_Init_State:
            break;
        case open_circuit_State:
            break;
        case short_cicuit_State:
            break;
        case thoroughfare_State:
            break;
    }

}

static void electricals_Event_Process(Cicurt_Event cicurt_event, Cicurt_State  cicurt_state)
{
    int* electricals_state = (int*)&cicurt_state;

    switch (*electricals_state)
    {
        case Cicuit_Init_State:
            break;
        case open_circuit_State:
            break;
        case short_cicuit_State:
            break;
        case thoroughfare_State:
            break;
    }

}


static Fsm_Table  fsm_Table[] = 
{

    { Plain_conductor_open_circuit_Event,Plain_conductor_Event_Process},
    { Plain_conductor_short_cicuit_Event,Plain_conductor_Event_Process},
    { Plain_conductor_thoroughfare_State,Plain_conductor_Event_Process},
    { electronic_parts_open_circuit_Event,electronic_parts_Event_Process },
    { electronic_parts_short_cicuit_Event,electronic_parts_Event_Process },
    { electronic_parts_thoroughfare_State,electronic_parts_Event_Process },
    { electricals_open_circuit_Event,electricals_Event_Process },
    { electricals_short_cicuit_Event,electricals_Event_Process },
    { electricals_thoroughfare_State_Event,electricals_Event_Process },

};


static Cicurt_Event getCicurt_Event(Cicurt_Event  cicurt_Event)
{


    return cicurt_Event;
}

int main()
{
    Cicurt_State   cicurt_state = Cicuit_Init_State;
    Cicurt_Event   cicurt_Event = electricals_open_circuit_Event;
    cicurt_Event  = getCicurt_Event(cicurt_Event);

    for (int i = 0; i < sizeof(fsm_Table) / sizeof(Fsm_Table);i++)
    {
        if (fsm_Table[i].cicurt_event == cicurt_Event)
        {
            fsm_Table[i].Event_Process(cicurt_Event, Cicuit_Init_State);
        }
    }

    while (1);

    return 0;
}
一勤天下无难事。
原文地址:https://www.cnblogs.com/nowroot/p/12864568.html