public void InitializeExamComponent(CSettings set, IMonitor mon, StateManager sm)
        {
            this.settings = (MotorSignalSettings)set;
            this.monitor  = (MotorMonitor)mon;
            this.statemgr = (IMotorStateManager)sm;

            monitor.RegMonitor(this);
            statemgr.RegExamObserver(this);

            ganbm[0] = new Bitmap(Application.StartupPath + "\\" + settings.ModelAppearance.Gan.Normal);
            ganbm[1] = new Bitmap(Application.StartupPath + "\\" + settings.ModelAppearance.Gan.Error);
            ganbm[2] = new Bitmap(Application.StartupPath + "\\" + settings.ModelAppearance.Gan.Shield);

            for (int i = 0; i < 5; i++)
            {
                gan[i]         = new CGanFairy(ganbm);
                gan[i].GanName = (i + 1).ToString();
            }

            for (int i = 0; i < 5; i++)
            {
                XianPosition x = settings.InitPosition.Xian[i];
                xian[i]          = new CLineFairy(x.X1, x.Y1, x.X2, x.Y2);
                xian[i].LineName = (i + 1).ToString();
                cdm.RegDisplay(xian[i]);
            }

            for (int i = 0; i < 5; i++)
            {
                GanPosition gp = settings.InitPosition.Gan[i];
                gan[i].X = gp.X;
                gan[i].Y = gp.Y - 10;
                cdm.RegDisplay(gan[i]);
            }

            che = new CBmpFairy(settings.ModelAppearance.Che.Normal);
            cdm.RegDisplay(che);

            ResetElements();

            stateDuration = new int[4];

            stateDuration[0] = settings.StateDuration[0];
            stateDuration[1] = settings.StateDuration[1];
            stateDuration[2] = settings.StateDuration[2];
            stateDuration[3] = settings.StateDuration[3];

            timer       = new Timer();
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();//屏幕刷新启动
        }