public ActivationWorkPlacePage() { InitializeComponent(); m_ActionQueue = new ConcurrentQueue <Action>(); m_Timer = new DispatcherTimer { Interval = new TimeSpan(0, 0, 0, 0, 50) }; m_Timer.Tick += TimerTick; //считываем из конфигурационного файла и запоминаем значение используемого канала измерения ChByClampType = (ChannelByClumpType)Settings.Default.ChannelByClampType; //узнаём номер регистра активации рабочего места, чтобы поток мог с ним работать REG_WORKPLACE_ACTIVATION_STATUS = Cache.Net.ActivationWorkPlace(ComplexParts.Sctu, ChannelByClumpType.NullValue, Types.SCTU.SctuWorkPlaceActivationStatuses.WORKPLACE_IS_FREE); }
internal ushort ActivationWorkPlace(ChannelByClumpType ChByClumpType, SctuWorkPlaceActivationStatuses ActivationStatus) { SystemHost.Journal.AppendLog(ComplexParts.Sctu, LogMessageType.Note, "Sctu activation workplace"); switch (ActivationStatus) { //мы хотим активировать рабочее место. прежде чем активировать рабочее место - проверим, что оно ещё не активировано case (SctuWorkPlaceActivationStatuses.WORKPLACE_IN_USE): //если рабочее место свободно - активируем его, при этом реализация записи в регистр активации сама позоботится об установке статуса активации для 'другого' рабочеего места if (ReadRegister(REG_WORKPLACE_ACTIVATION_STATUS) == (ushort)SctuWorkPlaceActivationStatuses.WORKPLACE_IS_FREE) { //пишем статус активации WriteRegister(REG_WORKPLACE_ACTIVATION_STATUS, (ushort)ActivationStatus); //пишем какой аналоговый канал нам надо использовать if (ChByClumpType != ChannelByClumpType.NullValue) { WriteRegister(REG_CHANNELBYCLAMPTYPE, (ushort)ChByClumpType); } } break; //мы хотим заблокировать рабочее место - блокировкой рабочего места управляет WriteRegister - поэтому ничего не делаем case (SctuWorkPlaceActivationStatuses.WORKPLACE_IS_BLOCKED): break; //мы хотим освободить рабочее место case (SctuWorkPlaceActivationStatuses.WORKPLACE_IS_FREE): //если рабочее место занято - освобождаем его, при этом реализация записи в регистр активации сама позоботится об установке статуса активации для 'другого' рабочеего места if (ReadRegister(REG_WORKPLACE_ACTIVATION_STATUS) == (ushort)SctuWorkPlaceActivationStatuses.WORKPLACE_IN_USE) { WriteRegister(REG_WORKPLACE_ACTIVATION_STATUS, (ushort)ActivationStatus); } break; } //возвращаем номер регистра статуса активации рабочего места вызывающей реализации return(REG_WORKPLACE_ACTIVATION_STATUS); }
ushort IExternalControl.ActivationWorkPlace(ComplexParts Device, ChannelByClumpType ChByClumpType, SctuWorkPlaceActivationStatuses ActivationStatus) { return(_IoMain.ActivationWorkPlace(Device, ChByClumpType, ActivationStatus)); }
public ushort ActivationWorkPlace(ComplexParts Device, ChannelByClumpType ChByClumpType, SctuWorkPlaceActivationStatuses ActivationStatus) { return(Channel.ActivationWorkPlace(Device, ChByClumpType, ActivationStatus)); }