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); }
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)); }
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();//屏幕刷新启动 }
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(); } } }
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; }
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); }
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; }
public CarSignalTranslator(ISignalMonitor monitor) : base(monitor) { }
public SignalDisplay(ISignalMonitor mon) { InitializeComponent(); monitor = mon; monitor.RegMonitor(this); }
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); }
public static ITranslator CreateTranslater(AssemblyInfoPair info, ISignalMonitor monitor) { return(CreateTranslater(info.AssemblyName, info.ClassName, monitor)); }
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); }
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); }