Gtl.player

Материал из GTL-wiki
Версия от 06:11, 16 октября 2026; AlekseyCube (обсуждение | вклад) (→‎Пример использования)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

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

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

Диапазоны различают:
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();
}