예제 #1
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]);
            }
        }
예제 #2
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格式错误!");
            }
        }
예제 #3
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("预设值输入错误!");
            }
        }
예제 #4
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格式错误!");
            }
        }
예제 #5
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();
        }
예제 #6
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");
            }
        }
예제 #7
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");
            }
        }
예제 #8
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");
            }
        }
예제 #9
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");
            }
        }
예제 #10
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格式错误!");
            }
        }
예제 #11
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");
            }
        }