Ejemplo n.º 1
0
		static void Events_WriteItems(object sender, WriteItemsArgs e)
		{
		}
Ejemplo n.º 2
0
		static void Events_WriteItems(object sender, WriteItemsArgs e)
		{
			GKBase gkBase;

			for (int i = 0; i < e.Count; i++)
			{
				if (e.ItemIds[i].TagId == 0)
					continue;

				var tag = Tags.FirstOrDefault(t => t.TagId == e.ItemIds[i].TagId);

				if (tag == null)
				{
					e.Errors[i] = ErrorCodes.False;
					e.ItemIds[i].TagId = 0;
					e.MasterError = ErrorCodes.False;
					continue;
				}

				try
				{
					var stateCode = Convert.ToInt32(e.Values[i]);
					var cmd = (Commands)stateCode;

					gkBase = GKObjects.FirstOrDefault(x => x.UID == tag.UID);

					if (gkBase == null)
					{
						// Необходимо, что бы значение не было записано в тег,
						// а приходило по обратной связи после выполения команды
						// throw new CancelWritingException();
						e.Errors[i] = ErrorCodes.False;
						e.ItemIds[i].TagId = 0;
						e.MasterError = ErrorCodes.False;
						continue;
					}
					else
					{
						ExecuteCmd(gkBase, cmd);
						e.Errors[i] = ErrorCodes.False;
						e.ItemIds[i].TagId = 0;
						e.MasterError = ErrorCodes.False;
					}
				}
				catch (Exception ex)
				{
					e.Errors[i] = (ErrorCodes)Marshal.GetHRForException(ex);
					e.ItemIds[i].TagId = 0;
					e.MasterError = ErrorCodes.False;
				}
			}
		}