예제 #1
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(3);
         *  dialog.ShowLine2("F:", FreqValue);
         *  dialog.ShowLine4("DC:", DutyCycleValue);
         *  dialog.ShowLine6("OUT:", OutputValue);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var  oldvaluestring1 = FreqValue.ValueString;
            var  oldvaluestring2 = DutyCycleValue.ValueString;
            var  oldvaluestring3 = OutputValue.ValueString;
            bool check1          = ValueParser.CheckValueString(valueStrings[0], new Regex[] {
                ValueParser.VerifyDoubleWordRegex2, ValueParser.VerifyIntKHValueRegex
            });
            bool check2 = ValueParser.CheckValueString(valueStrings[2], new Regex[] {
                ValueParser.VerifyDoubleWordRegex2, ValueParser.VerifyIntKHValueRegex
            });
            bool check3 = ValueParser.CheckValueString(valueStrings[4], new Regex[] {
                ValueParser.VerifyBitRegex4
            });

            if (check1 && check2 && check3)
            {
                FreqValue      = ValueParser.ParseDoubleWordValue(valueStrings[0], contextDevice);
                DutyCycleValue = ValueParser.ParseDoubleWordValue(valueStrings[2], contextDevice);
                OutputValue    = ValueParser.ParseBitValue(valueStrings[4], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, FreqValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, DutyCycleValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring3, OutputValue.ValueString);
                ValueCommentManager.UpdateComment(FreqValue, valueStrings[1]);
                ValueCommentManager.UpdateComment(DutyCycleValue, valueStrings[3]);
                ValueCommentManager.UpdateComment(OutputValue, valueStrings[5]);
            }
        }
예제 #2
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(2);
         *  dialog.ShowLine3("F:", FreqValue);
         *  dialog.ShowLine5("OUT:", OutputValue);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var  oldvaluestring1 = FreqValue.ValueString;
            var  oldvaluestring2 = OutputValue.ValueString;
            bool check1          = ValueParser.CheckValueString(valueStrings[0], new Regex[] {
                ValueParser.VerifyWordRegex3, ValueParser.VerifyIntKHValueRegex
            });
            bool check2 = ValueParser.CheckValueString(valueStrings[2], new Regex[] {
                ValueParser.VerifyBitRegex4
            });

            if (check1 && check2)
            {
                FreqValue   = ValueParser.ParseWordValue(valueStrings[0], contextDevice);
                OutputValue = ValueParser.ParseBitValue(valueStrings[2], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, FreqValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, OutputValue.ValueString);
                ValueCommentManager.UpdateComment(FreqValue, valueStrings[1]);
                ValueCommentManager.UpdateComment(OutputValue, valueStrings[3]);
            }
            else if (!check1)
            {
                throw new ValueParseException("F格式非法!");
            }
            else if (!check2)
            {
                throw new ValueParseException("OUT格式非法");
            }
        }
예제 #3
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(4);
         *  dialog.Title = InstructionName;
         *  dialog.ShowLine1("SRC", SourceValue);
         *  dialog.ShowLine3("DST", DestinationValue);
         *  dialog.ShowLine5("N1", CountValue);
         *  dialog.ShowLine7("N2", MoveValue);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var  oldvaluestring1 = SourceValue.ValueString;
            var  oldvaluestring2 = DestinationValue.ValueString;
            var  oldvaluestring3 = CountValue.ValueString;
            var  oldvaluestring4 = MoveValue.ValueString;
            bool check1          = ValueParser.CheckValueString(valueStrings[0],
                                                                new Regex[] { ValueParser.VerifyBitRegex1 });
            bool check2 = ValueParser.CheckValueString(valueStrings[2],
                                                       new Regex[] { ValueParser.VerifyBitRegex2 });
            bool check3 = ValueParser.CheckValueString(valueStrings[4],
                                                       new Regex[] { ValueParser.VerifyWordRegex3, ValueParser.VerifyIntKHValueRegex });
            bool check4 = ValueParser.CheckValueString(valueStrings[6],
                                                       new Regex[] { ValueParser.VerifyWordRegex3, ValueParser.VerifyIntKHValueRegex });

            if (check1 && check2 && check3 && check4)
            {
                SourceValue      = ValueParser.ParseBitValue(valueStrings[0], contextDevice);
                DestinationValue = ValueParser.ParseBitValue(valueStrings[2], contextDevice);
                CountValue       = ValueParser.ParseWordValue(valueStrings[4], contextDevice);
                MoveValue        = ValueParser.ParseWordValue(valueStrings[6], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, SourceValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, DestinationValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring3, CountValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring4, MoveValue.ValueString);
                ValueCommentManager.UpdateComment(SourceValue, valueStrings[1]);
                ValueCommentManager.UpdateComment(DestinationValue, valueStrings[3]);
                ValueCommentManager.UpdateComment(CountValue, valueStrings[5]);
                ValueCommentManager.UpdateComment(MoveValue, valueStrings[7]);
            }
        }
예제 #4
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(3);
         *  dialog.Title = InstructionName;
         *  dialog.ShowLine3("TV:", TimerValue);
         *  dialog.ShowLine5("SV:", EndValue);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var  oldvaluestring1 = TimerValue.ValueString;
            var  oldvaluestring2 = EndValue.ValueString;
            bool check1          = ValueParser.CheckValueString(valueStrings[0], new Regex[] {
                ValueParser.VerifyWordRegex4
            });
            bool check2 = ValueParser.CheckValueString(valueStrings[2], new Regex[] {
                ValueParser.VerifyWordRegex3, ValueParser.VerifyIntKHValueRegex
            });

            if (check1 && check2)
            {
                TimerValue = ValueParser.ParseWordValue(valueStrings[0], contextDevice);
                EndValue   = ValueParser.ParseWordValue(valueStrings[2], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, TimerValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, EndValue.ValueString);
                ValueCommentManager.UpdateComment(TimerValue, valueStrings[1]);
                ValueCommentManager.UpdateComment(EndValue, valueStrings[3]);
            }
            else if (!check1)
            {
                throw new ValueParseException("TV格式错误!");
            }
            else if (!check2)
            {
                throw new ValueParseException("SV格式错误!");
            }
        }
예제 #5
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(2, ElementPropertyDialog.INST_ATCH);
         *  dialog.ShowLine3("EVENT:", IDValue);
         *  dialog.ShowLine5("FUNC:");
         *  dialog.ValueString5 = FuncName;
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var  oldvaluestring1 = IDValue.ValueString;
            var  oldvaluestring2 = FuncName;
            bool check1          = ValueParser.CheckValueString(valueStrings[0], new Regex[] {
                ValueParser.VerifyIntKHValueRegex
            });
            bool check2 = true;

            if (check1)
            {
                IDValue = ValueParser.ParseWordValue(valueStrings[0], contextDevice);
                int id = int.Parse(IDValue.GetValue());
                if (id < 0 || id > 7)
                {
                    throw new ValueParseException("ID超出范围(0-7)");
                }
            }
            if (check1 && check2)
            {
                FuncName = valueStrings[2];
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, IDValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, FuncName);
                //ValueCommentManager.UpdateComment(InputValue, valueStrings[1]);
                ValueCommentManager.UpdateComment(IDValue, valueStrings[1]);
            }
            else if (!check2)
            {
                throw new ValueParseException(String.Format("找不到函数{0:s}", valueStrings[2]));
            }
            else if (!check1)
            {
                throw new ValueParseException("EVENT格式非法!");
            }
        }
예제 #6
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(2);
         *  dialog.Title = InstructionName;
         *  dialog.ShowLine3("L:", LeftValue);
         *  dialog.ShowLine5("R:", RightValue);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var  oldvaluestring1 = LeftValue.ValueString;
            var  oldvaluestring2 = RightValue.ValueString;
            bool check1          = ValueParser.CheckValueString(valueStrings[0], new Regex[] {
                ValueParser.VerifyFloatRegex
            });
            bool check2 = ValueParser.CheckValueString(valueStrings[2], new Regex[] {
                ValueParser.VerifyFloatRegex
            });

            if (check1 && check2)
            {
                LeftValue  = ValueParser.ParseFloatValue(valueStrings[0], contextDevice);
                RightValue = ValueParser.ParseFloatValue(valueStrings[2], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, LeftValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, RightValue.ValueString);
                ValueCommentManager.UpdateComment(LeftValue, valueStrings[1]);
                ValueCommentManager.UpdateComment(RightValue, valueStrings[3]);
            }
            else if (!check1)
            {
                throw new ValueParseException("L格式错误!");
            }
            else if (!check2)
            {
                throw new ValueParseException("R格式错误!");
            }
        }
예제 #7
0
        private void DataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            ValueCommentAlias comment = e.Row.DataContext as ValueCommentAlias;
            TextBox           textBox = e.EditingElement as TextBox;

            if (e.Column == elementComment)
            {
                if (comment != null && textBox != null)
                {
                    ValueCommentManager.UpdateComment(comment.Name, textBox.Text);
                }
            }
            else if (e.Column == elementAlias)
            {
                if (comment != null && textBox != null)
                {
                    if (textBox.Text != string.Empty && !ValueAliasManager.CheckAlias(comment.Name, textBox.Text))
                    {
                        LocalizedMessageBox.Show(Properties.Resources.Message_Alias_Exist, LocalizedMessageIcon.Warning);
                        e.Cancel = true;
                    }
                    else
                    {
                        ValueAliasManager.UpdateAlias(comment.Name, textBox.Text);
                    }
                }
            }
        }
예제 #8
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(2);
         *  dialog.Title = InstructionName;
         *  dialog.ShowLine3("CT:", CountValue);
         *  dialog.ShowLine5("SV:", DefineValue);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var  oldvaluestring1 = CountValue.ValueString;
            var  oldvaluestring2 = DefineValue.ValueString;
            bool check1          = ValueParser.CheckValueString(valueStrings[0], new Regex[] {
                ValueParser.VerifyDoubleWordRegex3
            });
            bool check2 = ValueParser.CheckValueString(valueStrings[2], new Regex[] {
                ValueParser.VerifyDoubleWordRegex1, ValueParser.VerifyIntKHValueRegex
            });

            if (check1 && check2)
            {
                CountValue  = ValueParser.ParseDoubleWordValue(valueStrings[0], contextDevice);
                DefineValue = ValueParser.ParseDoubleWordValue(valueStrings[2], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, CountValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, DefineValue.ValueString);
                ValueCommentManager.UpdateComment(CountValue, valueStrings[1]);
                ValueCommentManager.UpdateComment(DefineValue, valueStrings[3]);
            }
            else if (!check1)
            {
                throw new ValueParseException("计数器输入错误!");
            }
            else if (!check2)
            {
                throw new ValueParseException("预设值输入错误!");
            }
        }
예제 #9
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(3, ElementPropertyDialog.INST_MBUS);
         *  dialog.Title = InstructionName;
         *  dialog.ShowLine2("COM:", COMPort);
         *  dialog.ShowLine4("TABLE:");
         *  dialog.ValueString4 = Table;
         *  dialog.ShowLine6("WR:", Message);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var  oldvaluestring1 = COMPort.ValueString;
            var  oldvaluestring2 = Table;
            var  oldvaluestring3 = Message.ValueString;
            bool check1          = ValueParser.CheckValueString(valueStrings[0], new Regex[] {
                ValueParser.VerifyWordRegex1, ValueParser.VerifyIntKHValueRegex
            });
            bool check3 = ValueParser.CheckValueString(valueStrings[4], new Regex[] {
                ValueParser.VerifyWordRegex3
            });

            if (check1 && check3)
            {
                COMPort = ValueParser.ParseWordValue(valueStrings[0], contextDevice);
                Table   = valueStrings[2];
                Message = ValueParser.ParseWordValue(valueStrings[4], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, COMPort.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, Table);
                InstructionCommentManager.ModifyValue(this, oldvaluestring3, Message.ValueString);
                ValueCommentManager.UpdateComment(COMPort, valueStrings[1]);
                ValueCommentManager.UpdateComment(Message, valueStrings[5]);
            }
            else if (!check1)
            {
                throw new ValueParseException("COM格式错误!");
            }
            else if (!check3)
            {
                throw new ValueParseException("WR格式错误!");
            }
        }
예제 #10
0
 public static void LoadValueCommentsByXElement(XElement xEle)
 {
     if (xEle != null)
     {
         foreach (XElement xele in xEle.Elements("Comment"))
         {
             string valueString = xele.Attribute("Value").Value;
             string comment     = xele.Value;
             ValueCommentManager.UpdateComment(valueString, comment);
         }
     }
 }
예제 #11
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  int argcount = 5;
         *  if (Value4 == ArgumentValue.Null)
         *      argcount = 4;
         *  if (Value3 == ArgumentValue.Null)
         *      argcount = 3;
         *  if (Value2 == ArgumentValue.Null)
         *      argcount = 2;
         *  if (Value1 == ArgumentValue.Null)
         *      argcount = 1;
         *  var dialog = new ElementPropertyDialog(argcount, ElementPropertyDialog.INST_CALLM);
         *  switch (argcount)
         *  {
         *      case 1:
         *          dialog.ShowLine1("FUNC:");
         *          dialog.ValueString1 = FuncName;
         *          break;
         *      case 2:
         *          dialog.ShowLine1("FUNC:");
         *          dialog.ValueString1 = FuncName;
         *          dialog.ShowLine2(Value1.ArgumentName + ":", Value1);
         *          break;
         *      case 3:
         *          dialog.ShowLine1("FUNC:");
         *          dialog.ValueString1 = FuncName;
         *          dialog.ShowLine2(Value1.ArgumentName + ":", Value1);
         *          dialog.ShowLine3(Value2.ArgumentName + ":", Value2);
         *          break;
         *      case 4:
         *          dialog.ShowLine1("FUNC:");
         *          dialog.ValueString1 = FuncName;
         *          dialog.ShowLine2(Value1.ArgumentName + ":", Value1);
         *          dialog.ShowLine3(Value2.ArgumentName + ":", Value2);
         *          dialog.ShowLine4(Value3.ArgumentName + ":", Value3);
         *          break;
         *      case 5:
         *          dialog.ShowLine1("FUNC:");
         *          dialog.ValueString1 = FuncName;
         *          dialog.ShowLine2(Value1.ArgumentName + ":", Value1);
         *          dialog.ShowLine3(Value2.ArgumentName + ":", Value2);
         *          dialog.ShowLine4(Value3.ArgumentName + ":", Value3);
         *          dialog.ShowLine5(Value4.ArgumentName + ":", Value4);
         *          break;
         *  }
         *  return dialog;
         * }
         */
        public void AcceptNewValues(string _funcname, string _funccomment, ArgumentValue[] _values)
        {
            var oldvaluestring1 = FuncName;
            var oldvaluestring2 = Value1.ValueString;
            var oldvaluestring3 = Value2.ValueString;
            var oldvaluestring4 = Value3.ValueString;
            var oldvaluestring5 = Value4.ValueString;

            FuncName    = _funcname;
            FuncComment = _funccomment;
            if (_values.Length > 0)
            {
                Value1 = _values[0];
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, Value1.ValueString);
                ValueCommentManager.UpdateComment(Value1, Value1.Comment);
            }
            else
            {
                Value1 = ArgumentValue.Null;
            }
            if (_values.Length > 1)
            {
                Value2 = _values[1];
                InstructionCommentManager.ModifyValue(this, oldvaluestring3, Value2.ValueString);
                ValueCommentManager.UpdateComment(Value2, Value2.Comment);
            }
            else
            {
                Value2 = ArgumentValue.Null;
            }
            if (_values.Length > 2)
            {
                Value3 = _values[2];
                InstructionCommentManager.ModifyValue(this, oldvaluestring4, Value3.ValueString);
                ValueCommentManager.UpdateComment(Value3, Value3.Comment);
            }
            else
            {
                Value3 = ArgumentValue.Null;
            }
            if (_values.Length > 3)
            {
                Value4 = _values[3];
                InstructionCommentManager.ModifyValue(this, oldvaluestring5, Value4.ValueString);
                ValueCommentManager.UpdateComment(Value4, Value4.Comment);
            }
            else
            {
                Value4 = ArgumentValue.Null;
            }
            UpdateCommentContent();
        }
예제 #12
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(4);
         *  dialog.ShowLine1("D:", ArgumentValue);
         *  dialog.ShowLine3("V:", VelocityValue);
         *  dialog.ShowLine5("OUT1:", OutputValue1);
         *  dialog.ShowLine7("OUT2:", OutputValue2);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var  oldvaluestring1 = ArgumentValue.ValueString;
            var  oldvaluestring2 = VelocityValue.ValueString;
            var  oldvaluestring3 = OutputValue1.ValueString;
            var  oldvaluestring4 = OutputValue2.ValueString;
            bool check1          = ValueParser.CheckValueString(valueStrings[0], new Regex[] {
                ValueParser.VerifyWordRegex3
            });
            bool check2 = ValueParser.CheckValueString(valueStrings[2], new Regex[] {
                ValueParser.VerifyWordRegex3, ValueParser.VerifyIntKHValueRegex
            });
            bool check3 = ValueParser.CheckValueString(valueStrings[4], new Regex[] {
                ValueParser.VerifyBitRegex4
            });
            bool check4 = ValueParser.CheckValueString(valueStrings[6], new Regex[] {
                ValueParser.VerifyBitRegex4
            });

            if (check1 && check2 && check3)
            {
                ArgumentValue = ValueParser.ParseWordValue(valueStrings[0], contextDevice);
                VelocityValue = ValueParser.ParseWordValue(valueStrings[2], contextDevice);
                OutputValue1  = ValueParser.ParseBitValue(valueStrings[4], contextDevice);
                OutputValue2  = ValueParser.ParseBitValue(valueStrings[6], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, ArgumentValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, VelocityValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring3, OutputValue1.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring3, OutputValue2.ValueString);
                ValueCommentManager.UpdateComment(ArgumentValue, valueStrings[1]);
                ValueCommentManager.UpdateComment(VelocityValue, valueStrings[3]);
                ValueCommentManager.UpdateComment(OutputValue1, valueStrings[5]);
                ValueCommentManager.UpdateComment(OutputValue2, valueStrings[7]);
            }
            else if (!check1)
            {
                throw new ValueParseException("D格式非法!");
            }
            else if (!check2)
            {
                throw new ValueParseException("V格式非法");
            }
            else if (!check3)
            {
                throw new ValueParseException("OUT1格式非法!");
            }
            else if (!check4)
            {
                throw new ValueParseException("OUT2格式非法!");
            }
        }
예제 #13
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(4);
         *  dialog.ShowLine1("BV:", BackValue);
         *  dialog.ShowLine3("CV:", CrawValue);
         *  dialog.ShowLine5("SIGN:", SignalValue);
         *  dialog.ShowLine7("OUT:", OutputValue);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var  oldvaluestring1 = BackValue.ValueString;
            var  oldvaluestring2 = CrawValue.ValueString;
            var  oldvaluestring3 = SignalValue.ValueString;
            var  oldvaluestring4 = OutputValue.ValueString;
            bool check1          = ValueParser.CheckValueString(valueStrings[0], new Regex[] {
                ValueParser.VerifyWordRegex3
            });
            bool check2 = ValueParser.CheckValueString(valueStrings[2], new Regex[] {
                ValueParser.VerifyWordRegex3, ValueParser.VerifyIntKHValueRegex
            });
            bool check3 = ValueParser.CheckValueString(valueStrings[4], new Regex[] {
                ValueParser.VerifyBitRegex5
            });
            bool check4 = ValueParser.CheckValueString(valueStrings[6], new Regex[] {
                ValueParser.VerifyBitRegex4
            });

            if (check1 && check2 && check3 && check4)
            {
                BackValue   = ValueParser.ParseWordValue(valueStrings[0], contextDevice);
                CrawValue   = ValueParser.ParseWordValue(valueStrings[2], contextDevice);
                SignalValue = ValueParser.ParseBitValue(valueStrings[4], contextDevice);
                OutputValue = ValueParser.ParseBitValue(valueStrings[6], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, BackValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, CrawValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring3, SignalValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring3, OutputValue.ValueString);
                ValueCommentManager.UpdateComment(BackValue, valueStrings[1]);
                ValueCommentManager.UpdateComment(CrawValue, valueStrings[3]);
                ValueCommentManager.UpdateComment(SignalValue, valueStrings[5]);
                ValueCommentManager.UpdateComment(OutputValue, valueStrings[7]);
            }
            else if (!check1)
            {
                throw new ValueParseException("BV格式非法!");
            }
            else if (!check2)
            {
                throw new ValueParseException("CV格式非法");
            }
            else if (!check3)
            {
                throw new ValueParseException("SIGN格式非法!");
            }
            else if (!check4)
            {
                throw new ValueParseException("OUT格式非法!");
            }
        }
예제 #14
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(4);
         *  dialog.Title = InstructionName;
         *  dialog.ShowLine1("IN1:", InputValue1);
         *  dialog.ShowLine3("IN2:", InputValue2);
         *  dialog.ShowLine5("IN3:", InputValue3);
         *  dialog.ShowLine7("OUT:", OutputValue);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var  oldvaluestring1 = InputValue1.ValueString;
            var  oldvaluestring2 = InputValue2.ValueString;
            var  oldvaluestring3 = InputValue3.ValueString;
            var  oldvaluestring4 = OutputValue.ValueString;
            bool check1          = ValueParser.CheckValueString(valueStrings[0], new Regex[] {
                ValueParser.VerifyDoubleWordRegex1, ValueParser.VerifyIntKHValueRegex
            });
            bool check2 = ValueParser.CheckValueString(valueStrings[2], new Regex[] {
                ValueParser.VerifyDoubleWordRegex1, ValueParser.VerifyIntKHValueRegex
            });
            bool check3 = ValueParser.CheckValueString(valueStrings[4], new Regex[] {
                ValueParser.VerifyDoubleWordRegex1, ValueParser.VerifyIntKHValueRegex
            });
            bool check4 = ValueParser.CheckValueString(valueStrings[6], new Regex[] {
                ValueParser.VerifyBitRegex3
            });

            if (check1 && check2 && check3 && check4)
            {
                InputValue1 = ValueParser.ParseDoubleWordValue(valueStrings[0], contextDevice);
                InputValue2 = ValueParser.ParseDoubleWordValue(valueStrings[2], contextDevice);
                InputValue3 = ValueParser.ParseDoubleWordValue(valueStrings[4], contextDevice);
                OutputValue = ValueParser.ParseBitValue(valueStrings[6], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, InputValue1.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, InputValue2.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring3, InputValue3.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring4, OutputValue.ValueString);
                ValueCommentManager.UpdateComment(InputValue1, valueStrings[1]);
                ValueCommentManager.UpdateComment(InputValue2, valueStrings[3]);
                ValueCommentManager.UpdateComment(InputValue3, valueStrings[5]);
                ValueCommentManager.UpdateComment(OutputValue, valueStrings[7]);
            }
            else if (!check1)
            {
                throw new ValueParseException("IN1格式错误!");
            }
            else if (!check2)
            {
                throw new ValueParseException("IN2格式错误!");
            }
            else if (!check3)
            {
                throw new ValueParseException("IN3格式错误!");
            }
            else if (!check4)
            {
                throw new ValueParseException("OUT格式错误!");
            }
        }
예제 #15
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(1);
         *  dialog.Title = InstructionName;
         *  dialog.ShowLine4("LBL",LBLIndex);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var oldvaluestring = LBLIndex.ValueString;

            if (ValueParser.CheckValueString(valueStrings[0], new Regex[] { ValueParser.VerifyIntKHValueRegex }))
            {
                LBLIndex = ValueParser.ParseWordValue(valueStrings[0], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring, LBLIndex.ValueString);
                ValueCommentManager.UpdateComment(LBLIndex, valueStrings[1]);
            }
            else
            {
                throw new ValueParseException("Unexpected input");
            }
        }
예제 #16
0
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var oldvaluestring = Value.ValueString;

            if (ValueParser.CheckValueString(valueStrings[0], new Regex[] { ValueParser.VerifyBitRegex3 }))
            {
                Value = ValueParser.ParseBitValue(valueStrings[0], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring, Value.ValueString);
                ValueCommentManager.UpdateComment(Value, valueStrings[1]);
            }
            else
            {
                throw new ValueParseException("Unexpected input");
            }
        }
예제 #17
0
        public static void ImportExcute(string filename, IEnumerable <ValueCommentAlias> elementCollection, string separator)
        {
            StreamReader stream = new StreamReader(File.OpenRead(filename));
            string       line;

            while (!stream.EndOfStream)
            {
                line = stream.ReadLine();
                string[] eles = line.Split(new string[] { separator }, StringSplitOptions.None);
                int      last, first = line.IndexOf(separator);
                string   name = line.Substring(0, first);
                string   alias, comment;
                if (QuotationOperation(ref line, out comment, out alias, out last, separator))
                {
                    if (elementCollection.ToList().Exists(x => { return(x.Name == name); }))
                    {
                        var valueCommentAlias = elementCollection.Where(x => { return(x.Name == name); }).First();
                        if (valueCommentAlias.Comment != comment)
                        {
                            if (comment == string.Empty)
                            {
                                valueCommentAlias.HasComment = false;
                            }
                            else
                            {
                                valueCommentAlias.HasComment = true;
                            }
                            ValueCommentManager.UpdateComment(name, comment);
                        }
                        if (valueCommentAlias.Alias != alias && !elementCollection.ToList().Exists(x => { return(x.Name != name && x.Alias == alias && alias != string.Empty); }))
                        {
                            if (alias == string.Empty)
                            {
                                valueCommentAlias.HasAlias = false;
                            }
                            else
                            {
                                valueCommentAlias.HasAlias = true;
                            }
                            ValueAliasManager.UpdateAlias(name, alias);
                        }
                    }
                }
            }
            stream.Close();
        }
예제 #18
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(1);
         *  dialog.ShowLine4("OUT:", OutputValue);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var  oldvaluestring1 = OutputValue.ValueString;
            bool check1          = ValueParser.CheckValueString(valueStrings[0], new Regex[] {
                ValueParser.VerifyBitRegex4
            });

            if (check1)
            {
                OutputValue = ValueParser.ParseBitValue(valueStrings[0], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, OutputValue.ValueString);
                ValueCommentManager.UpdateComment(OutputValue, valueStrings[1]);
            }
            else
            {
                throw new ValueParseException("OUT格式非法!");
            }
        }
예제 #19
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(2);
         *  dialog.Title = InstructionName;
         *  dialog.ShowLine3("DW1",Value1);
         *  dialog.ShowLine5("DW2",Value2);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var oldvaluestring1 = Value1.ValueString;
            var oldvaluestring2 = Value2.ValueString;

            if (ValueParser.CheckValueString(valueStrings[0], new Regex[] { ValueParser.VerifyDoubleWordRegex1, ValueParser.VerifyIntKHValueRegex }) && ValueParser.CheckValueString(valueStrings[2], new Regex[] { ValueParser.VerifyDoubleWordRegex1, ValueParser.VerifyIntKHValueRegex }))
            {
                Value1 = ValueParser.ParseDoubleWordValue(valueStrings[0], contextDevice);
                Value2 = ValueParser.ParseDoubleWordValue(valueStrings[2], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, Value1.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, Value2.ValueString);
                ValueCommentManager.UpdateComment(Value1, valueStrings[1]);
                ValueCommentManager.UpdateComment(Value2, valueStrings[3]);
            }
            else
            {
                throw new ValueParseException("Unexpected input");
            }
        }
예제 #20
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(2);
         *  dialog.Title = InstructionName;
         *  dialog.ShowLine3("In",InputValue);
         *  dialog.ShowLine5("Out",OutputValue);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var oldvaluestring1 = InputValue.ValueString;
            var oldvaluestring2 = OutputValue.ValueString;

            if (ValueParser.CheckValueString(valueStrings[0], new Regex[] { ValueParser.VerifyFloatRegex, ValueParser.VerifyFloatKValueRegex }) && ValueParser.CheckValueString(valueStrings[2], new Regex[] { ValueParser.VerifyFloatRegex }))
            {
                InputValue  = ValueParser.ParseFloatValue(valueStrings[0], contextDevice);
                OutputValue = ValueParser.ParseFloatValue(valueStrings[2], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, InputValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, OutputValue.ValueString);
                ValueCommentManager.UpdateComment(InputValue, valueStrings[1]);
                ValueCommentManager.UpdateComment(OutputValue, valueStrings[3]);
            }
            else
            {
                throw new ValueParseException("Unexpected input");
            }
        }
예제 #21
0
        private void OnClearButtonClick(object sender, RoutedEventArgs e)
        {
            var selectedItems = ElementDataGrid.SelectedItems;

            foreach (var item in selectedItems)
            {
                var tempitem = item as ValueCommentAlias;
                if (tempitem.Comment != string.Empty)
                {
                    tempitem.Comment    = string.Empty;
                    tempitem.HasComment = false;
                    ValueCommentManager.UpdateComment(tempitem.Name, tempitem.Comment);
                }
                if (tempitem.Alias != string.Empty)
                {
                    tempitem.Alias    = string.Empty;
                    tempitem.HasAlias = false;
                    ValueAliasManager.UpdateAlias(tempitem.Name, tempitem.Alias);
                }
            }
        }
예제 #22
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(3);
         *  dialog.Title = InstructionName;
         *  dialog.ShowLine2("COM:", COMPort);
         *  dialog.ShowLine4("ADDR:", BaseValue);
         *  dialog.ShowLine6("LEN:", CountValue);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var  oldvaluestring1 = COMPort.ValueString;
            var  oldvaluestring2 = BaseValue.ValueString;
            var  oldvaluestring3 = CountValue.ValueString;
            bool check1          = ValueParser.CheckValueString(valueStrings[0], new Regex[] {
                ValueParser.VerifyIntKHValueRegex
            });
            bool check2 = ValueParser.CheckValueString(valueStrings[2], new Regex[] {
                ValueParser.VerifyWordRegex3
            });
            bool check3 = ValueParser.CheckValueString(valueStrings[4], new Regex[] {
                ValueParser.VerifyWordRegex3, ValueParser.VerifyIntKHValueRegex
            });

            if (check1 && check2 && check3)
            {
                COMPort    = ValueParser.ParseWordValue(valueStrings[0], contextDevice);
                BaseValue  = ValueParser.ParseWordValue(valueStrings[2], contextDevice);
                CountValue = ValueParser.ParseWordValue(valueStrings[4], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, COMPort.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, BaseValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring3, CountValue.ValueString);
                ValueCommentManager.UpdateComment(COMPort, valueStrings[1]);
                ValueCommentManager.UpdateComment(BaseValue, valueStrings[3]);
                ValueCommentManager.UpdateComment(CountValue, valueStrings[5]);
            }
            else if (!check1)
            {
                throw new ValueParseException("COM格式错误!");
            }
            else if (!check2)
            {
                throw new ValueParseException("ADDR格式错误!");
            }
            else if (!check3)
            {
                throw new ValueParseException("LEN格式错误!");
            }
        }
예제 #23
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(3);
         *  dialog.Title = InstructionName;
         *  dialog.ShowLine2("SV:", SourceValue);
         *  dialog.ShowLine4("TV:", DestinationValue);
         *  dialog.ShowLine6("CT:", CountValue);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var  oldvaluestring1 = SourceValue.ValueString;
            var  oldvaluestring2 = DestinationValue.ValueString;
            var  oldvaluestring3 = CountValue.ValueString;
            bool check1          = ValueParser.CheckValueString(valueStrings[0], new Regex[] {
                ValueParser.VerifyDoubleWordRegex1, ValueParser.VerifyIntKHValueRegex
            });
            bool check2 = ValueParser.CheckValueString(valueStrings[2], new Regex[] {
                ValueParser.VerifyDoubleWordRegex1
            });
            bool check3 = ValueParser.CheckValueString(valueStrings[4], new Regex[] {
                ValueParser.VerifyWordRegex3, ValueParser.VerifyIntKHValueRegex
            });

            if (check1 && check2 && check3)
            {
                SourceValue      = ValueParser.ParseDoubleWordValue(valueStrings[0], contextDevice);
                DestinationValue = ValueParser.ParseDoubleWordValue(valueStrings[2], contextDevice);
                CountValue       = ValueParser.ParseWordValue(valueStrings[4], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, SourceValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, DestinationValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring3, CountValue.ValueString);
                ValueCommentManager.UpdateComment(SourceValue, valueStrings[1]);
                ValueCommentManager.UpdateComment(DestinationValue, valueStrings[3]);
                ValueCommentManager.UpdateComment(CountValue, valueStrings[5]);
            }
            else if (!check1)
            {
                throw new ValueParseException("SV格式错误!");
            }
            else if (!check2)
            {
                throw new ValueParseException("TV格式错误!");
            }
            else if (!check3)
            {
                throw new ValueParseException("CT格式错误!");
            }
        }
예제 #24
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(3);
         *  dialog.Title = InstructionName;
         *  dialog.ShowLine2("S",SourceValue);
         *  dialog.ShowLine4("D",DestinationValue);
         *  dialog.ShowLine6("N",Count);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var oldvaluestring1 = SourceValue.ValueString;
            var oldvaluestring2 = DestinationValue.ValueString;
            var oldvaluestring3 = Count.ValueString;

            if (ValueParser.CheckValueString(valueStrings[0], new Regex[] { ValueParser.VerifyWordRegex1 }) && ValueParser.CheckValueString(valueStrings[2], new Regex[] { ValueParser.VerifyWordRegex2 }) && ValueParser.CheckValueString(valueStrings[4], new Regex[] { ValueParser.VerifyWordRegex3, ValueParser.VerifyIntKHValueRegex }))
            {
                SourceValue      = ValueParser.ParseWordValue(valueStrings[0], contextDevice);
                DestinationValue = ValueParser.ParseWordValue(valueStrings[2], contextDevice);
                Count            = ValueParser.ParseWordValue(valueStrings[4], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, SourceValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, DestinationValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring3, Count.ValueString);
                ValueCommentManager.UpdateComment(SourceValue, valueStrings[1]);
                ValueCommentManager.UpdateComment(DestinationValue, valueStrings[3]);
                ValueCommentManager.UpdateComment(Count, valueStrings[5]);
            }
            else
            {
                throw new ValueParseException("Unexpected input");
            }
        }
예제 #25
0
        unsafe static private void ReadRegisters()
        {
            int sz = ReadE16();

            for (int i = 0; i < sz; i++)
            {
                UploadRegisterType type    = (UploadRegisterType)(edata[eid++]);
                IValueModel        ivmodel = null;
                switch (type)
                {
                case UploadRegisterType.K:
                    ivmodel = new KWordValue(ReadE16());
                    break;

                case UploadRegisterType.K32:
                    ivmodel = new KDoubleWordValue(ReadE32());
                    break;

                case UploadRegisterType.H:
                    ivmodel = new HWordValue(ReadE16());
                    break;

                case UploadRegisterType.H32:
                    ivmodel = new HDoubleWordValue(ReadE32());
                    break;

                case UploadRegisterType.F:
                    int value = ReadE32();
                    ivmodel = new KFloatValue(*(float *)(&value));
                    break;

                case UploadRegisterType.STR:
                    ivmodel = new StringValue(ReadTextE8());
                    break;
                }
                if (ivmodel == null)
                {
                    int index = ReadE16();
                    UploadRegisterType itype = (UploadRegisterType)(edata[eid++]);
                    int       iindex         = edata[eid++];
                    WordValue intra          = null;
                    switch (itype)
                    {
                    case UploadRegisterType.V:
                        intra = new VWordValue((uint)iindex);
                        break;

                    case UploadRegisterType.Z:
                        intra = new ZWordValue((uint)iindex);
                        break;

                    default:
                        intra = WordValue.Null;
                        break;
                    }
                    switch (type)
                    {
                    case UploadRegisterType.X:
                        ivmodel = new XBitValue((uint)index, intra);
                        break;

                    case UploadRegisterType.Y:
                        ivmodel = new YBitValue((uint)index, intra);
                        break;

                    case UploadRegisterType.S:
                        ivmodel = new SBitValue((uint)index, intra);
                        break;

                    case UploadRegisterType.M:
                        ivmodel = new MBitValue((uint)index, intra);
                        break;

                    case UploadRegisterType.C:
                        ivmodel = new CBitValue((uint)index, intra);
                        break;

                    case UploadRegisterType.T:
                        ivmodel = new TBitValue((uint)index, intra);
                        break;

                    case UploadRegisterType.D:
                        ivmodel = new DWordValue((uint)index, intra);
                        break;

                    case UploadRegisterType.AI:
                        ivmodel = new AIWordValue((uint)index, intra);
                        break;

                    case UploadRegisterType.AO:
                        ivmodel = new AOWordValue((uint)index, intra);
                        break;

                    case UploadRegisterType.CV:
                        ivmodel = new CVWordValue((uint)index, intra);
                        break;

                    case UploadRegisterType.TV:
                        ivmodel = new TVWordValue((uint)index, intra);
                        break;

                    case UploadRegisterType.CV32:
                        ivmodel = new CV32DoubleWordValue((uint)index, intra);
                        break;

                    case UploadRegisterType.V:
                        ivmodel = new VWordValue((uint)index);
                        break;

                    case UploadRegisterType.Z:
                        ivmodel = new ZWordValue((uint)index);
                        break;
                    }
                }
                regs.Add(ivmodel);
                if ((option & OPTION_COMMENT) != 0)
                {
                    string comment = ReadTextE8();
                    ValueCommentManager.UpdateComment(ivmodel, comment);
                }
            }
        }
예제 #26
0
        /*
         * public override IPropertyDialog PreparePropertyDialog()
         * {
         *  var dialog = new ElementPropertyDialog(5);
         *  dialog.Title = InstructionName;
         *  dialog.ShowLine1("SV:", SourceValue);
         *  dialog.ShowLine2("SS:", SourceStart);
         *  dialog.ShowLine4("SC:", SourceCount);
         *  dialog.ShowLine6("DV:", DestinationValue);
         *  dialog.ShowLine7("DS:", DestinationStart);
         *  return dialog;
         * }
         */
        public override void AcceptNewValues(IList <string> valueStrings, Device contextDevice)
        {
            var  oldvaluestring1 = SourceValue.ValueString;
            var  oldvaluestring2 = SourceStart.ValueString;
            var  oldvaluestring3 = SourceCount.ValueString;
            var  oldvaluestring4 = DestinationValue.ValueString;
            var  oldvaluestring5 = DestinationStart.ValueString;
            bool check1          = ValueParser.CheckValueString(valueStrings[0], new Regex[] {
                ValueParser.VerifyWordRegex1
            });
            bool check2 = ValueParser.CheckValueString(valueStrings[2], new Regex[] {
                ValueParser.VerifyIntKHValueRegex
            });
            bool check3 = ValueParser.CheckValueString(valueStrings[4], new Regex[] {
                ValueParser.VerifyIntKHValueRegex
            });
            bool check4 = ValueParser.CheckValueString(valueStrings[6], new Regex[] {
                ValueParser.VerifyWordRegex1
            });
            bool check5 = ValueParser.CheckValueString(valueStrings[8], new Regex[] {
                ValueParser.VerifyIntKHValueRegex
            });

            if (check1 && check2 && check3 && check4 && check5)
            {
                SourceValue      = ValueParser.ParseWordValue(valueStrings[0], contextDevice);
                SourceStart      = ValueParser.ParseWordValue(valueStrings[2], contextDevice);
                SourceCount      = ValueParser.ParseWordValue(valueStrings[4], contextDevice);
                DestinationValue = ValueParser.ParseWordValue(valueStrings[6], contextDevice);
                DestinationStart = ValueParser.ParseWordValue(valueStrings[8], contextDevice);
                InstructionCommentManager.ModifyValue(this, oldvaluestring1, SourceValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring2, SourceStart.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring3, SourceCount.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring4, DestinationValue.ValueString);
                InstructionCommentManager.ModifyValue(this, oldvaluestring5, DestinationStart.ValueString);
                ValueCommentManager.UpdateComment(SourceValue, valueStrings[1]);
                ValueCommentManager.UpdateComment(SourceStart, valueStrings[3]);
                ValueCommentManager.UpdateComment(SourceCount, valueStrings[5]);
                ValueCommentManager.UpdateComment(DestinationValue, valueStrings[7]);
                ValueCommentManager.UpdateComment(DestinationStart, valueStrings[9]);
            }
            else if (!check1)
            {
                throw new ValueParseException("SV格式错误!");
            }
            else if (!check2)
            {
                throw new ValueParseException("SS格式错误!");
            }
            else if (!check3)
            {
                throw new ValueParseException("SC格式错误!");
            }
            else if (!check4)
            {
                throw new ValueParseException("DV格式错误!");
            }
            else if (!check5)
            {
                throw new ValueParseException("DS格式错误!");
            }
        }