#include <stdio.h>
#include <stdlib.h>
#include "/prg/prg.h"
#include "/prg/prgclass.h"
/*******************************************************************
*/
class AppCntr : public ApplicationControl
{
class classPPcontrol *PP_tbl; // описания физ. управл. параметров
class classPDcontrol *PD_tbl; // значения физ. управл. параметров
class classTPcontrol *TP_tbl; // описания техн. управл. параметров
class classTDcontrol *TD_tbl; // значения техн. управл. параметров
class classTDcontrol *TD_ready; // семафоры готовности для КО
int FunIni( int narg, char *sarg[] );
int FunEditOnly( short int narchive );
int FunDataConvert( void );
};
/*******************************************************************
преобразовать значения физических параметров в технологические
*/
int AppCntr::FunDataConvert( void )
{
int i, j;
int natt=PD_tbl->GetNatt(); // кол. параметров
int ntup=PD_tbl->GetNtup(); // кол. значений каждого параметра
unsigned char *pd;
unsigned short int *td;
// преобразование
for (i=0; i<natt; i++)
{
pd=(unsigned char*)PD_tbl->GetAdrParam( i+1 );
td=(unsigned short int*)TD_tbl->GetAdrParam( i+1 );
for (j=0; j<ntup; j++)
td[j]=(unsigned short int)(pd[j] & ~PRG_COLOR_VAR);
}
// готовность данных для КО
td=(unsigned short int*)TD_ready->GetAdrData();
for (j=0; j<ntup; j++) td[j]=1;
return 0;
}
/*******************************************************************
выделить цветом значения физических параметров, не равные 0
*/
int AppCntr::FunEditOnly( short int narchive )
{
int i, j;
int natt=PD_tbl->GetNatt(); // кол. параметров
int ntup=PD_tbl->GetNtup(); // кол. значений каждого параметра
unsigned char *pd;
for (i=0; i<natt; i++)
{
pd=(unsigned char*)PD_tbl->GetAdrParam( i+1 );
for (j=0; j<ntup; j++)
if ((pd[j] & ~PRG_COLOR_VAR)) pd[j] |= PRG_COLOR_VAR;
}
return 0;
}
/*******************************************************************
создание и инициализация объектов
*/
int AppCntr::FunIni( int narg, char *sarg[] )
{
//===== физические управляющие параметры =====
//..... создать объекты
if (!(PP_tbl=NewPPcontrol())) return 1;
if (!(PD_tbl=NewPDcontrol())) return 1;
if (AdrPar.SetPar( PP_tbl, PD_tbl ) == -1) return 1; // парный
//..... инициализировать объекты
if (PP_tbl->Ini( "B_PP_EXA", // имя для своего режима
"B_PP_EXA_T", // имя для связанных режимов
1, 5 ) // номера начальной, конечной строк
) return 1;
if (PD_tbl->Ini( "B_PD_EXA_", // базовая часть для всех режимов
1, 5, // номера начального, конечного столбцов
20, // число значений
1 )) return 1; // горизонтальное расположение
//===== технологические управляющие параметры =====
//..... создать объекты
if (!(TP_tbl=NewTPcontrol())) return 1;
if (!(TD_tbl=NewTDcontrol())) return 1;
if (AdrPar.SetPar( TP_tbl, TD_tbl ) == -1) return 1; // парный
//..... инициализировать объекты
if (TP_tbl->Ini( "B_TP_EXA", // имя таблицы для всех режимов
1, 5 )) return 1; // номера начальной, конечной строк
if (TD_tbl->Ini( "B_TD_EXA", // имя таблицы для всех режимов
1, 5, // номера начального, конечного столбцов
1, 20, // номера начальной, конечной строк
1 )) return 1; // горизонтальное расположение
//===== параметры готовности данных для КО =====
//..... создать объект
if (!(TD_ready=NewTDcontrol())) return 1;
//..... инициализировать объект
if (TD_ready->Ini( "B_TD_READY", // имя таблицы для всех режимов
1, 1, // номера начального, конечного столбцов
1, 5, // номера начальной, конечной строк
0 )) return 1; // вертикальное расположение
return 0;
}
/*******************************************************************
*/
int main( int narg, char *sarg[] )
{
AppCntr Ap;
return Ap.MakeRun( narg, sarg );
}
/*******************************************************************
*/
|