Exemplo n.º 1
0
        /// <summary>获取一个(新创建的)UI控件</summary>
        public JFRealtimeUI GetRealtimeUI()
        {
            UcLightCtrl_T ui = new UcLightCtrl_T();

            ui.SetModule(this, null, null);
            return(ui);
        }
Exemplo n.º 2
0
        /// <summary>调试所选设备</summary>
        private void btDebug_Click(object sender, EventArgs e)
        {
            if (null == dgvDevs.SelectedRows || 0 == dgvDevs.SelectedRows.Count)
            {
                MessageBox.Show("请先选择需要调试的" + InitorCaption + "对象");
                return;
            }
            IJFInitializable initor  = JFHubCenter.Instance.InitorManager[dgvDevs.SelectedRows[0].Cells[0].Value.ToString()];
            Type             devType = initor.GetType();

            if (chkSelfUI.Checked)
            {
                if (!typeof(IJFRealtimeUIProvider).IsAssignableFrom(devType))
                {
                    MessageBox.Show(InitorCaption + "对象未提供自带调试界面,请取消\"自带界面\"后重试!");
                    return;
                }

                if (typeof(IJFStation).IsAssignableFrom(devType))
                {
                    Form fmStationDebug = (initor as IJFStation).GenForm();
                    if (null == fmStationDebug) //工站自身未提供界面
                    {
                        if (DialogResult.Cancel == MessageBox.Show("工站对象未提供调试界面,是否使用通用界面?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information))
                        {
                            return;
                        }
                        if (typeof(JFStationBase).IsAssignableFrom(devType))
                        {
                            FormStationBaseDebug fmSB = new FormStationBaseDebug();
                            fmSB.Text = (initor as JFStationBase).Name + " Debug";
                            fmSB.SetStation(initor as JFStationBase);
                            fmSB.TopMost = true;
                            fmSB.Show();
                            return;
                        }
                        else
                        {
                            //JFRealtimeUI ucST = (initor as IJFRealtimeUIProvider).GetRealtimeUI();
                            //ucST.Dock = DockStyle.Fill;
                            UcStationRealtimeUI ucST = new UcStationRealtimeUI();
                            ucST.Dock = DockStyle.Fill;
                            ucST.AllowedStartStopCmd = true;
                            ucST.SetStation(initor as IJFStation);
                            FormJFRealTimeUI fmST = new FormJFRealTimeUI();
                            fmST.Text = dgvDevs.SelectedRows[0].Cells[0].Value.ToString() + " Debug";
                            fmST.Size = ucST.Size;
                            fmST.SetRTUI(ucST);
                            //fm.Controls.Add(uc);
                            fmST.Show();
                            return;
                        }
                    }
                    else
                    {
                        fmStationDebug.FormBorderStyle = FormBorderStyle.Sizable;
                        fmStationDebug.TopMost         = true;
                        fmStationDebug.Show();
                        return;
                    }
                }

                JFRealtimeUI uc = (initor as IJFRealtimeUIProvider).GetRealtimeUI();
                uc.Dock = DockStyle.Fill;
                FormJFRealTimeUI fm = new FormJFRealTimeUI();
                fm.Text = dgvDevs.SelectedRows[0].Cells[0].Value.ToString() + " Debug";
                fm.Size = uc.Size;
                fm.SetRTUI(uc);
                //fm.Controls.Add(uc);
                fm.Show();
            }
            else
            {
                if (typeof(IJFDevice_Camera).IsAssignableFrom(devType) ||
                    typeof(IJFDevice_LightController).IsAssignableFrom(devType) ||
                    typeof(IJFDevice_MotionDaq).IsAssignableFrom(devType) ||
                    typeof(IJFDevice_TrigController).IsAssignableFrom(devType) ||
                    typeof(IJFStation).IsAssignableFrom(devType))
                {
                    if (typeof(JFStationBase).IsAssignableFrom(devType))
                    {
                        FormStationBaseDebug fmSB = new FormStationBaseDebug();
                        fmSB.Text = (initor as JFStationBase).Name + " Debug";
                        fmSB.SetStation(initor as JFStationBase);
                        fmSB.Show();
                        return;
                    }
                    if (typeof(IJFStation).IsAssignableFrom(devType))
                    {
                        UcStationRealtimeUI ucST = new UcStationRealtimeUI();
                        ucST.Dock = DockStyle.Fill;
                        ucST.AllowedStartStopCmd = true;
                        ucST.SetStation(initor as IJFStation);
                        FormJFRealTimeUI fmST = new FormJFRealTimeUI();
                        fmST.Text = dgvDevs.SelectedRows[0].Cells[0].Value.ToString() + " Debug";
                        fmST.Size = ucST.Size;
                        fmST.SetRTUI(ucST);
                        //fm.Controls.Add(uc);
                        fmST.Show();
                        return;
                    }


                    FormJFRealTimeUI fm = new FormJFRealTimeUI();
                    fm.Text = dgvDevs.SelectedRows[0].Cells[0].Value.ToString() + " Debug" + "待实现!!";
                    if (typeof(IJFDevice_MotionDaq).IsAssignableFrom(devType))
                    {
                        UcMotionDaq uc = new UcMotionDaq();
                        fm.Text = dgvDevs.SelectedRows[0].Cells[0].Value.ToString() + "调试窗口";
                        //uc.Parent = fm;
                        uc.SetDevice(initor as IJFDevice_MotionDaq, dgvDevs.SelectedRows[0].Cells[0].Value.ToString());
                        //fm.Size = new Size(uc.Width + 20, uc.Height + 20);
                        //fm.Controls.Add(uc);
                        fm.SetRTUI(uc);
                    }
                    else if (typeof(IJFDevice_TrigController).IsAssignableFrom(devType))//HTM触发板控制器,一进多出(控制触发强度/时间)
                    {
                        fm.Text = dgvDevs.SelectedRows[0].Cells[0].Value.ToString() + "调试窗口";
                        if (typeof(IJFDevice_LightController).IsAssignableFrom(devType))//带触发功能的光源控制器
                        {
                            UcLightCtrl_T uc = new UcLightCtrl_T();
                            uc.SetModule(initor as IJFDevice_LightControllerWithTrig, null, null);
                            uc.Dock = DockStyle.Fill;
                            fm.SetRTUI(uc);
                        }
                        else //单纯的触发控制器
                        {
                            UcTrigCtrl uc = new UcTrigCtrl();
                            uc.SetModuleInfo(initor as IJFDevice_TrigController);
                            fm.SetRTUI(uc);
                        }
                    }
                    else if (typeof(IJFDevice_LightController).IsAssignableFrom(devType)) //光源控制器
                    {
                        fm.Text = dgvDevs.SelectedRows[0].Cells[0].Value.ToString() + "调试窗口";
                        UcLightCtrl uc = new UcLightCtrl();
                        uc.SetModuleInfo(initor as IJFDevice_LightController);
                        fm.SetRTUI(uc);
                    }
                    else if (typeof(IJFDevice_Camera).IsAssignableFrom(devType))
                    {
                        fm.Text = dgvDevs.SelectedRows[0].Cells[0].Value.ToString() + "调试窗口";
                        UcCmr uc = new UcCmr();
                        uc.SetCamera(initor as IJFDevice_Camera);
                        fm.SetRTUI(uc);
                    }
                    fm.Show();
                }
                else
                {
                    MessageBox.Show("无法为" + InitorCaption + "类型的对象提供调试界面");
                    return;
                }
            }
        }