/// <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)); }