Пример #1
0
		public static void Add(ImitatorJournalItem imitatorJournalItem)
		{
			lock (lockObject)
			{
				ImitatorJournalItems.Add(imitatorJournalItem);
				if (ImitatorJournalItems.Count > 1000)
					ImitatorJournalItems.RemoveAt(0);
				Count = imitatorJournalItem.GkNo;
			}
		}
Пример #2
0
		public bool SetStateBit(GKStateBit stateBit, bool value, ImitatorJournalItem additionalJournalItem = null)
		{
			var stateBitViewModel = StateBits.FirstOrDefault(x => x.StateBit == stateBit);
			if (stateBitViewModel != null)
			{
				if (stateBitViewModel.IsActive != value)
				{
					stateBitViewModel.IsActive = value;
					OnStateBitChanged(stateBit, value, additionalJournalItem);
					NotifyIndicators(stateBit, value);
					return true;
				}
			}
			return false;
		}
Пример #3
0
		void OnStateBitChanged(GKStateBit stateBit, bool isActive, ImitatorJournalItem additionalJournalItem = null)
		{
			ImitatorJournalItem journalItem = null;
			if (stateBit == GKStateBit.Failure)
			{
				journalItem = new ImitatorJournalItem(2, 6, (byte)(isActive ? 1 : 0), (byte)(isActive ? 1 : 0));
				AddJournalItem(additionalJournalItem ?? journalItem);
			}
			else if (stateBit == GKStateBit.Test)
			{
				journalItem = new ImitatorJournalItem(2, 5, 255, (byte)(isActive ? 1 : 0));
				AddJournalItem(additionalJournalItem ?? journalItem);
			}
			else if (isActive)
			{
				if (stateBit != GKStateBit.Norm)
				{
					CurrentOnDelay = 0;
					CurrentOffDelay = 0;
					CurrentHoldDelay = 0;
					TurningState = TurningState.None;
				}
				if (stateBit == GKStateBit.On)
				{
					journalItem = new ImitatorJournalItem(2, 9, 2, 0);
					if (HoldDelay != 0 && !(GKBase is GKDoor && Regime == Regime.Manual))
					{
						CurrentHoldDelay = HoldDelay;
						TurningState = TurningState.Holding;
					}
				}

				if (stateBit == GKStateBit.TurningOn)
				{
					journalItem = new ImitatorJournalItem(2, 9, 4, 0);
					if (OnDelay != 0)
					{
						CurrentOnDelay = OnDelay;
						TurningState = TurningState.TurningOn;
					}
				}

				if (stateBit == GKStateBit.TurningOff)
				{
					journalItem = new ImitatorJournalItem(2, 9, 5, 0);
					if (OffDelay != 0)
					{
						CurrentOffDelay = OffDelay;
						TurningState = TurningState.TurningOff;
						SetStateBit(GKStateBit.Fire1, false);
						SetStateBit(GKStateBit.Fire2, false);
					}
				}

				if (stateBit == GKStateBit.Off)
				{
					AdditionalShortParameters[0] = 0;
					AdditionalShortParameters[1] = 0;
					AdditionalShortParameters[2] = 0;
					journalItem = new ImitatorJournalItem(2, 9, 3, 3);
					SetStateBit(GKStateBit.Attention, false);
					SetStateBit(GKStateBit.Fire1, false);
					SetStateBit(GKStateBit.Fire2, false);
				}

				if (stateBit == GKStateBit.Norm)
				{
					journalItem = new ImitatorJournalItem(2, 14, 0, 0);
				}

				if (stateBit == GKStateBit.Fire1)
				{
					journalItem = new ImitatorJournalItem(2, 2, 0, 0);
				}

				if (stateBit == GKStateBit.Fire2)
				{
					journalItem = new ImitatorJournalItem(2, 3, 0, 0);
				}

				if (stateBit == GKStateBit.Ignore)
				{
					journalItem = new ImitatorJournalItem(2, 10, 2, 0);
				}

				if (stateBit == GKStateBit.Attention)
				{
					journalItem = new ImitatorJournalItem(2, 4, 0, 0);
				}

				AddJournalItem(additionalJournalItem ?? journalItem);
			}

			if (additionalJournalItem != null || journalItem != null)
				RecalculateOutputLogic();
		}
Пример #4
0
		void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
		{
			Thread.Sleep(TimeSpan.FromSeconds(3));
			var journalItem = new ImitatorJournalItem(2, 14, 0, 0);
			SetStateBit(GKStateBit.Attention, false);
			SetStateBit(GKStateBit.Fire1, false);
			SetStateBit(GKStateBit.Fire2, false);
			AddJournalItem(journalItem);
			CurrentCardNo = 0;
		}
Пример #5
0
		public void AddJournalItem(ImitatorJournalItem journalItem)
		{
			journalItem.UNUSED_KauNo = 0;
			journalItem.UNUSED_KauAddress = 0;
			journalItem.GkObjectNo = GKBaseDescriptor.GetDescriptorNo();
			journalItem.ObjectState = StatesToInt();
			if (GKBaseDescriptor.GKBase is GKDevice)
			{
				journalItem.ObjectDeviceType = (short)(GKBaseDescriptor.GKBase as GKDevice).Driver.DriverTypeNo;
				journalItem.ObjectDeviceAddress = (short)(((GKBaseDescriptor.GKBase as GKDevice).ShleifNo - 1) * 256 + (GKBaseDescriptor.GKBase as GKDevice).IntAddress);
			}
			using (var dbService = new DbService())
			{
				dbService.ImitatorJournalTranslator.Add(journalItem);
			}
			JournalCash.Add(journalItem);
		}
Пример #6
0
		void OnSetManualRegime()
		{
			Regime = Regime.Manual;
			SetStateBit(GKStateBit.Norm, false);
			SetStateBit(GKStateBit.Ignore, false);
			var journalItem = new ImitatorJournalItem(2, 10, 1, 0);
			AddJournalItem(journalItem);
			RecalculateOutputLogic();
		}
Пример #7
0
		void OnSetAutomaticRegime()
		{
			Regime = Regime.Automatic;
			var journalItem = new ImitatorJournalItem(2, 10, 0, 0);
			SetStateBit(GKStateBit.Ignore, false);
			SetStateBit(GKStateBit.Norm, true, journalItem);
		}
Пример #8
0
		void AddAccessJournalItem(ImitatorUser user, bool isAccess, short gkDescriptorNo)
		{
			var journalItem = new ImitatorJournalItem(0, isAccess ? (byte)13 : (byte)15, 0, 0);
			journalItem.ObjectDeviceAddress = gkDescriptorNo;
			if (user != null)
			{
				journalItem.ObjectFactoryNo = user.GKNo;
			}
			AddJournalItem(journalItem);
		}