Exemple #1
0
 /// <summary>
 /// Задание частоты работы канала ПБК и режима четности. Аналог
 /// pci429_4_set_freq(...)
 /// </summary>
 /// <param name="type">(in) 1-входной/0-выходной канал</param>
 /// <param name="number">(in) Номер канала для выдачи (допустимые
 /// значения от 1 до 16). Если номер канала выходит за допустимый
 /// диапазон или канал с указанным номером не существует на плате
 /// (информация берётся из PInfo), то генерируется ошибка
 /// ERROR_INVALID_PARAMETER</param>
 /// <param name="freq">(in) Код частота работы канала</param>
 /// <param name="parity_off">(in) false/true - контролировать/не
 /// контролировать бит четности</param>
 /// <returns>Код ошибки</returns>
 public uint set_freq(byte type, byte nk, FREQ freq, bool parity_off)
 {
     lock (this) {
         this.error_ = NativeMethods.pci429_4_set_freq(ref this.dev, type, nk, freq, parity_off);
         return(this.error_);
     }
 }
 /// <summary>
 /// Задание настроек каналу
 /// </summary>
 /// <param name="signal"></param>
 /// <param name="type"></param>
 /// <param name="frequency"></param>
 public void Config(PlaceSignalDescription signal, TypeChannel type, FREQ frequency)
 {
     Check(signal, type == TypeChannel.Rx ? Port429.MaxRxChannel : Port429.MaxTxChannel);
     // Задание частоты обмена
     App.TaskManager.PortArinc.Config(signal.Device ?? 0, ( byte )type, ( byte )(signal.Channel ?? 0),
                                      frequency, true);
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="frequency"></param>
 /// <param name="template"></param>
 /// <param name="address"></param>
 /// <param name="count"></param>
 public ArincTestConfig(FREQ frequency, uint template, int address, int count)
 {
     Frequency = frequency;
     Template  = template;
     Address   = address;
     Count     = count;
 }
Exemple #4
0
 /// <summary>
 /// Задание настроек
 /// </summary>
 /// <param name="signal"></param>
 /// <param name="type"></param>
 /// <param name="frequency"></param>
 public void Config(PlaceSignalDescription signal, TypeChannel type, FREQ frequency)
 {
     Check(signal, type == TypeChannel.Rx
         ? ArincDevice.RxChannel
         : ArincDevice.TxChannel);
     // Задание частоты обмена
     Config(signal.Device ?? 0, signal.Channel ?? 0, ( byte )type, frequency);
 }
Exemple #5
0
 /// <summary>
 /// Подпрограмма задания частоты работы канала ПБК и режима четности
 /// </summary>
 /// <param name="index"></param>
 /// <param name="type"></param>
 /// <param name="nk"></param>
 /// <param name="freq"></param>
 /// <param name="parityOff"></param>
 /// <returns></returns>
 public void Config(int index, byte type, byte nk, FREQ freq, bool parityOff = false)
 {
     Validation(index);
     if (0 != _device[index].Config(type, nk, freq, parityOff))
     {
         throw new Exception <Pci429ExceptionArgs>(new Pci429ExceptionArgs(index),
                                                   "Ошибка задания конфигурации интерфейсной плате PCI-429");
     }
 }
Exemple #6
0
        /// <summary>
        /// Подпрограмма задания частоты работы канала ПБК и режима четности
        /// </summary>
        /// <param name="type">1-входной/0-выходной канал</param>
        /// <param name="channel">Номер канала для выдачи (допустимые значения от 1 до 16)</param>
        /// <param name="freq">Частота работы канала</param>
        /// <param name="parityOff">Контролировать/не контролировать бит четности</param>
        /// <returns></returns>
        public int Config(byte type, byte channel, FREQ freq, bool parityOff = false)
        {
            // Synchronously wait to enter the Semaphore.
            SemaphoreSlim.Wait();
            var error = _config?.Invoke(ref _device, type, channel, freq, parityOff) ?? int.MaxValue;

            // Release the Semaphore.
            SemaphoreSlim.Release();
            return(error);
        }
Exemple #7
0
        /// <summary>
        /// Подпрограмма задания частоты работы канала ПБК и режима четности
        /// </summary>
        /// <param name="index"></param>
        /// <param name="type"></param>
        /// <param name="nk"></param>
        /// <param name="freq"></param>
        /// <param name="parityOff"></param>
        /// <returns></returns>
        public void set_freq(int index, byte type, byte nk, FREQ freq, bool parityOff)
        {
            check_index(index);
            var err_pci = _device[index].set_freq(type, nk, freq, parityOff);

            if (pci429_4_errors.ERROR_SUCCESS != err_pci)
            {
                throw new Exception <Pci429ExceptionArgs>(new Pci429ExceptionArgs(index),
                                                          "Ошибка задания конфигурации интерфейсной плате PCI-429");
            }
        }
Exemple #8
0
        /// <summary>
        /// Задание настроек
        /// </summary>
        /// <param name="index"></param>
        /// <param name="channel"></param>
        /// <param name="type"></param>
        /// <param name="frequency"></param>
        /// <returns></returns>
        public int Config(int index, int channel, byte type, FREQ frequency)
        {
            var cmd = new List <string> {
                CmdEsc,
                CmdArinc,
                CmdArincSetBaud,
                type.ToString("D"),
                channel.ToString("D"),
                frequency == FREQ.F12 ? "12" : "100"
            };

            return(App.TaskManager.PortCom.Send(index, cmd));
        }
Exemple #9
0
 /// <summary>
 /// Задание настроек
 /// </summary>
 /// <param name="frequency"></param>
 /// <returns></returns>
 // ReSharper disable once UnusedMember.Local
 private void Config(FREQ frequency)
 {
     // Настройка устройства
     for (var device = 0; device < PortRs232.MaxDevice; device++)
     {
         // Задание частоты работы каналам выдачи
         for (byte channel = 0; channel < ArincDevice.TxChannel; channel++)
         {
             Config(device, channel, ( byte )TypeChannel.Tx, frequency);
         }
         // Задание частоты работы каналам приема
         for (byte channel = 0; channel < ArincDevice.RxChannel; channel++)
         {
             Config(device, channel, ( byte )TypeChannel.Rx, frequency);
         }
     }
 }
 /// <summary>
 /// Задание настроек
 /// </summary>
 /// <param name="frequency"></param>
 /// <returns></returns>
 private void Config(FREQ frequency)
 {
     // Настройка плат PCI429
     for (var device = 0; device < App.TaskManager.PortArinc.MaxDevice; device++)
     {
         // Сброс плат PCI429
         App.TaskManager.PortArinc.Reset(device);
         // Задание частоты работы каналам выдачи
         for (byte channel = 0; channel < Port429.MaxTxChannel; channel++)
         {
             App.TaskManager.PortArinc.Config(device, ( byte )TypeChannel.Tx, channel, frequency, true);
         }
         // Задание частоты работы каналам приема
         for (byte channel = 0; channel < Port429.MaxRxChannel; channel++)
         {
             App.TaskManager.PortArinc.Config(device, ( byte )TypeChannel.Rx, channel, frequency, true);
         }
     }
 }
        ///<remarks>
        /// Абстрактные функции
        ///</remarks>


        /// <summary>
        /// Конфигурация канала
        /// </summary>
        /// <param name="signal"></param>
        /// <param name="type"></param>
        /// <param name="frequency"></param>
        /// <returns></returns>
        protected abstract void Config(PlaceSignalDescription signal, TypeChannel type, FREQ frequency);
Exemple #12
0
 /// <inheritdoc />
 /// <summary>
 ///
 /// </summary>
 /// <param name="signal"></param>
 /// <param name="type"></param>
 /// <param name="frequency"></param>
 protected override void Config(PlaceSignalDescription signal, TypeChannel type, FREQ frequency)
 {
     if (signal.Protocol == Protocol.Pci429)
     {
         Pci429Func.Config(signal, type, frequency);
     }
     else
     {
         ArincFunc.Config(signal, type, frequency);
     }
 }
Exemple #13
0
        private List<uint> GenerateNumbers(FREQ freq)
        {
            switch (freq)
            {
                case FREQ.SECONDLY:
                    return GenerateNumbers(1, 1u, 59u);

                case FREQ.MINUTELY:
                    return GenerateNumbers(1, 1u, 59u);

                case FREQ.HOURLY:
                    return GenerateNumbers(1, 1u, 23u);

                case FREQ.WEEKLY:
                    return GenerateNumbers(1, 1u, 53u);

                case FREQ.MONTHLY:
                    return GenerateNumbers(1, 1u, 12u);

                case FREQ.YEARLY:
                    return GenerateNumbers(1, 1u, 9999u);

                default:
                    return GenerateNumbers(1, 1u, 366u);
            }
        }
Exemple #14
0
 internal static extern uint pci429_4_set_freq(ref pci429_4_tag dev, byte type,
                                               byte nk, FREQ freq, bool parity_off);