Exemplo n.º 1
0
		/// <summary>
		/// Установка тарифа (CMD=0Bh)
		/// </summary>
		/// <param name="value"></param>
		/// <param name="isExternalCall"></param>
		/// <returns></returns>
		public IAsyncRequestResult WriteActiveTariff(byte value, bool isExternalCall = true)
		{
			if ((value < 1) || (value > 4))
			{
				throw new ArgumentOutOfRangeException("Amount",
					"Действующий тарифов должн быть от 1 до 4");
			}

			var request = new DataMessage(
				Mpower.GetValueConveter().ToArray(value))
			{
				Address = Address,
				CmdCode = Convert.ToByte(Mercury203CmdCode.WriteActiveTariff)
			};

			var transaction = new Transaction(this, TransactionType.UnicastMode, request)
			{
				Sender = this
			};

			var networkRequest = new NetworkRequest(transaction);

			if (_NetworkController == null)
			{
				transaction.Start();
				transaction.Abort(new TransactionError
				{
					ErrorCode = TransactionErrorCodes.DataLinkPortNotInstalled,
					Description = "Невозможно выполенить запрос. Не установлен контроллер сети"
				});
				networkRequest.AsyncRequestResult.SetCompleted();
			}
			else
			{
				_activeRequests.Add(networkRequest);
				_NetworkController.Write(networkRequest, isExternalCall);
			}

			return (IAsyncRequestResult)networkRequest.AsyncRequestResult;
		}
Exemplo n.º 2
0
        public IAsyncRequestResult ReadGroupAddress(bool isExternalCall = true)
        {
            var request = new DataMessage()
            {
                Address = Address,
                CmdCode = Convert.ToByte(Mercury203CmdCode.ReadGroupAddress)
            };
            var transaction = new Transaction(this, TransactionType.UnicastMode, request)
            { 
                Sender = this 
            };

            var networkRequest = new NetworkRequest(transaction);

            if (_NetworkController == null)
            {
                transaction.Start();
                transaction.Abort(new TransactionError
                {
                    ErrorCode = TransactionErrorCodes.DataLinkPortNotInstalled,
                    Description = "Невозможно выполенить запрос. Не установлен контроллер сети"
                });
                networkRequest.AsyncRequestResult.SetCompleted();
            }
            else
            {
                _activeRequests.Add(networkRequest);
                _NetworkController.Write(networkRequest, isExternalCall);
            }
            return (IAsyncRequestResult)networkRequest.AsyncRequestResult;
        }
Exemplo n.º 3
0
		/// <summary>
		/// Широковешательная команда записи времени и даты во все устройтсва
		/// сети с указанным групповым адресом
		/// </summary>
		/// <param name="dateTime"></param>
		/// <param name="groupAddress">Групповой адрес устройтсв</param>
		/// <param name="networkController"></param>
		/// <param name="isExternalCall"></param>
		/// <returns></returns>
		/// <remarks>Ответ на данный тип запросов не приходит, 
		/// только создаётся временная выдержка</remarks>
		public static IAsyncRequestResult WriteDateTimeInGroupDevices(
			DateTime dateTime, 
			UInt32 groupAddress, 
			INetwrokController networkController, 
			bool isExternalCall = true)
		{
			var request = new DataMessage(
				new IncotexDataTimeTypeConverter().ToArray(IncotexDateTime.FromDateTime(dateTime)))
			{
				Address = groupAddress,
				CmdCode = Convert.ToByte(Mercury203CmdCode.WriteDateTime)
			};

			var transaction = new Transaction(null, TransactionType.BroadcastMode, request)
			{
				Sender = null
			};

			var networkRequest = new NetworkRequest(transaction);

			if (networkController == null)
			{
				transaction.Start();
				transaction.Abort(new TransactionError
				{
					ErrorCode = TransactionErrorCodes.DataLinkPortNotInstalled,
					Description = "Невозможно выполенить запрос. Не установлен контроллер сети"
				});
				networkRequest.AsyncRequestResult.SetCompleted();
			}
			else
			{
				networkController.Write(networkRequest, isExternalCall);
			}
			return (IAsyncRequestResult)networkRequest.AsyncRequestResult;
		}