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

Материал из GTL-wiki
Перейти к навигации Перейти к поиску
 
(не показаны 4 промежуточные версии этого же участника)
Строка 6: Строка 6:
2. Пользовательские, заданные в скрипте;
2. Пользовательские, заданные в скрипте;
</pre>
</pre>
Если пользовательские не заданы или представляют собой пустой массив, то диапазоны берутся из файла (заданные на графике). Если и они пустые, то воспроизводится весь файл от начала до конца.
Если пользовательские диапазоны не заданы или представляют собой пустой массив, то диапазоны берутся из файла (заданные на графике). Если и они пустые, то воспроизводится весь файл от начала до конца.


== Объявление функции ==
== Объявление функции ==
Строка 17: Строка 17:
:<code style="color: purple>player.custom_ranges = [];</code> - массив пользовательских диапазонов. Запись/чтение;
:<code style="color: purple>player.custom_ranges = [];</code> - массив пользовательских диапазонов. Запись/чтение;
:<code style="color: purple>player.play_all = true;</code> - принудительное воспроизведение всего файла. По умолчанию false;
:<code style="color: purple>player.play_all = true;</code> - принудительное воспроизведение всего файла. По умолчанию false;
:<code style="color: purple>player.play_time;</code> - расчетное время воспроизведения файла, сек;
:<code style="color: purple>player.cyclic = false;</code> - циклическое воспроизведение. По умолчанию true. Плеер запускается сразу после старта скрипта.
:<code style="color: purple>player.play_time = 12;</code> - расчетное время воспроизведения файла, сек;
:<code style="color: purple>player.start();</code> - запуск воспроизведения;
:<code style="color: purple>player.finished.connect(function);</code> - обработчик события окончания воспроизведения;


<pre>
<pre>
Строка 30: Строка 33:
== Пример использования ==
== Пример использования ==
<pre>
<pre>
//диапазоны из файла (заданые руками на чарте). только чтение.
let plot = gtl.plots.add("signals");
 
let counter = 0;
gtl.player.finished.connect(finished_playing)
gtl.log.info("cyclic", gtl.player.cyclic);
 
//циклическое воспроизведение. по умолчанию true. плеер запускается сразу после старта скрипта.
gtl.player.cyclic = false;
 
// диапазоны из файла (заданые руками на чарте). только чтение.
let ranges = gtl.player.stored_ranges;
let ranges = gtl.player.stored_ranges;


//диапазоны кастомные. запись/чтение
gtl.log.info("ranges", JSON.stringify(ranges));
 
// диапазоны кастомные. запись/чтение
// логика такая: если кастомные не заданы или пустой массив, то берем из файла. если и они пустые, то воспроизводим весь файл.
//gtl.player.custom_ranges = [];
//gtl.player.custom_ranges = [];
gtl.player.custom_ranges = [{min : 1, max: 2}, ranges[0]];
gtl.player.custom_ranges = [{ min: 0, max: .01 }/*, ranges[0]*/];
gtl.log.info("ranges", JSON.stringify(gtl.player.custom_ranges));


//принудительное воспроизведение всего файла. по умолчанию false
 
// принудительное воспроизведение всего файла. по умолчанию false
//gtl.player.play_all = true;
//gtl.player.play_all = true;


gtl.diagnostic.interval = 1;
gtl.log.info("play time", gtl.player.play_time);
function diagnose()
gtl.analog_inputs[0].history = gtl.player.play_time;
{
 
  gtl.log.info("ranges", JSON.stringify(ranges));
function finished_playing() {
  gtl.log.info("ranges", JSON.stringify(gtl.player.custom_ranges));
    gtl.log.info("playing finished", counter);
  gtl.log.info("play time", gtl.player.play_time);
    plot.add({
};
        color: 0xff0000,
        name: "history buffer",
        x: 1 / gtl.analog_inputs[0].rate,
        y: gtl.analog_inputs[0].getHistoryArray()
    });
 
    plot.axis_at(0).fit();
 
    counter++;
    if (counter == 2) {
        gtl.stop();
        return;
    }
 
    gtl.player.custom_ranges = [{ min: 0.01, max: .02 }/*, ranges[0]*/];
    gtl.log.info("play time", gtl.player.play_time);
    gtl.analog_inputs[0].history = gtl.player.play_time;
    gtl.player.start();
}
 
 
 
 
</pre>
</pre>

Текущая версия от 06:11, 16 октября 2026

Краткое описание

Функция предназначена для управления диапазонами (участками) воспроизведения сигнала вибрации в плеере. Используется в случае необходимости анализа вибрации на конкретных участках сигнала.

Диапазоны различают:
1. Сохраненные, заданные вручную на графике;
2. Пользовательские, заданные в скрипте;

Если пользовательские диапазоны не заданы или представляют собой пустой массив, то диапазоны берутся из файла (заданные на графике). Если и они пустые, то воспроизводится весь файл от начала до конца.

Объявление функции

let player = gtl.player;

Свойства (методы)

player.stored_ranges = []; - массив диапазонов из файла (заданые вручную на графике). Только чтение;
player.custom_ranges = []; - массив пользовательских диапазонов. Запись/чтение;
player.play_all = true; - принудительное воспроизведение всего файла. По умолчанию false;
player.cyclic = false; - циклическое воспроизведение. По умолчанию true. Плеер запускается сразу после старта скрипта.
player.play_time = 12; - расчетное время воспроизведения файла, сек;
player.start(); - запуск воспроизведения;
player.finished.connect(function); - обработчик события окончания воспроизведения;
Примечание:
Массивы диапазонов представляют собой массивы объектов с указанием левой и правой границы участка в секундах:
player.custom_ranges = [{min: 1, max: 2}, {min: 10, max: 12}]; //задаем два диапазона
где:
min - левая граница диапазона;
max - правая граница диапазона;

Пример использования

let plot = gtl.plots.add("signals");

let counter = 0;
gtl.player.finished.connect(finished_playing)
gtl.log.info("cyclic", gtl.player.cyclic);

//циклическое воспроизведение. по умолчанию true. плеер запускается сразу после старта скрипта.
gtl.player.cyclic = false;

// диапазоны из файла (заданые руками на чарте). только чтение.
let ranges = gtl.player.stored_ranges;

gtl.log.info("ranges", JSON.stringify(ranges));

// диапазоны кастомные. запись/чтение
// логика такая: если кастомные не заданы или пустой массив, то берем из файла. если и они пустые, то воспроизводим весь файл.
//gtl.player.custom_ranges = [];
gtl.player.custom_ranges = [{ min: 0, max: .01 }/*, ranges[0]*/];
gtl.log.info("ranges", JSON.stringify(gtl.player.custom_ranges));


// принудительное воспроизведение всего файла. по умолчанию false
//gtl.player.play_all = true;

gtl.log.info("play time", gtl.player.play_time);
gtl.analog_inputs[0].history = gtl.player.play_time;

function finished_playing() {
    gtl.log.info("playing finished", counter);
    plot.add({
        color: 0xff0000,
        name: "history buffer",
        x: 1 / gtl.analog_inputs[0].rate,
        y: gtl.analog_inputs[0].getHistoryArray()
    });

    plot.axis_at(0).fit();

    counter++;
    if (counter == 2) {
        gtl.stop();
        return;
    }

    gtl.player.custom_ranges = [{ min: 0.01, max: .02 }/*, ranges[0]*/];
    gtl.log.info("play time", gtl.player.play_time);
    gtl.analog_inputs[0].history = gtl.player.play_time;
    gtl.player.start();
}