Beispiel #1
0
        static void Main()
        {
            Type t = Type.GetType("Cn.Youdundianzi.Share.Util.Motor.MotorSignalSettings");

            CSettings settings = (CSettings)ModuleConfig.GetSettings(t, "Test.config");

            signLen             = new SignLength();
            signLen.GAN_LENGTH  = settings.SignConfig.GanLength;
            signLen.XIAN_LENGTH = settings.SignConfig.XianLength;
            signLen.CHE_LENGTH  = settings.SignConfig.CheLength;

            SimForm simForm = new Cn.Youdundianzi.Share.Util.Sim6G6X4C.SimForm();

            ISignalMonitor monitor = SignalMonitorFactory.CreateSignalMonitor("Motor.exe", "Cn.Youdundianzi.Share.Signal.Motor.MotorMonitor", settings);

            oldData = monitor.CreateMonDate(signLen);
            monitor.HotKeyHandle = simForm.Handle;
            monitor.RegMonitor(simForm);
            Program p = new Program();

            monitor.RegMonitor(p);

            ITranslator translator = TranslatorFactory.CreateTranslater("Motor.exe", "Cn.Youdundianzi.Exam.MotorSignalTranslator", monitor);
            //IStateManager sm = StateManagerFactory.CreateStateManager("Motor.exe", "Cn.Youdundianzi.Exam.State.MotorState.MotorStateManager", translator, settings);
            //IStateManager sm = StateManagerFactory.CreateStateManager("Motor.exe", "Cn.Youdundianzi.Exam.State.XA2WMotorState.MotorStateManager", translator, settings);
            IStateManager sm = StateManagerFactory.CreateStateManager("Motor.exe", "Cn.Youdundianzi.Exam.State.XA3WMotorState.MotorStateManager", translator, settings);

            sm.CurrentState = sm.EntryState;

            monitor.Start();
            Application.Run(simForm);
        }
Beispiel #2
0
 public BaseExamTranslator(ISignalMonitor monitor)
 {
     oldData      = monitor.CreateMonDate(monitor.SignalLength);
     this.monitor = monitor;
     this.monitor.RegMonitor(this);
     _examTOThread  = new Thread(new ThreadStart(ExamTimeOut));
     _stateTOThread = new Thread(new ThreadStart(StateTimeOut));
 }
Beispiel #3
0
 public static ISignalMonitor CreateSignalMonitor(string assName, string monitorName, ISettings setting)
 {
     try
     {
         Assembly       ass = Assembly.LoadFrom(assName);
         Type           t   = ass.GetType(monitorName);
         ISignalMonitor mon = (ISignalMonitor)Activator.CreateInstance(t, new object[] { setting });
         return(mon);
     }
     catch (TargetInvocationException te)
     {
         throw te.InnerException;
     }
 }
        public virtual void InitializeExamComponent(CSettings set, ISignalMonitor mon, IStateManager sm)
        {
            this.settings = set;
            this.monitor  = mon;
            this.statemgr = sm;

            gan  = new CGanFairy[set.InitPosition.NumOfGan];
            xian = new CLineFairy[set.InitPosition.NumOfXian];
            monitor.RegMonitor(this);
            statemgr.RegExamObserver(this);

            ganbm[0] = new Bitmap(settings.ModelAppearance.Gan.Normal);
            ganbm[1] = new Bitmap(settings.ModelAppearance.Gan.Error);
            ganbm[2] = new Bitmap(settings.ModelAppearance.Gan.Shield);

            for (int i = 0; i < set.InitPosition.NumOfXian; 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 < set.InitPosition.NumOfGan; i++)
            {
                gan[i]         = new CGanFairy(ganbm);
                gan[i].GanName = (i + 1).ToString();

                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();//屏幕刷新启动
        }
Beispiel #5
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            if (IsStartTest)
            {
                this.timer1.Stop();
                this.timer1.Enabled = false;
                monitor.Close();
                monitor.UnRegMonitor(this);
                monitor.HotKeyHandle = IntPtr.Zero;
                monitor.Dispose();
                monitor = null;

                GC.Collect();
                GC.WaitForPendingFinalizers();

                this.btnStart.Text      = "开始检测";
                this.comBoxType.Enabled = true;
                IsStartTest             = false;
            }
            else
            {
                IsStartTest        = true;
                this.btnStart.Text = "停止检测";
                CheckConfig();

                this.timer1.Enabled = true;
                this.timer1.Start();
                this.comBoxType.Enabled = false;

                try
                {
                    monitor = SignalMonitorFactory.CreateSignalMonitor(_monInfo, _currentSetup.Settings);
                    monitor.HotKeyHandle = this.Handle;
                    monitor.RegMonitor(this);
                    monitor.Start();
                }
                catch (InvalidCastException ice)
                {
                    MessageBox.Show("Monitor与Setting不配套。", "错误!");
                    this.Close();
                }
            }
        }
Beispiel #6
0
        public void InitializeExamComponent(ISettings set, ISignalMonitor mon, ITranslator trans, IStateManager sm)
        {
            settings   = set;
            monitor    = mon;
            translator = trans;
            statemgr   = sm;

            try
            {
                monitor.HotKeyHandle = this.ParentForm.Handle;
            }
            catch (NullReferenceException nullRefE)
            {
                throw new NullReferenceException("This control has not been put into any form. Please call InitializeExamComponent() after assigning this to a parent form.");
            }

            statemgr.RegExamObserver(this);

            monitor.Start();
        }
        public override void InitializeExamComponent(CSettings set, ISignalMonitor mon, IStateManager sm)
        {
            base.InitializeExamComponent(set, mon, sm);
            _sm       = sm as ICarStateManager;
            this.Size = new Size(520, 428);

            //1号线
            xian[0].Linex = set.InitPosition.Xian[0].X1;
            xian[0].Liney = 10;

            //2号线
            xian[1].Linex = set.InitPosition.Xian[1].X1;
            xian[1].Liney = 10;

            //3号线
            xian[2].Linex = set.InitPosition.Xian[2].X1;
            xian[2].Liney = 10;

            //4号线
            xian[3].Linex = 10;
            xian[3].Liney = set.InitPosition.Xian[3].Y1;

            //5号线
            xian[4].Linex = set.InitPosition.Xian[0].X1;
            xian[4].Liney = set.InitPosition.Xian[4].Y1;

            //6号线
            xian[5].Linex = 10;
            xian[5].Liney = set.InitPosition.Xian[5].Y1;

            //7号线
            xian[6].LineName = string.Empty;

            //8号线
            xian[7].LineName = string.Empty;

            //9号线
            xian[8].LineName = string.Empty;
        }
Beispiel #8
0
        static void Main()
        {
            CSettings settings = (CSettings)ModuleConfig.GetSettings(new CTestSettings().GetType(), "Test.config");

            signLen             = new SignLength();
            signLen.GAN_LENGTH  = settings.SignConfig.GanLength;
            signLen.XIAN_LENGTH = settings.SignConfig.XianLength;
            signLen.CHE_LENGTH  = settings.SignConfig.CheLength;

            Util.Sim6G6X4C.SimForm simForm = new Cn.Youdundianzi.Share.Util.Sim6G6X4C.SimForm();

            ISignalMonitor monitor = SignalMonitorFactory.CreateSignalMonitor("Share.exe", "Cn.Youdundianzi.Share.Signal.JKY.CTestMonitor", settings);

            oldData = monitor.CreateMonDate(signLen);
            monitor.HotKeyHandle = simForm.Handle;
            monitor.RegMonitor(simForm);
            Program p = new Program();

            monitor.RegMonitor(p);
            monitor.Start();
            Application.Run(simForm);
        }
Beispiel #9
0
        private void button4_Click(object sender, EventArgs e)
        {
            //
            //读取设置文件,准备环境设置
            //
            //用哪个setting
            SettingPair sp1 = new SettingPair();

            //sp1.ImplementClass = new MotorSignalSettings().GetType();
            sp1.ImplementClass = new TractorSignalSettings().GetType();
            sp1.FilePath       = "TractorSignal.config";

            ISettings setting  = new CSetup(sp1).Settings;
            CSettings csetting = setting as CSettings;

            //
            //创建Monitor,Translator,StateManager。
            //准备考试核心引擎
            //
            //用哪个monitor
            //AssemblyInfoPair monInfo = AssemblyInfoFactory.GetAssemblyInfo(typeof(Cn.Youdundianzi.Share.Signal.Motor.MotorMonitor));
            //AssemblyInfoPair monInfo = AssemblyInfoFactory.GetAssemblyInfo(typeof(Cn.Youdundianzi.Share.Signal.Car.OldCarMonitor));
            AssemblyInfoPair monInfo = AssemblyInfoFactory.GetAssemblyInfo(typeof(Cn.Youdundianzi.Share.Signal.Car.TractorMonitor));
            ISignalMonitor   mon     = SignalMonitorFactory.CreateSignalMonitor(monInfo, setting);

            //用哪个translator
            //AssemblyInfoPair transInfo = AssemblyInfoFactory.GetAssemblyInfo(typeof(Cn.Youdundianzi.Exam.MotorSignalTranslator));
            AssemblyInfoPair transInfo  = AssemblyInfoFactory.GetAssemblyInfo(typeof(Cn.Youdundianzi.Exam.CarSignalTranslator));
            ITranslator      translator = TranslatorFactory.CreateTranslater(transInfo, mon);

            //用哪个statemanager
            //AssemblyInfoPair stateMgrInfo = AssemblyInfoFactory.GetAssemblyInfo(typeof(Cn.Youdundianzi.Exam.State.MotorState.MotorStateManager));
            //AssemblyInfoPair stateMgrInfo = AssemblyInfoFactory.GetAssemblyInfo(typeof(Cn.Youdundianzi.Exam.State.PureLineCarState.CarStateManager));
            AssemblyInfoPair stateMgrInfo = AssemblyInfoFactory.GetAssemblyInfo(typeof(Cn.Youdundianzi.Exam.State.Tractor.TractorStateManager));
            IStateManager    stateMgr     = StateManagerFactory.CreateStateManager(stateMgrInfo, translator, setting);

            //
            //创建考试启动停止控件
            //实现单会合考试
            ExamCtrlPanel examCtrl = new ExamCtrlPanel();

            examCtrl.Location = new System.Drawing.Point(0, 0);
            this.ctrlPanel.Controls.Add(examCtrl);

            //ExamCtrl控件必须先被add到其父窗口中,然后再进行Initialize
            examCtrl.InitializeExamComponent(setting, mon, translator, stateMgr);

            //创建考试状态显示面板
            //单会合考试级别扩展功能
            ExamStatusDisplayPanel statePane = new ExamStatusDisplayPanel();

            statePane.Location    = new System.Drawing.Point(0, 100);
            statePane.BorderStyle = BorderStyle.Fixed3D;
            statePane.InitializeExamComponent(stateMgr);
            this.ctrlPanel.Controls.Add(statePane);

            //创建信号显示面板
            SignalDisplay signaldisplay = new SignalDisplay(mon);

            signaldisplay.Location = new System.Drawing.Point(0, 20);
            //sd.BorderStyle = BorderStyle.Fixed3D;
            this.ctrlPanel.Controls.Add(signaldisplay);


            //用哪个DisplayPanel
            //BaseModelDisplayPanel modelDisplayPane = new Cn.Youdundianzi.Share.Module.ModelDisplay.Car.CarModelDisplayPanel();
            BaseModelDisplayPanel modelDisplayPane = new Cn.Youdundianzi.Share.Module.ModelDisplay.Car.TractorModelDisplayPanel();

            modelDisplayPane.Location = new System.Drawing.Point(200, 0);
            modelDisplayPane.InitializeExamComponent(csetting, mon, stateMgr);
            this.ctrlPanel.Controls.Add(modelDisplayPane);

            /**
             * //初始化车型列表
             * List<string> cxList = new List<string>(2);
             * cxList.Add("A");
             * cxList.Add("B");
             *
             * //初始化排队列表
             * CandidateQuery candQuery = new CandidateQuery();
             * candQuery.Location = new System.Drawing.Point(550, 20);
             * //sd.BorderStyle = BorderStyle.Fixed3D;
             * this.ctrlPanel.Controls.Add(candQuery);
             *
             * //用哪个Candidate Infomation Panel
             * CandExamCtrl candExamPane = new Cn.Youdundianzi.Share.Module.CandidateInfo.LocalInputPanel();
             * candExamPane.Location = new System.Drawing.Point(0, 150);
             * candExamPane.InitializeCandExamCtrlComponent(examCtrl, csetting, cxList);
             * this.ctrlPanel.Controls.Add(candExamPane);
             *
             * //初始化声音控件(基础声音控件类)
             * SoundCtrl soundCtrl = new SoundCtrl();
             * candExamPane.SoundChange += new MessageDelegate(soundCtrl.PlayText);    //注册candExamCtrl的声音变化事件回调函数
             *
             * //初始化显示牌控件
             * //------------------------------------------------------------------------------
             * string LEDAssemblyFilePath = Application.StartupPath + "\\LEDDisplay.dll";
             *
             * SettingPair spDisplay = new SettingPair();
             * spDisplay.ImplementClass = AssemblyInfoFactory.GetType(LEDAssemblyFilePath, csetting.DisplayPaneConfig.DisplayConfigClass);
             * spDisplay.FilePath = csetting.DisplayPaneConfig.DisplayConfigFilePath;
             *
             * ISettings dissettings = new CSetup(spDisplay).Settings;
             * DisplayConfig dispalySetting = dissettings as DisplayConfig;
             * IDisplaycomm displaycomm = DisplayFactory.CreateDisplay(LEDAssemblyFilePath, csetting.DisplayPaneConfig.DisplayCommClass, dispalySetting);
             * candExamPane.LEDDisplayChange += new MessageDelegate(displaycomm.ShowText); //注册candExamCtrl的显示牌变化事件回调函数
             *
             *
             * //初始化摄像头
             * Camera camera = new Camera(0);
             * camera.Location = new System.Drawing.Point(200, 400);
             * camera.Size = new Size(400, 300);
             * camera.BorderStyle = BorderStyle.Fixed3D;
             * this.ctrlPanel.Controls.Add(camera);
             * candExamPane.CameraChannelChange += new IntegerDelegate(camera.SetChannel); //注册candExamCtrl的摄像头变化事件回调函数
             *
             * //结果显示控件
             * ExamResultPanel resultPanel = new ExamResultPanel();
             * resultPanel.Location = new System.Drawing.Point(0, 400);
             * resultPanel.Size = new Size(210, 110);
             * resultPanel.BorderStyle = BorderStyle.FixedSingle;
             * candExamPane.ExamResultReady += new ExamResultDelegate(resultPanel.SetResultText);
             **/
        }
 public override void InitializeExamComponent(CSettings set, ISignalMonitor mon, IStateManager sm)
 {
     base.InitializeExamComponent(set, mon, sm);
     _sm = sm as IMotorStateManager;
 }
Beispiel #11
0
 public CarSignalTranslator(ISignalMonitor monitor)
     : base(monitor)
 {
 }
Beispiel #12
0
 public SignalDisplay(ISignalMonitor mon)
 {
     InitializeComponent();
     monitor = mon;
     monitor.RegMonitor(this);
 }
Beispiel #13
0
        public static ITranslator CreateTranslater(string assName, string translatorName, ISignalMonitor monitor)
        {
            Assembly    ass   = Assembly.LoadFrom(assName);
            Type        t     = ass.GetType(translatorName);
            ITranslator trans = (ITranslator)Activator.CreateInstance(t, new object[] { monitor });

            return(trans);
        }
Beispiel #14
0
 public static ITranslator CreateTranslater(AssemblyInfoPair info, ISignalMonitor monitor)
 {
     return(CreateTranslater(info.AssemblyName, info.ClassName, monitor));
 }
Beispiel #15
0
        private void ExamFrm_Load(object sender, EventArgs e)
        {
            if (_pracConfig == null)
            {
                MessageBox.Show("ExamConfig属性未赋值。");
                this.Close();
                return;
            }

            if (IsExam)
            {
                this.Text = "考试窗口";
            }
            else
            {
                this.Text = "练习窗口";
            }

            //
            //读取设置文件,准备环境设置
            //
            //用哪个setting
            SettingPair sp = new SettingPair();

            sp.ImplementClass = AssemblyInfoFactory.GetType(PracticeConfig.Setting.ClsFilePath, PracticeConfig.Setting.ClsName);
            sp.FilePath       = PracticeConfig.Setting.ConfigFilePath;

            ISettings setting  = new CSetup(sp).Settings;
            CSettings csetting = setting as CSettings;

            //
            //创建Monitor,Translator,StateManager。
            //准备考试核心引擎
            //
            //用哪个monitor
            AssemblyInfoPair monInfo = AssemblyInfoFactory.GetAssemblyInfo(PracticeConfig.Monitor.ClsFilePath, PracticeConfig.Monitor.ClsName);

            mon = SignalMonitorFactory.CreateSignalMonitor(monInfo, setting);

            //用哪个translator
            AssemblyInfoPair transInfo = AssemblyInfoFactory.GetAssemblyInfo(PracticeConfig.Translator.ClsFilePath, PracticeConfig.Translator.ClsName);

            translator = TranslatorFactory.CreateTranslater(transInfo, mon);

            //用哪个statemanager
            AssemblyInfoPair stateMgrInfo = AssemblyInfoFactory.GetAssemblyInfo(PracticeConfig.StateManager.ClsFilePath, PracticeConfig.StateManager.ClsName);

            stateMgr = StateManagerFactory.CreateStateManager(stateMgrInfo, translator, setting);

            //
            //创建考试启动停止控件
            //实现单会合考试
            examCtrl.Anchor = AnchorStyles.None;
            examCtrl.Dock   = DockStyle.Fill;
            this.paneExamCtrl.Controls.Add(examCtrl);

            //ExamCtrl控件必须先被add到其父窗口中,然后再进行Initialize
            examCtrl.InitializeExamComponent(setting, mon, translator, stateMgr);

            //初始化声音控件(基础声音控件类)
            SoundCtrl soundCtrl = new SoundCtrl();


            //初始化显示牌控件
            SettingPair spDisplay = new SettingPair();

            spDisplay.ImplementClass = AssemblyInfoFactory.GetType(PracticeConfig.LEDConfig.ClsFilePath, PracticeConfig.LEDConfig.ClsName);
            spDisplay.FilePath       = PracticeConfig.LEDConfig.ConfigFilePath;

            ISettings     dissettings    = new CSetup(spDisplay).Settings;
            DisplayConfig dispalySetting = dissettings as DisplayConfig;

            displaycomm = DisplayFactory.CreateDisplay(PracticeConfig.LED.ClsFilePath, PracticeConfig.LED.ClsName, dispalySetting);

            //初始化摄像头
            Camera camera = new Camera(0);

            camera.Anchor = AnchorStyles.None;
            camera.Dock   = DockStyle.Fill;
            this.groupPanelVideo.Controls.Add(camera);
            this.Move        += new EventHandler(camera.Camera_Move);
            this.FormClosing += new FormClosingEventHandler(camera.Camera_Closing);

            if (IsExam)
            {
                string[] cxs = ExamConfig.LicenseList.Split(new char[] { ';' });
                //初始化车型列表
                List <string> cxList = new List <string>(cxs);

                //用哪个Candidate Infomation Panel
                CandExamCtrl candExamPane;

                if (ExamConfig.HasQueue)
                {
                    //初始化排队列表
                    CandidateQuery candQuery = new CandidateQuery();
                    candQuery.Anchor = AnchorStyles.None;
                    candQuery.Dock   = DockStyle.Fill;
                    this.paneXQueueList.Controls.Add(candQuery);

                    candExamPane = (CandExamCtrl)CreateModule(ExamConfig.ExamCtrl.ClsFilePath, ExamConfig.ExamCtrl.ClsName, new object[] { candQuery });
                }
                else
                {
                    candExamPane = (CandExamCtrl)CreateModule(ExamConfig.ExamCtrl.ClsFilePath, ExamConfig.ExamCtrl.ClsName, new object[] { });
                }

                candExamPane.Dock = DockStyle.Fill;
                candExamPane.InitializeCandExamCtrlComponent(examCtrl, csetting, cxList);
                this.groupPanelCandInfo.Controls.Add(candExamPane);

                //结果显示控件
                ExamResultPanel resultPanel = new ExamResultPanel();
                resultPanel.Anchor            = AnchorStyles.None;
                resultPanel.Dock              = DockStyle.Fill;
                candExamPane.ExamResultReady += new ExamResultDelegate(resultPanel.SetResultText);
                this.paneXResult.Controls.Add(resultPanel);

                candExamPane.SoundChange         += new MessageDelegate(soundCtrl.PlayText);   //注册candExamCtrl的声音变化事件回调函数
                candExamPane.LEDDisplayChange    += new MessageDelegate(displaycomm.ShowText); //注册candExamCtrl的显示牌变化事件回调函数
                candExamPane.CameraChannelChange += new IntegerDelegate(camera.SetChannel);    //注册candExamCtrl的摄像头变化事件回调函数
            }

            //创建考试状态显示面板
            //单会合考试级别扩展功能
            ExamStatusDisplayPanel statePane = new ExamStatusDisplayPanel();

            statePane.Anchor = AnchorStyles.None;
            statePane.InitializeExamComponent(stateMgr);
            this.paneXStatus.Controls.Add(statePane);

            //创建信号显示面板
            SignalDisplay signaldisplay = new SignalDisplay(mon);

            signaldisplay.Anchor = AnchorStyles.None;
            signaldisplay.Dock   = DockStyle.Fill;
            this.paneXSignalDisp.Controls.Add(signaldisplay);

            //用哪个DisplayPanel
            BaseModelDisplayPanel modelDisplayPane = (BaseModelDisplayPanel)CreateModule(PracticeConfig.ModelDisplay.ClsFilePath, PracticeConfig.ModelDisplay.ClsName, new object[] { });

            modelDisplayPane.Anchor = AnchorStyles.None;
            modelDisplayPane.InitializeExamComponent(csetting, mon, stateMgr);
            this.groupPanelModelDisp.Controls.Add(modelDisplayPane);
        }
Beispiel #16
0
 public override void InitializeExamComponent(CSettings set, ISignalMonitor mon, IStateManager sm)
 {
     base.InitializeExamComponent(set, mon, sm);
     _sm       = sm as ITractorStateManager;
     this.Size = new Size(520, 428);
 }