/// <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; }
/// <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); }
/// <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"); } }
/// <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); }
/// <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"); } }
/// <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)); }
/// <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);
/// <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); } }
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); } }
internal static extern uint pci429_4_set_freq(ref pci429_4_tag dev, byte type, byte nk, FREQ freq, bool parity_off);