Beispiel #1
0
        /// <summary>
        /// 更正模糊控件信息中数组属性的数组名并返回数组信息
        /// </summary>
        /// <param name="curCas">控件所在CASSVIEW容器</param>
        /// <param name="curCtrl">控件</param>
        /// <param name="ArrayCount">当前所用到队列编号</param>
        /// <returns>数组信息</returns>
        static public string[] GetFuzzyArray(CassView curCas, Control curCtrl, ref int ArrayCount)
        {
            List <string>      ArrayInfo             = new List <string>();
            PropertyDescriptor configurationProperty = TypeDescriptor.GetProperties(curCtrl)["Configuration"];

            ControlTactic.SpecialControl.Fuzzy       ConvertTool = new ControlTactic.SpecialControl.Fuzzy();
            ControlTactic.SpecialControl.FuzzyStruct tempStruct  = ConvertTool.ListToStruct((List <string>)configurationProperty.GetValue(curCtrl));

            ControlInfo Fuzzy     = curCas.FindControlInfo(curCtrl);
            string      tempArray = null;

            for (int row = 0; row < tempStruct.RowNum * 2 + 1; row++)
            {
                for (int column = 0; column < tempStruct.ColumnNum * 2 + 1; column++)
                {
                    tempArray += tempStruct.ControlTable[row, column];
                    if (row != tempStruct.RowNum * 2 || column != tempStruct.ColumnNum * 2)
                    {
                        tempArray += ",";
                    }
                }
                if (row != tempStruct.RowNum - 1)
                {
                    //tempArray += "\n";//去除每行回车符号 否则导致读取地址表出错BUG20090622
                }
            }
            //创建模糊控制表参数的数组节点
            for (int i = 0; i < Fuzzy.UnvisibleFunctionProperty.Count; i++)
            {
                if (Fuzzy.UnvisibleFunctionProperty[i].Name == "模糊控制表")
                {//ArrayInfo顺序依次为控件PortName、属性VarName、类型、数组名、长度、数组
                    Fuzzy.UnvisibleFunctionProperty[i].TheValue
                        = "configuration" + CassViewGenerator.ProjectNum + "_array" + (ArrayCount++).ToString();
                    ArrayInfo.Add(Fuzzy.CodeInfo[2]);
                    ArrayInfo.Add(Fuzzy.UnvisibleFunctionProperty[i].Name);
                    ArrayInfo.Add("fp32");
                    ArrayInfo.Add(Fuzzy.UnvisibleFunctionProperty[i].TheValue.ToString());
                    ArrayInfo.Add(tempStruct.ControlTable.Length.ToString());
                    ArrayInfo.Add(tempArray);
                    ArrayInfo.Add(Fuzzy.UnvisibleFunctionProperty[i].VarName);
                }
            }
            return(ArrayInfo.ToArray());
        }
        /// <summary>
        /// ����ģ���ؼ���Ϣ���������Ե�������������������Ϣ
        /// </summary>
        /// <param name="curCas">�ؼ�����CASSVIEW����</param>
        /// <param name="curCtrl">�ؼ�</param>
        /// <param name="ArrayCount">��ǰ���õ����б��</param>
        /// <returns>������Ϣ</returns>
        public static string[] GetFuzzyArray(CassView curCas, Control curCtrl, ref int ArrayCount)
        {
            List<string> ArrayInfo = new List<string>();
            PropertyDescriptor configurationProperty = TypeDescriptor.GetProperties(curCtrl)["Configuration"];
            ControlTactic.SpecialControl.Fuzzy ConvertTool = new ControlTactic.SpecialControl.Fuzzy();
            ControlTactic.SpecialControl.FuzzyStruct tempStruct = ConvertTool.ListToStruct((List<string>)configurationProperty.GetValue(curCtrl));

            ControlInfo Fuzzy = curCas.FindControlInfo(curCtrl);
            string tempArray = null;
            for (int row = 0; row < tempStruct.RowNum * 2 + 1; row++)
            {
                for (int column = 0; column < tempStruct.ColumnNum * 2 + 1; column++)
                {
                    tempArray += tempStruct.ControlTable[row, column];
                    if (row != tempStruct.RowNum * 2 || column != tempStruct.ColumnNum * 2)
                    { tempArray += ","; }
                }
                if (row != tempStruct.RowNum - 1)
                {
                    //tempArray += "\n";//ȥ��ÿ�лس����� �����¶�ȡ��ַ�����BUG20090622
                }
            }
            //����ģ�����Ʊ����������ڵ�
            for (int i = 0; i < Fuzzy.UnvisibleFunctionProperty.Count; i++)
            {
                if (Fuzzy.UnvisibleFunctionProperty[i].Name == "ģ�����Ʊ�")
                {//ArrayInfo˳������Ϊ�ؼ�PortName������VarName�����͡������������ȡ�����
                    Fuzzy.UnvisibleFunctionProperty[i].TheValue
                        = "configuration" + CassViewGenerator.ProjectNum + "_array" + (ArrayCount++).ToString();
                    ArrayInfo.Add(Fuzzy.CodeInfo[2]);
                    ArrayInfo.Add(Fuzzy.UnvisibleFunctionProperty[i].Name);
                    ArrayInfo.Add("fp32");
                    ArrayInfo.Add(Fuzzy.UnvisibleFunctionProperty[i].TheValue.ToString());
                    ArrayInfo.Add(tempStruct.ControlTable.Length.ToString());
                    ArrayInfo.Add(tempArray);
                    ArrayInfo.Add(Fuzzy.UnvisibleFunctionProperty[i].VarName);
                }
            }
            return ArrayInfo.ToArray();
        }
        /// <summary>
        /// 更改模糊控制中
        /// 偏差模糊论域和偏差变化率模糊论域
        /// 时模糊控制信息进行修改
        /// </summary>
        /// <param name="control">模糊控件</param>
        /// <param name="oldValue">修改前的论域</param>
        /// <param name="newValue">修改后的论域</param>
        private static void SetFzConfigInfo(Control control, string atriName, int oldValue, int newValue)
        {
            PropertyDescriptor configurationProperty = TypeDescriptor.GetProperties(control)["Configuration"];
            ControlTactic.SpecialControl.Fuzzy ConvertTool = new ControlTactic.SpecialControl.Fuzzy();
            ControlTactic.SpecialControl.FuzzyStruct tempStruct = ConvertTool.ListToStruct((List<string>)configurationProperty.GetValue(control));

            if (atriName == "偏差模糊论域")
            {
                tempStruct.RowNum = newValue;
            }
            else if (atriName == "偏差变化率模糊论域")
            {
                tempStruct.ColumnNum = newValue;
            }

            //结构体中的模糊控制表
            string[,] tempTable = new string[tempStruct.RowNum * 2 + 1, tempStruct.ColumnNum * 2 + 1];
            for (int i = 0; i < tempStruct.RowNum * 2 + 1; i++)
            {
                for (int j = 0; j < tempStruct.ColumnNum * 2 + 1; j++)
                {
                    if ((atriName == "偏差模糊论域" && i > oldValue - 1)
                        || (atriName == "偏差变化率模糊论域" && j > oldValue - 1))
                    { tempTable[i, j] = "0"; }
                    else
                    {
                        tempTable[i, j] = tempStruct.ControlTable[i, j];
                    }
                }
            }
            tempStruct.ControlTable = tempTable;
            configurationProperty.SetValue(control, ConvertTool.StructToList(tempStruct));
        }