Gtl.ranges var: различия между версиями

Материал из GTL-wiki
Перейти к навигации Перейти к поиску
(Новая страница: «== Уствновка пользовательских диапазонов воспроизведения сигнала по триггеру == <pre> </pre>»)
 
Строка 1: Строка 1:
== Уствновка пользовательских диапазонов воспроизведения сигнала по триггеру ==
== Уствновка пользовательских диапазонов воспроизведения сигнала по триггеру ==
<pre>
<pre>
"use strict";
let src = gtl.analog_inputs[0]; //источник сигнала
let time = 1; //время записи для анализа
let time_window = 0.02 //временное окно наблюдения
let time_impulse = 2 //временное окно для анализа импульса (не менее времени построения спектра)
let ranges = []; //массив диапазонов для импульсов
let cnt = 0; //счетчик
let tries = 0; //циклы диагностки
let is_ranges = false; //состояние готовности диапазонов
gtl.diagnostic.interval = time; //интервал запуска диагностики


let thresh = gtl.create_moving_thresh({
  src: src,
  name: "thresh",
  time: time_window,
  level: 1
}); //порог


thresh.triggered.connect(thresh_triggered_event);
function thresh_triggered_event(flag, sample) {
  if (is_ranges) return;
  if (flag) {
    let start = sample / thresh.rate; //время срабатывания триггера
    gtl.log.info("trigger on time", start);
    let range = {
      min: start,
      max: start + time_impulse
    };
    ranges.push(range); //добавляем диапазон в массив
    cnt++; //считаем импульсы
  };
};
let plot = gtl.plots.add("Impulses"); //создаем координатную плоскость
function diagnose() {
  if (tries >= cnt) gtl.diagnostic.stop();
  if (!is_ranges) {
    gtl.player.custom_ranges = ranges; //добавляем пользовательские диапазоны в плеер
    gtl.results = { ranges: ranges }; //добавляем диапазоны в результат
    gtl.log.info('creating ranges', true);
    gtl.log.info('ranges', JSON.stringify(ranges));
    is_ranges = true; //пользовательские диапазоны готовы
  }
  gtl.log.info('diagnostic', `attempt ${tries} - ${true}`);
  gtl.diagnostic.interval = time_impulse; //задаем время запуска функции диагностики, равное длине импульса
  tries++;
}
</pre>
</pre>

Версия от 06:35, 23 марта 2026

Уствновка пользовательских диапазонов воспроизведения сигнала по триггеру

"use strict";
let src = gtl.analog_inputs[0]; //источник сигнала
let time = 1; //время записи для анализа
let time_window = 0.02 //временное окно наблюдения
let time_impulse = 2 //временное окно для анализа импульса (не менее времени построения спектра) 
let ranges = []; //массив диапазонов для импульсов
let cnt = 0; //счетчик
let tries = 0; //циклы диагностки
let is_ranges = false; //состояние готовности диапазонов
gtl.diagnostic.interval = time; //интервал запуска диагностики

let thresh = gtl.create_moving_thresh({
  src: src,
  name: "thresh",
  time: time_window,
  level: 1
}); //порог

thresh.triggered.connect(thresh_triggered_event);
function thresh_triggered_event(flag, sample) {
  if (is_ranges) return;
  if (flag) {
    let start = sample / thresh.rate; //время срабатывания триггера
    gtl.log.info("trigger on time", start);

    let range = {
      min: start,
      max: start + time_impulse
    };
    ranges.push(range); //добавляем диапазон в массив
    cnt++; //считаем импульсы
  };
};


let plot = gtl.plots.add("Impulses"); //создаем координатную плоскость
function diagnose() {
  if (tries >= cnt) gtl.diagnostic.stop();
  if (!is_ranges) {
    gtl.player.custom_ranges = ranges; //добавляем пользовательские диапазоны в плеер
    gtl.results = { ranges: ranges }; //добавляем диапазоны в результат
    gtl.log.info('creating ranges', true);
    gtl.log.info('ranges', JSON.stringify(ranges));
    is_ranges = true; //пользовательские диапазоны готовы
  }

  gtl.log.info('diagnostic', `attempt ${tries} - ${true}`);
  gtl.diagnostic.interval = time_impulse; //задаем время запуска функции диагностики, равное длине импульса
  tries++;
}