Пример #1
0
        public ModbusClientNode(INodeContext context)
        {
            context.ThrowIfNull("context");
            ITypeService typeService = context.GetService <ITypeService>();

            this.TimeSpan          = typeService.CreateInt(PortTypes.Integer, "Abfrageinterval", 60);
            this.ModbusHost        = typeService.CreateString(PortTypes.String, "Modbus TCP Host");
            this.ModbusPort        = typeService.CreateInt(PortTypes.Integer, "Port", 502);
            this.ModbusID          = typeService.CreateInt(PortTypes.Integer, "Geräte ID", 1);
            this.ModbusID.MinValue = 1;
            this.ModbusID.MaxValue = 256;

            // --------------------------------------------------------------------------------------- //
            this.ModbusAddress1          = typeService.CreateInt(PortTypes.Integer, "Register Addresse", 1);
            this.ModbusAddress1.MinValue = 1;
            this.ModbusAddress1.MaxValue = 65535;

            this.FunctionCode = typeService.CreateEnum("ModbusFunction", "Funktion", FunctionCodeEnum.VALUES, FunctionCodeEnum.FC_03);

            this.DataType = typeService.CreateEnum("ModbusDataType", "Datentyp", DataTypeEnum.VALUES, DataTypeEnum.INT32);

            this.RegisterOrder = typeService.CreateEnum("ModbusRegisterOrder", "Register Reihenfolge", ByteOrderEnum.VALUES, ByteOrderEnum.LOW_HIGH);

            this.OutputValue1 = typeService.CreateDouble(PortTypes.Number, "Register Wert");

            this.ErrorMessage = typeService.CreateString(PortTypes.String, "RAW / Error");

            SchedulerService = context.GetService <ISchedulerService>();
        }
Пример #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BasicNode"/> class.
        /// </summary>
        /// <param name="context">The node context.</param>
        public InputSelector(INodeContext context)
            : base(context, INPUT_PREFIX)
        {
            context.ThrowIfNull("context");
            mTypeService = context.GetService <ITypeService>();

            // Initialize the input count, allowing range 2..99.
            mInputCount          = mTypeService.CreateInt(PortTypes.Integer, "InputCount", 2);
            mInputCount.MinValue = 2;
            mInputCount.MaxValue = 50;

            // Initialize inputs using a helper function that grows/shrinks the list of inputs
            // whenever the input count is changed
            mInputs = new List <AnyValueObject>();
            ListHelpers.ConnectListToCounter(mInputs, mInputCount,
                                             mTypeService.GetValueObjectCreator(PortTypes.Any, INPUT_PREFIX),
                                             updateOutputValues);

            // Initialize the input for the index of the input to select.
            mSelectIndexInput           = mTypeService.CreateInt(PortTypes.Integer, "InputSelectIndex");
            mSelectIndexInput.MinValue  = 0;
            mSelectIndexInput.MaxValue  = mInputCount.MaxValue - 1;
            mSelectIndexInput.ValueSet += updateOutputValues;

            // Initialize the selector for "send-on-select".
            mSelectAction = mTypeService.CreateEnum("ESelectAction2",
                                                    "SelectAction2", mSelectActionValues, "ResendCurrent");

            // Initialize the output
            mOutput = mTypeService.CreateAny(PortTypes.Any, "Output");
        }
Пример #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BasicNode"/> class.
        /// </summary>
        /// <param name="context">The node context.</param>
        public OutputSelector(INodeContext context)
            : base(context, OUTPUT_PREFIX)
        {
            context.ThrowIfNull("context");
            mTypeService = context.GetService <ITypeService>();

            // Initialize the input.
            mInput           = mTypeService.CreateAny(PortTypes.Any, "Input");
            mInput.ValueSet += updateOutputValues;

            // Initialize the output count.
            mOutputCount          = mTypeService.CreateInt(PortTypes.Integer, "OutputCount", 2);
            mOutputCount.MinValue = 1; // for use as Lock-out+ (Sperre+)
            mOutputCount.MaxValue = 50;

            // Initialize the input for the index of the output to select.
            mSelectIndexInput           = mTypeService.CreateInt(PortTypes.Integer, "OutputSelectIndex");
            mSelectIndexInput.MinValue  = -1;                    //  -1 selects no output
            mSelectIndexInput.MaxValue  = mOutputCount.MaxValue; // max selects no output
            mSelectIndexInput.ValueSet += updateOutputValues;

            // Initialize the selector for "send-on-select".
            mSelectAction = mTypeService.CreateEnum("ESelectAction3",
                                                    "SelectAction3", mSelectActionValues, "ResendCurrent");

            // Initialize outputs using a helper function that grows/shrinks the list of outputs
            // whenever the output count is changed
            mOutputs = new List <AnyValueObject>();
            ListHelpers.ConnectListToCounter(mOutputs, mOutputCount,
                                             mTypeService.GetValueObjectCreator(PortTypes.Any, OUTPUT_PREFIX), null);

            // Initialize outputs using a helper function that grows/shrinks the
            // list of outputs whenever the output count is changed
            mPrevOutputs = new List <AnyValueObject>();
            ListHelpers.ConnectListToCounter(mPrevOutputs, mOutputCount,
                                             mTypeService.GetValueObjectCreator(PortTypes.Any, ""), null, null);

            // Initialize the value to send upon "de-select".
            mIdleValueType = mTypeService.CreateEnum("EValueType",
                                                     "IdleValueType", mValueTypes, "none");
            updateIdleValueType();
            mIdleValueType.ValueSet += updateIdleValueType;
        }
Пример #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BasicNode"/> class.
        /// </summary>
        /// <param name="context">The node context.</param>
        public Statistics(INodeContext context)
            : base(context, INPUT_PREFIX)
        {
            context.ThrowIfNull("context");
            mTypeService = context.GetService <ITypeService>();

            // Initialize the input count.
            mInputCount          = mTypeService.CreateInt(PortTypes.Integer, "InputCount", 2);
            mInputCount.MinValue = 2;
            mInputCount.MaxValue = 50;

            // Initialize inputs using a helper function that grows/shrinks the list of inputs
            // whenever the input count is changed
            mInputs = new List <DoubleValueObject>();
            ListHelpers.ConnectListToCounter(mInputs, mInputCount,
                                             mTypeService.GetValueObjectCreator(PortTypes.Number, INPUT_PREFIX),
                                             updateOutputValues);

            // Initialize the selector for the aggregate function that shall be calculated.
            mSelectedFunction = mTypeService.CreateEnum("ESelectedFunction",
                                                        "SelectedFunction", mPriAllowedValues, /* defaultValue = */ "Avg");

            // Initialize the primary output
            mOutput1 = mTypeService.CreateDouble(PortTypes.Number, "Output1");

            // Initialize the selector for the secondary function (none by default) that shall
            // be calculated.
            string[] secAllowedValues = mAddAllowedValues.Concat(mPriAllowedValues).ToArray();
            mSecondaryFunction = mTypeService.CreateEnum("ESecondaryFunction",
                                                         "SecondaryFunction", secAllowedValues, /* defaultValue = */ "none");

            // Update output properties now, and whenever the function selections change
            updatePrimaryOutputProperties();
            updateSecondaryOutputProperties();
            mSelectedFunction.ValueSet  += updatePrimaryOutputProperties;
            mSecondaryFunction.ValueSet += updateSecondaryOutputProperties;
        }
Пример #5
0
        public SendMail(INodeContext context) : base(context)
        {
            context.ThrowIfNull("context");
            ITypeService typeService = context.GetService <ITypeService>();

            this.SendTrigger  = typeService.CreateBool(PortTypes.Bool, "Trigger");
            this.To           = typeService.CreateString(PortTypes.String, "Empfängeradresse");
            this.From         = typeService.CreateString(PortTypes.String, "Senderadresse");
            this.SmtpHost     = typeService.CreateString(PortTypes.String, "SMTP Server");
            this.SmtpPort     = typeService.CreateInt(PortTypes.Integer, "SMTP Port");
            this.ErrorMessage = typeService.CreateString(PortTypes.String, "Fehlertext");
            this.Encryption   = typeService.CreateEnum("SmtpEncryption", "Verschlüsselung", EncryptionTypes.VALUES);
            this.SmtpUser     = typeService.CreateString(PortTypes.String, "SMTP Benutzer");
            this.SmtpPassword = typeService.CreateString(PortTypes.String, "SMTP Kennwort");
        }
Пример #6
0
        /// <summary>
        /// Initializes a new instance.
        /// </summary>
        /// <param name="context">The node context.</param>
        public XmlJsonParser(INodeContext context)
            : base(context, OUTPUT_PREFIX)
        {
            context.ThrowIfNull("context");
            mTypeService = context.GetService <ITypeService>();

            // Initialize the input.
            mInput = mTypeService.CreateString(PortTypes.String, INPUT_NAME);

            // Initialize the selector for "XML" or "JSON".
            mSelectInput = mTypeService.CreateEnum("ESelectCode", "SelectCode", mSelectInputValues, "XML");

            // Initialize the output etc. parameter count.
            mCount           = mTypeService.CreateInt(PortTypes.Integer, "OutputCount", 1);
            mCount.MinValue  = 1;
            mCount.MaxValue  = 50;
            mCount.ValueSet += updateSelectOperationCount;

            // Initialize operation selector parameters
            mSelectOperation = new List <EnumValueObject>();
            updateSelectOperationCount();

            // Initialize operation parameters using a helper function that grows/shrinks
            // the list whenever the count is changed
            mSelectParam = new List <StringValueObject>();
            ListHelpers.ConnectListToCounter(mSelectParam, mCount,
                                             mTypeService.GetValueObjectCreator(PortTypes.String, SEL_OP_PARAM_PREFIX),
                                             null, updateSelectParamDefault);
            updateSelectParamDefault();

            // Initialize path parameters using a helper function that grows/shrinks the
            // list whenever the count is changed
            mPath = new List <StringValueObject>();
            ListHelpers.ConnectListToCounter(mPath, mCount,
                                             mTypeService.GetValueObjectCreator(PortTypes.String, PATH_PREFIX), null);

            // Initialize outputs using a helper function that grows/shrinks the list of
            // outputs whenever the output count is changed
            mOutput = new List <AnyValueObject>();
            ListHelpers.ConnectListToCounter(mOutput, mCount,
                                             mTypeService.GetValueObjectCreator(PortTypes.Any, OUTPUT_PREFIX), null);

            // Initialize error text output
            mError = mTypeService.CreateString(PortTypes.String, "RuntimeError");

            mCommaCulture = new CultureInfo("de");
            mPointCulture = new CultureInfo("en");
        }
Пример #7
0
        /// <summary>
        /// This method has been added as a ValueSet handler to the count parameter.
        /// It will therefore be called whenever the number of outputs (and operations)
        /// is changed, in order to update the list of operations.
        /// </summary>
        private void updateSelectOperationCount(object sender = null,
                                                ValueChangedEventArgs evArgs = null)
        {
            int newCount = mCount.Value;
            int oldCount = mSelectOperation.Count;

            // Truncate member lists if they are too long
            if (newCount < oldCount)
            {
                mSelectOperation.RemoveRange(newCount, oldCount - newCount);
            }
            else
            {
                for (int i = oldCount; i < newCount; i++)
                {
                    var e = mTypeService.CreateEnum("ESelectOperation",
                                                    OPERATION_PREFIX + (i + 1).ToString(),
                                                    mSelectOperationValues, OPERATION_1STASTEXT);
                    mSelectOperation.Add(e);
                }
            }
        }