ГНЦ ИФВЭ
ОУ У-70
Система Управления комплекса У-70  

Программирование на Верхнем Уровне СУ

Библиотеки алгоритмов СУ

Сжатие данных предназначено для уменьшения трафика MIL-1553. Большие объемы данных, обычно, имеют место в процессах измерения, поэтому ПП в Контроллере Оборудования может использовать процедуру компрессии измеренных данных в КО и записи их в таблицу БД ССУДА.
Для чтения измеренных данных из таблицы в Контроллере Оборудования ПП на Рабочей Станции должна использовать обратную процедуру - чтение данных из этой таблицы с применением алгоритма декомпрессии данных.
Целесообразность и возможность компрессии, а также метод компрессии подбирается автоматически, компрессия может быть двойной. Алгоритм декомпрессии распознает наличие компрессии и примененные методы компрессии.
PrgPackT_SetCmt - установить или отменить запись в файл-протокол
PrgPackT_WScompress - компрессировать данные и записать их в таблицу БД ССУДА
PrgPackT_WSdecompress - читать данные из таблицы БД ССУДА и декомпрессировать

int PrgPackT_SetCmt (int n);

Установить семафор записи в файл-протокол:

n=0 - запретить запись в файл-протокол,
n=1 - разрешить запись в файл-протокол.
int PrgPackT_WScompress (int nmethod, void *buf, int lbuf, short int *tid, double *ratio);

Определить целесообразность и возможность компрессии, метод компрессии и возможность повторной компрессии. Выполнить компрессию данных, если это возможно. Записать компрессированные или исходные данные в таблицу БД ССУДА, открытую посредством процедур PrgDBa_open или PrgDBa_openLocal

method - номер метода компрессии, рекомендуется задавать 0 для автоматического подбора метода;
buf - буфер данных, которые подлежит компрессировать;
lbuf - размер буфера в байтах;
tid - номер структуры для заданной таблицы, определенный процедурой PrgDBa_open или PrgDBa_openLocal;
ratio - коэффициент компрессии данных.

Возвращает 0 в случае успеха.

Если была ошибка, то возвращает 1 и код ошибки в переменной prg_err, делает запись в файл-протокол, если он определен.

int PrgPackT_WSdecompress (void *buf, int lbuf, short int *tid, double *ratio);

Читать данные из таблицы БД ССУДА, открытой посредством процедуры PrgDBa_open или PrgDBa_openLocal.

Определить наличие компрессии и примененные методы. Если необходимо, декомпрессировать данные:

method - номер метода компрессии, рекомендуется задавать 0 для автоматического подбора метода;
buf - буфер для декомпрессированных данных;
lbuf - размер буфера в байтах;
tid - номер структуры для заданной таблицы, определенный процедурой PrgDBa_open или PrgDBa_openLocal;
ratio - коэффициент компрессии данных.

Возвращает 0 в случае успеха.

Если была ошибка, то возвращает 1 и код ошибки в переменной prg_err, делает запись в файл-протокол, если он определен.

Автор © Клименков Е.В.