public static void AddCodeReaderLogic(FormulaBuilder formula, GKCodeReaderSettingsPart settingsPart, GKDevice device) { var stateBit = CodeReaderEnterTypeToStateBit(settingsPart.CodeReaderEnterType); formula.AddGetBit(stateBit, device); formula.Add(FormulaOperationType.BR, 2, 2); formula.Add(FormulaOperationType.CONST); var gotoFormulaOperation = formula.Add(FormulaOperationType.BR, 0, 0); var formulaNo = formula.FormulaOperations.Count; var codeIndex = 0; foreach (var codeUID in settingsPart.CodeUIDs) { var code = GKManager.DeviceConfiguration.Codes.FirstOrDefault(x => x.UID == codeUID); formula.AddWithGKBase(FormulaOperationType.KOD, 0, device); formula.AddWithGKBase(FormulaOperationType.CMPKOD, 1, code); if (codeIndex > 0) { formula.Add(FormulaOperationType.OR); } codeIndex++; } if (settingsPart.AccessLevel > 0) { formula.AddWithGKBase(FormulaOperationType.ACS, (byte)settingsPart.AccessLevel, device); if (codeIndex > 0) { formula.Add(FormulaOperationType.OR); } } gotoFormulaOperation.SecondOperand = (ushort)(formula.FormulaOperations.Count - formulaNo); }
public GKCodeReaderSettingsPart GetCodeReaderSettingsPart() { var codeReaderSettingsPart = new GKCodeReaderSettingsPart(); codeReaderSettingsPart.CodeReaderEnterType = SelectedEnterType; codeReaderSettingsPart.AccessLevel = AccessLevel; codeReaderSettingsPart.CodeUIDs = (from code in Codes select code.UID).ToList(); return codeReaderSettingsPart; }
public GKCodeReaderSettings() { SetGuardSettings = new GKCodeReaderSettingsPart(); ResetGuardSettings = new GKCodeReaderSettingsPart(); ChangeGuardSettings = new GKCodeReaderSettingsPart(); AlarmSettings = new GKCodeReaderSettingsPart(); MPTSettings = new GKCodeReaderSettingsPart(); SetGuardSettings.CodeReaderEnterType = GKCodeReaderEnterType.CodeAndOne; ResetGuardSettings.CodeReaderEnterType = GKCodeReaderEnterType.CodeAndTwo; MPTSettings.CodeReaderEnterType = GKCodeReaderEnterType.CodeOnly; }
void ValidationGuardSettings(GKCodeReaderSettingsPart codeReaderSettingsPart, HashSet<Tuple<Guid, GKCodeReaderEnterType>> hashSet, GKGuardZone guardZone, string name) { if (codeReaderSettingsPart.CodeReaderEnterType != GKCodeReaderEnterType.None) { foreach (var codeUID in codeReaderSettingsPart.CodeUIDs) { if (!hashSet.Add(new Tuple<Guid, GKCodeReaderEnterType>(codeUID, codeReaderSettingsPart.CodeReaderEnterType))) { var code = GKManager.DeviceConfiguration.Codes.FirstOrDefault(x => x.UID == codeUID); if (code != null) AddError(guardZone, "Дублируется комманда " + codeReaderSettingsPart.CodeReaderEnterType.ToDescription() + " в устройстве " + name + " для кода " + code.PresentationName, ValidationErrorLevel.CannotWrite); } } } }
public CodeReaderSettingsViewModel(GKCodeReaderSettingsPart codeReaderSettingsPart) { SelectCodeCommand = new RelayCommand(OnSelectCode); CodeReaderSettingsPart = codeReaderSettingsPart; EnterTypes = Enum.GetValues(typeof(GKCodeReaderEnterType)).Cast<GKCodeReaderEnterType>().ToList(); SelectedEnterType = EnterTypes.FirstOrDefault(x => x == codeReaderSettingsPart.CodeReaderEnterType); AccessLevel = CodeReaderSettingsPart.AccessLevel; Codes = new List<GKCode>(); foreach (var codeUID in codeReaderSettingsPart.CodeUIDs) { var code = GKManager.DeviceConfiguration.Codes.FirstOrDefault(x => x.UID == codeUID); if (code != null) { Codes.Add(code); } } }
public void InvalidateGKCodeReaderSettingsPart(GKCodeReaderSettingsPart codeReaderSettingsPart) { var codeUIDs = new List<Guid>(); foreach (var codeUID in codeReaderSettingsPart.CodeUIDs) { var code = Codes.FirstOrDefault(x => x.UID == codeUID); if (code != null) { codeUIDs.Add(codeUID); } } codeReaderSettingsPart.CodeUIDs = codeUIDs; }