/// <summary>
        /// 为Recipe添加一个配置项
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btAddItem_Click(object sender, EventArgs e)
        {
            FormXCfgItemEdit fmGenItem = new FormXCfgItemEdit();

            fmGenItem.SetItemAllowedTypes(new Type[]
                                          { typeof(int), typeof(double), typeof(string), typeof(bool), typeof(PointF),
                                            typeof(List <int>), typeof(List <double>), typeof(List <string>), typeof(List <bool>), typeof(List <PointF>) });
            if (DialogResult.OK == fmGenItem.ShowDialog())
            {
                string[] allItemNames = _recipe.AllItemNames();
                if (null != allItemNames && allItemNames.Contains(fmGenItem.GetItemName()))
                {
                    MessageBox.Show("添加数据项失败,已包含数据项:" + fmGenItem.GetItemName());
                    return;
                }
                _recipe.AddItem(fmGenItem.GetItemName(), fmGenItem.GetItemValue());
                UcJFParamEdit pe = new UcJFParamEdit();
                //if (fmGenItem.GetItemType().IsPrimitive)
                pe.Height        = 23;
                pe.Width         = 500;
                pe.IsHelpVisible = false;

                pe.SetParamDesribe(JFParamDescribe.Create(fmGenItem.GetItemName(), fmGenItem.GetItemType(), JFValueLimit.NonLimit, null)); //pe.SetParamType(fmGenItem.GetItemType());
                pe.SetParamValue(fmGenItem.GetItemValue());
                pe.IsValueReadOnly = false;                                                                                                //添加后状态为可编辑
                tableLayoutPanel1.Controls.Add(pe);
                Button btDel = new Button();
                btDel.Text   = "删除";
                btDel.Tag    = fmGenItem.GetItemName();
                btDel.Click += OnDelButtonClick;
                tableLayoutPanel1.Controls.Add(btDel);
                _lstItems.Add(pe);
                _lstDeleteItemButtons.Add(btDel);
            }
        }
Exemple #2
0
        void AdjustView()
        {
            if (InvokeRequired)
            {
                Invoke(new Action(AdjustView));
                return;
            }
            pnInputParam.Controls.Clear();
            pnOutputParam.Controls.Clear();
            if (null == _method)
            {
                lbInfo.Text       = " 方法未设置";
                btSetSave.Enabled = false;
                btCancel.Enabled  = false;
                btAction.Enabled  = false;
                return;
            }
            lbInfo.Text       = " ";
            _isEditting       = false;
            btSetSave.Enabled = true;
            btCancel.Enabled  = true;
            btAction.Enabled  = true;
            string[] inputNames = _method.MethodInputNames;

            if (inputNames != null)
            {
                foreach (string inputName in inputNames)
                {
                    UcJFParamEdit ucParam = new UcJFParamEdit();
                    ucParam.IsHelpVisible = false;
                    ucParam.Height        = 50;

                    //ucParam.SetParamType(_cfg.GetItemValue(itemName).GetType());//ucParam.SetParamDesribe(_station.GetCfgParamDescribe(itemName));
                    ucParam.SetParamDesribe(JFParamDescribe.Create(inputName, _method.GetMethodInputType(inputName), JFValueLimit.NonLimit, null));
                    ucParam.SetParamValue(_method.GetMethodInputValue(inputName));
                    pnInputParam.Controls.Add(ucParam);
                    ucParam.IsValueReadOnly = true;
                }
            }

            string[] outputNames = _method.MethodOutputNames;
            if (null != outputNames)
            {
                foreach (string outputName in outputNames)
                {
                    UcJFParamEdit ucParam = new UcJFParamEdit();
                    ucParam.IsHelpVisible = false;
                    ucParam.Height        = 50;

                    //ucParam.SetParamType(_cfg.GetItemValue(itemName).GetType());//ucParam.SetParamDesribe(_station.GetCfgParamDescribe(itemName));
                    ucParam.SetParamDesribe(JFParamDescribe.Create(outputName, _method.GetMethodOutputType(outputName), JFValueLimit.NonLimit, null));
                    ucParam.SetParamValue(_method.GetMethodOutputValue(outputName));
                    pnOutputParam.Controls.Add(ucParam);
                    ucParam.IsValueReadOnly = false;
                }
            }
        }
        public void AdjustRecipe2View()
        {
            if (InvokeRequired)
            {
                Invoke(new Action(AdjustRecipe2View));
                return;
            }



            _lstItems.Clear();
            _lstDeleteItemButtons.Clear();
            tableLayoutPanel1.Controls.Clear();
            EditRecipe = false;
            if (null == _recipe)
            {
                lbTips.Text = "Recipe未设置";
                return;
            }

            lbTips.Text = "Categoty:" + _recipe.Categoty + " ID:" + _recipe.ID;
            string[] itemNames = _recipe.AllItemNames();
            if (null == itemNames || 0 == itemNames.Length)
            {
                return;
            }
            foreach (string itemName in itemNames)
            {
                UcJFParamEdit pe = new UcJFParamEdit();
                //pe.SetParamType(_recipe.GetItemValue(itemName).GetType());
                pe.SetParamDesribe(JFParamDescribe.Create(itemName, _recipe.GetItemValue(itemName).GetType(), JFValueLimit.NonLimit, null));
                pe.SetParamValue(_recipe.GetItemValue(itemName));
                pe.IsValueReadOnly = true;
                pe.Height          = 23;
                pe.Width           = 500;
                pe.IsHelpVisible   = false;
                tableLayoutPanel1.Controls.Add(pe);
                Button btDel = new Button();
                btDel.Text   = "删除";
                btDel.Tag    = itemName;
                btDel.Click += OnDelButtonClick;
                _lstItems.Add(pe);
                _lstDeleteItemButtons.Add(btDel);
                tableLayoutPanel1.Controls.Add(btDel);
            }
            EditRecipe = false;
        }
 private void dgvTypes_CellClick(object sender, DataGridViewCellEventArgs e)
 {
     if (e.RowIndex < 0)
     {
         return;
     }
     if (RowIndexSelected == e.RowIndex)
     {
         return;
     }
     RowIndexSelected = e.RowIndex;
     if (null != initor)
     {
         initor.Dispose();
         initor = null;
     }
     //while (gbParams.Controls.Count > 2)
     //    gbParams.Controls.RemoveAt(2);
     panelParams.Controls.Clear();
     panelParams.AutoScroll = true;
     initor = JFHubCenter.Instance.InitorHelp.CreateInstance(dgvTypes.Rows[e.RowIndex].Cells[0].Value.ToString());
     if (null == initor)
     {
         string err = string.Format("Invoke Initor's Ctor Failed!InitorHelp.CreateInstance(Type = {0}) return null", dgvTypes.Rows[e.RowIndex].Cells[0].Value.ToString());
         lbTips.Text = err;
         //MessageBox.Show(err);
         return;
     }
     //int locY = tbID.Location.Y + tbID.Size.Height + 5;
     string[] paramNames = initor.InitParamNames;
     if (null == paramNames || 0 == paramNames.Length)
     {
         return;
     }
     for (int i = 0; i < paramNames.Length; i++)
     {
         string          pn = paramNames[i];
         JFParamDescribe pd = initor.GetInitParamDescribe(pn);
         UcJFParamEdit   uc = new UcJFParamEdit();
         //uc.Margin = new Padding(3, 10, 3, 10);
         panelParams.Controls.Add(uc);
         uc.SetParamDesribe(pd);
         uc.IsValueReadOnly = false;
     }
 }
        /// <summary>
        /// 将当前所选页的工站配置更新到界面上
        /// </summary>
        void UpdateCurrPage(bool isReload, bool enabled = false)
        {
            if (null == _station)
            {
                return;
            }
            TabPage currTP = tabControlCF1.SelectedTab;

            if (null == currTP)
            {
                return;
            }
            TableLayoutPanel currPanel = currTP.Controls[0] as TableLayoutPanel;
            JFXCfg           cfg       = _station.Config;

            if (isReload)
            {
                string category = currTP.Text;
                currPanel.Controls.Clear();
                string[] itemNames = cfg.ItemNamesInTag(category);
                if (null == itemNames)
                {
                    return;
                }
                foreach (string itemName in itemNames)
                {
                    UcJFParamEdit ucParam = new UcJFParamEdit();
                    ucParam.IsHelpVisible = false;
                    ucParam.Height        = 50;
                    ucParam.Width         = 600;
                    //ucParam.SetParamDesribe(JFParamDescribe.Create(itemName, cfg.GetItemValue(itemName).GetType(), JFValueLimit.NonLimit, null));
                    ucParam.SetParamDesribe(_station.GetCfgParamDescribe(itemName));
                    currPanel.Controls.Add(ucParam);
                }
            }
            foreach (UcJFParamEdit ucParam in currPanel.Controls)
            {
                //object paramVal = _station.GetCfgParamValue(ucParam.GetParamDesribe().DisplayName);
                object paramVal = cfg.GetItemValue(ucParam.GetParamDesribe().DisplayName);
                ucParam.SetParamValue(paramVal);
                ucParam.IsValueReadOnly = !enabled;
            }
        }
Exemple #6
0
        void AdjustView()
        {
            timerFlush.Enabled = false;
            tpRealtime.Controls.Clear();
            tpInitCfg.Controls.Clear();
            _lstUcParam.Clear();
            if (null == _method)
            {
                Label lb1 = new Label();
                lb1.Text = "方法对象未设置";
                tpRealtime.Controls.Add(lb1);
                Label lb2 = new Label();
                lb2.Text = "方法对象未设置";
                tpInitCfg.Controls.Add(lb1);
                return;
            }
            if (_method is IJFRealtimeUIProvider)
            {
                JFRealtimeUI ui = (_method as IJFRealtimeUIProvider).GetRealtimeUI();
                if (null != ui)
                {
                    ui.Dock = DockStyle.Fill;
                    tpRealtime.Controls.Add(ui);
                    timerFlush.Enabled = true;
                }
            }
            else
            {
                UcCommonMethodRtUi ui = new UcCommonMethodRtUi();
                ui.Dock = DockStyle.Fill;
                ui.SetMethod(_method);
                tpRealtime.Controls.Add(ui);
                timerFlush.Enabled = true;
            }

            int locX = 3, locY = 3;

            if (_method is IJFConfigUIProvider)//提供参数配置界面
            {
                Button btShowCfg = new Button();
                btShowCfg.Text     = "参数配置";
                btShowCfg.Location = new Point(locX, locY);
                tpInitCfg.Controls.Add(btShowCfg);
                btShowCfg.Click += OnButtonClick_ShowCfgUI;
                locY             = btShowCfg.Bottom + 2;
            }

            if (_method is IJFInitializable)//初始参数可序列化对象
            {
                IJFInitializable initor    = _method as IJFInitializable;
                string[]         initNames = initor.InitParamNames;
                if (null != initNames && initNames.Length > 0)
                {
                    isInitParamEditting    = false;
                    btSetSaveInit          = new Button();
                    btSetSaveInit.Text     = "编辑初始化参数";
                    btSetSaveInit.Location = new Point(locX, locY);
                    btSetSaveInit.Click   += OnButtonClick_InitParamSetSave;
                    tpInitCfg.Controls.Add(btSetSaveInit);

                    btCancelInit          = new Button();
                    btCancelInit.Text     = "取消";
                    btCancelInit.Location = new Point(btSetSaveInit.Right + 2, locY);
                    btCancelInit.Click   += OnButtonClick_InitParamCancel;
                    tpInitCfg.Controls.Add(btCancelInit);
                    btCancelInit.Enabled = false;
                    locY = btCancelInit.Bottom + 2;
                    for (int i = 0; i < initNames.Length; i++)
                    {
                        string          initName = initNames[i];
                        JFParamDescribe pd       = initor.GetInitParamDescribe(initName);
                        UcJFParamEdit   ucParam  = new UcJFParamEdit();
                        ucParam.Width    = tpInitCfg.Width - 100;
                        ucParam.Location = new Point(locX, locY);
                        ucParam.SetParamDesribe(pd);
                        ucParam.SetParamValue(initor.GetInitParamValue(initName));
                        ucParam.IsValueReadOnly = true;
                        _lstUcParam.Add(ucParam);
                        tpInitCfg.Controls.Add(ucParam);

                        ucParam.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
                        locY           = ucParam.Bottom + 2;
                    }

                    InitParam2UI();
                }
            }
        }
        /// <summary>选择设备</summary>
        private void dgvDevs_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvDevs.SelectedRows.Count == 0)
            {
                return;
            }
            btRemove.Enabled = true;
            RemoveAllPEs();

            DataGridViewRow  row     = dgvDevs.SelectedRows[0];
            IJFInitializable dev     = JFHubCenter.Instance.InitorManager[row.Cells[0].Value.ToString()];
            Type             devType = dev.GetType();

            if (typeof(IJFDevice_Camera).IsAssignableFrom(devType) ||
                typeof(IJFDevice_LightController).IsAssignableFrom(devType) ||
                typeof(IJFDevice_MotionDaq).IsAssignableFrom(devType) ||
                typeof(IJFDevice_TrigController).IsAssignableFrom(devType) ||
                typeof(IJFRealtimeUIProvider).IsAssignableFrom(devType)) //提供调试界面
            {
                btDebug.Enabled = true;
                if (typeof(IJFRealtimeUIProvider).IsAssignableFrom(devType))
                {
                    chkSelfUI.Enabled = true;
                }
                else
                {
                    chkSelfUI.Checked = false;
                    chkSelfUI.Enabled = false;
                }
            }
            else
            {
                btDebug.Enabled = false;
            }

            if (typeof(IJFConfigUIProvider).IsAssignableFrom(devType))
            {
                btCfg.Enabled = true;
            }
            else
            {
                btCfg.Enabled = false;
            }



            tbDevID.Text   = row.Cells[0].Value.ToString();
            btInit.Enabled = !dev.IsInitOK;
            string[] iniParamNames = dev.InitParamNames;
            if (null == iniParamNames)
            {
                btEditSave.Enabled = false;
                return;
            }
            btEditSave.Enabled = true;
            int locY = btInit.Location.Y + btInit.Size.Height + 5;

            foreach (string ipName in iniParamNames)
            {
                UcJFParamEdit pe = new UcJFParamEdit();
                pe.Width    = gbParams.Width - 1;
                pe.Location = new Point(4, locY);
                pe.SetParamDesribe(dev.GetInitParamDescribe(ipName));
                locY += pe.Height;
                pe.SetParamValue(dev.GetInitParamValue(ipName));
                pe.IsValueReadOnly = true;
                gbParams.Controls.Add(pe);
            }
        }
        /// <summary>添加新设备</summary>
        private void btAdd_Click(object sender, EventArgs e)
        {
            FormCreateInitor fm = new FormCreateInitor();

            fm.Text      = "创建" + InitorCaption + "对象";
            fm.MatchType = InitorType;
            if (DialogResult.OK == fm.ShowDialog())
            {
                IJFInitializable newDevice = fm.Initor;
                string           devID     = fm.ID;
                JFHubCenter.Instance.InitorManager.Add(devID, newDevice);


                DataGridViewRow         row    = new DataGridViewRow();
                DataGridViewTextBoxCell cellID = new DataGridViewTextBoxCell();
                cellID.Value = devID;
                row.Cells.Add(cellID);

                DataGridViewTextBoxCell cellModel = new DataGridViewTextBoxCell();
                cellModel.Value = JFinitializerHelper.DispalyTypeName(newDevice.GetType());
                row.Cells.Add(cellModel);
                DataGridViewTextBoxCell cellType = new DataGridViewTextBoxCell();
                cellType.Value = newDevice.GetType().Name;
                row.Cells.Add(cellType);
                dgvDevs.Rows.Add(row);
                newDevice.Initialize();
                if (!newDevice.IsInitOK)
                {
                    btInit.Enabled = true;
                    row.DefaultCellStyle.ForeColor = Color.Red;
                }
                else
                {
                    btInit.Enabled = false;
                }



                /// 更新参数到界面
                dgvDevs.Rows[dgvDevs.Rows.Count - 1].Selected = true;
                RemoveAllPEs();
                string[] iniParamNames = newDevice.InitParamNames;
                if (null == iniParamNames)
                {
                    btEditSave.Enabled = false;
                    return;
                }
                btEditSave.Enabled = true;
                int locY = btInit.Location.Y + btInit.Size.Height + 5;
                foreach (string ipName in iniParamNames)
                {
                    UcJFParamEdit pe = new UcJFParamEdit();
                    pe.Width    = gbParams.Width - 1;
                    pe.Location = new Point(4, locY);
                    pe.SetParamDesribe(newDevice.GetInitParamDescribe(ipName));
                    locY += pe.Height;
                    pe.SetParamValue(newDevice.GetInitParamValue(ipName));
                    pe.IsValueReadOnly = true;
                    gbParams.Controls.Add(pe);
                }

                Type devType = newDevice.GetType();
                if (typeof(IJFDevice_Camera).IsAssignableFrom(devType) ||
                    typeof(IJFDevice_LightController).IsAssignableFrom(devType) ||
                    typeof(IJFDevice_MotionDaq).IsAssignableFrom(devType) ||
                    typeof(IJFDevice_TrigController).IsAssignableFrom(devType) ||
                    typeof(IJFRealtimeUIProvider).IsAssignableFrom(devType)) //提供调试界面
                {
                    btDebug.Enabled = true;
                    if (typeof(IJFRealtimeUIProvider).IsAssignableFrom(devType))
                    {
                        chkSelfUI.Enabled = true;
                    }
                    else
                    {
                        chkSelfUI.Checked = false;
                        chkSelfUI.Enabled = false;
                    }
                }
                else
                {
                    btDebug.Enabled = false;
                }

                if (typeof(IJFConfigUIProvider).IsAssignableFrom(devType))
                {
                    btCfg.Enabled = true;
                }
                else
                {
                    btCfg.Enabled = false;
                }
            }
        }
Exemple #9
0
        void AdjustStationView()
        {
            if (InvokeRequired)
            {
                Invoke(new Action(AdjustStationView));
                return;
            }
            tabControlCF1.TabPages.Clear();
            isEditting       = false;
            btEditSave.Text  = "编辑";
            btCancel.Enabled = false;
            if (null == _station)
            {
                lbInfo.Text        = "工站未设置!";
                btEditSave.Enabled = false;
                return;
            }
            lbInfo.Text = "工站:" + _station.Name;
            JFXCfg cfg = _station.Config;

            string[] categorys = cfg.AllTags;
            if (null == categorys || categorys.Length < 2) //只有一个无名称Tag,由于保存私有配置
            {
                lbInfo.Text       += " 无定制化参数";
                btEditSave.Enabled = false;
                return;
            }
            btEditSave.Enabled = true;
            foreach (string category in categorys)
            {
                if (string.IsNullOrEmpty(category))
                {
                    continue;
                }
                TabPage tp = new TabPage(category);
                tabControlCF1.TabPages.Add(tp);
                string[] itemNames = cfg.ItemNamesInTag(category);
                if (null == itemNames)
                {
                    continue;
                }
                TableLayoutPanel panel = new TableLayoutPanel();
                panel.ColumnCount = 1;
                panel.AutoScroll  = true;
                panel.Dock        = DockStyle.Fill;
                tp.Controls.Add(panel);
                foreach (string itemName in itemNames)
                {
                    UcJFParamEdit ucParam = new UcJFParamEdit();
                    ucParam.IsHelpVisible = false;
                    ucParam.Height        = 23;
                    ucParam.SetParamDesribe(_station.GetCfgParamDescribe(itemName));
                    ucParam.SetParamValue(_station.GetCfgParamValue(itemName));
                    ucParam.IsValueReadOnly = false;
                    panel.Controls.Add(ucParam);
                    ucParam.IsValueReadOnly = true;
                }
            }
            //if (tabControlCF1.TabCount > 0)
            //    tabControlCF1.SelectedIndex = 0;
        }
        void AdjustStationView()
        {
            if (InvokeRequired)
            {
                Invoke(new Action(AdjustStationView));
                return;
            }
            tabControlCF1.TabPages.Clear();
            isEditting       = false;
            btEditSave.Text  = "编辑";
            btCancel.Enabled = false;
            if (null == _station)
            {
                lbInfo.Text        = "工站未设置!";
                btEditSave.Enabled = false;
                return;
            }
            JFXCfg cfg = _station.Config;

            lbInfo.Text = "工站:" + _station.Name + "  文件路径:" + cfg.FilePath;
            string[] namedCategorys = cfg.AllTags;
            //if(null == categorys || categorys.Length < 2) //只有一个无名称Tag,由于保存私有配置
            //{
            //    lbInfo.Text += " 无定制化参数";
            //    btEditSave.Enabled = false;
            //    return;
            //}
            List <string> categorys = new List <string>();

            if (!AllowedShowUnnameTag)
            {
                if (null == categorys || categorys.Count < 2) //只有一个无名称Tag,由于保存私有配置
                {
                    lbInfo.Text       += " 无定制化参数";
                    btEditSave.Enabled = false;
                    return;
                }
            }
            else
            {
                categorys.Add("");
            }
            if (namedCategorys != null)
            {
                categorys.AddRange(namedCategorys);
            }
            btEditSave.Enabled = true;
            foreach (string category in categorys)
            {
                if (string.IsNullOrEmpty(category))
                {
                    continue;
                }
                TabPage tp = new TabPage(category);
                tabControlCF1.TabPages.Add(tp);
                string[] itemNames = cfg.ItemNamesInTag(category);
                if (null == itemNames)
                {
                    continue;
                }
                TableLayoutPanel panel = new TableLayoutPanel();
                //panel.RowStyles[0] = new RowStyle(SizeType.Absolute, 55);
                panel.RowStyles.Add(new RowStyle(SizeType.Absolute, 55));
                panel.ColumnCount = 1;
                panel.AutoScroll  = true;
                panel.Dock        = DockStyle.Fill;
                tp.Controls.Add(panel);
                for (int i = 0; i < itemNames.Length; i++)//foreach (string itemName in itemNames)
                {
                    string        itemName = itemNames[i];
                    UcJFParamEdit ucParam  = new UcJFParamEdit();
                    ucParam.IsHelpVisible = false;
                    ucParam.Height        = 50;
                    ucParam.Width         = 600;//panel.Width*2/3;
                    //ucParam.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right ;
                    ucParam.SetParamDesribe(_station.GetCfgParamDescribe(itemName));
                    //ucParam.SetParamDesribe(JFParamDescribe.Create(itemName, cfg.GetItemValue(itemName).GetType(), JFValueLimit.NonLimit, null));
                    ucParam.SetParamValue(cfg.GetItemValue(itemName));
                    ucParam.IsValueReadOnly = false;
                    panel.Controls.Add(ucParam);
                    ucParam.IsValueReadOnly = true;
                    //panel.RowStyles[i].SizeType = SizeType.Absolute;
                    //panel.RowStyles[i].Height = 55;
                }
            }
            //if (tabControlCF1.TabCount > 0)
            //    tabControlCF1.SelectedIndex = 0;
        }