Особенности вызова графического экрана

  Экономичная загрузка

Для вызова шаблона экрана в узле создается канал CALL с типом вызова (4) Screen, настроенный на вызов соответствующего шаблона (см. Канал класса CALL и Атрибуты канала класса CALL ).

В профайлере с периодом 1 (5) минут вычисляется значение атрибута 87, CC такого канала. Величина CC*10 мс равна промежутку между временем подачи команды отработки канала и временем доступности соответствующего шаблона для передачи ему параметров (т.е. временем фактической реализации шаблона).

Количество аргументов канала вызова экрана ограничено; в случае 4-байтовых аргументов их число не должно превышать 6000.

Видимостью экранов можно управлять в реальном времени – чтобы отобразить экран, нужно записать 2 в соответствующий канал; чтобы скрыть, нужно записать 1.

Для всплывающих экранов (см. Задание параметров графического экрана ):

   если входному значению канала Экран присвоить значение 3, в его атрибуты 90 и 91 выводятся координаты (соответственно X и Y) левого верхнего угла экрана (см. также Задание параметров графического экрана );

   если входному значению канала Экран присвоить значение 4, положение экрана изменяется в соответствии с координатами, заданными атрибутами 90 и 91.

Если аппаратное значение канала CALL, вызывающего шаблон экрана, равно нулю, в графику передаются текущие значения каналов, привязанных к аргументам.

Если аппаратное значение канала вызова экрана отлично от 0, оно интерпретируется как значение даты и времени, в канале создается копия таблицы аргументов, аргументам-копиям присваиваются архивные значения привязанных каналов на указанный момент времени, и эти данные передаются в графику. При использовании этой функции монитор читает только один архив – тот, в который архивируется канал, привязанный к аргументу с наименьшим ID (т.е. к аргументу, который создан первым). Если при этом значение атрибута (7, P) Интервал канала вызова экрана отлично от нуля (натуральное число), оно интерпретируется как число секунд, и в графику последовательно передаются срезы из архива на время A+k*P (k=0.1...).

Имя текущего экрана, время перехода на текущий экран и имя текущего пользователя отображаются в строке статуса МРВ, а в полноэкранном режиме – в правой части окна меню (см. Профайлер с поддержкой графических экранов ). Если экран всплывающий, в его заголовке отображаются имя экрана и время перехода. Формат времени задается с помощью атрибута Параметр канала CALL, вызывающего шаблон экрана:

   Параметр = 0 – не отображать;

   Параметр=2, 3 – только время;

   Параметр=4, 5 – только дата;

   Параметр=6, 7 – дата и время.

Если для канала CALL вызова экрана задан тип пересчета FAST EXE (см. Период пересчета канала ), такой экран, если он видим, перерисовывается с повышенным приоритетом. При этом перерисовка низкоприоритетного экрана может быть затруднена (возможно "моргание").

Для управления отображением всплывающих экранов (пусть каналы их вызова имеют имена popupi) может использоваться канал CALL.8 (ChGroupReq), сконфигурированный одним из следующих способов:

   к аргументам CALL.8 привязаны popupi. В этом случае CALL.8.R задает ограничение на число одновременно открытых всплывающих экранов (если открыто максимальное число всплывающих экранов, то при открытии следующего закрывается вплывающий экран, открытый раньше других);

   к аргументам CALL.8 привязаны popupi, а к самому CALL.8 привязан канал вызова некоторого экрана scr. В этом случае:

   если экран scr открыт, CALL.8.R задает ограничение на количество одновременно открытых всплывающих экранов;

   если открыт любой другой экран, отображение всплывающих экранов блокируется (в том числе при переходе на такой экран с экрана scr открытые всплывающие экраны закрываются).

В дополнение к другим способам перепривязки аргументов канала CALL, аргументы канала вызова экрана (пусть его имя – scr) могут быть перепривязаны с помощью канала CALL.8 (ChGroupReq). Возможные конфигурации:

   к scr привязан CALL.8 с Параметр=1, к аргументам которого привязаны каналы CALL (calli, i=0, 1…). В этом случае аргументы scr привязываются к аргументам callCALL.8.R (аргументы calli могут быть не привязаны);

   к scr привязан CALL.8 с Параметр=0, аргументы argi которого привязаны к каналам любого класса или не имеют привязки. В этом случае аргументы scr привязываются к аргументам CALL.8, начиная с аргумента argCALL.8.R.

Экономичная загрузка

Режим экономии ОЗУ за счет графики активируется с помощью следующих ключей команды запуска (см. также Дополнительные ключи команды запуска в разделе Профайлер с поддержкой графических экранов ):

   /scr_swap – экономичная загрузка обычных экранов, у которых не установлен флаг Загружать (см. Задание параметров графического экрана );

   /scr_swap_all – экономичная загрузка всех обычных экранов (вне зависимости от флага Загружать).

Экономичная загрузка всплывающих экранов не поддерживается.

Совместно с ключом активации могут быть заданы следующие ключи:

   /scr_swap_mem – если этот ключ задан, при запуске узла "экономичные" экраны помещаются в ОЗУ в сжатом виде; если ключ не задан – в единый временный файл ../<имя файла prj>/screens.tmp.

При вызове "экономичный" экран загружается в ОЗУ из своего хранилища; при последующем вызове другого экрана МРВ освобождает память, занятую "экономичным" экраном (в том числе очищает его буферы).