public static void Add(ImitatorJournalItem imitatorJournalItem) { lock (lockObject) { ImitatorJournalItems.Add(imitatorJournalItem); if (ImitatorJournalItems.Count > 1000) ImitatorJournalItems.RemoveAt(0); Count = imitatorJournalItem.GkNo; } }
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; }
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(); }
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; }
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); }
void OnSetManualRegime() { Regime = Regime.Manual; SetStateBit(GKStateBit.Norm, false); SetStateBit(GKStateBit.Ignore, false); var journalItem = new ImitatorJournalItem(2, 10, 1, 0); AddJournalItem(journalItem); RecalculateOutputLogic(); }
void OnSetAutomaticRegime() { Regime = Regime.Automatic; var journalItem = new ImitatorJournalItem(2, 10, 0, 0); SetStateBit(GKStateBit.Ignore, false); SetStateBit(GKStateBit.Norm, true, journalItem); }
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); }