Exemplo n.º 1
0
        /// <summary>
        /// Выполнить подпрограмму на устройстве без подтверждения успеха.
        /// </summary>
        /// <param name="target">Адрес устройства.</param>
        /// <param name="id">Идентификатор подпрограммы.</param>
        /// <param name="args">Аргументы, передаваемые в подпрограмму в виде массива пар,
        /// где первый элемент пары содержит тип параметра, второй - значение.</param>
        public void ExecuteProgram(Address target, int id, params Tuple <NmsValueType, object>[] args)
        {
            Contract.Requires(!IsDisposed);
            Contract.Requires(target != null);
            Contract.Requires(target.Type != AddressType.Empty);
            var execute = new NmsExecuteProgramInvocation(Address.Empty, target, id, false, args);

            OutgoingMessages.Post(execute);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Асинхронно выполнить подпрограмму на устройстве с подтверждением успеха операции.
        /// </summary>
        /// <param name="target">Адрес устройства.</param>
        /// <param name="id">Идентификатор подпрограммы.</param>
        /// <param name="options">Параметры NiBUS-операции.</param>
        /// <param name="args">Аргументы, передаваемые в подпрограмму в виде массива пар,
        /// где первый элемент пары содержит тип параметра, второй - значение.</param>
        /// <returns><see cref="Task"/> - асинхронная операция.</returns>
        public async Task ExecuteProgramConfirmedAsync(
            Address target,
            int id,
            NibusOptions options = null,
            params Tuple <NmsValueType, object>[] args)
        {
            //Contract.Requires(!IsDisposed);
            //Contract.Requires(target != null);
            //Contract.Requires(target.Type == AddressType.Hardware || target.Type == AddressType.Net);
            var execute = new NmsExecuteProgramInvocation(Address.Empty, target, id, true, args);

            await WaitForNmsResponseAsync(execute, options);
        }