Алгоритм обработки данных DATA11

Данный алгоритм следует использовать при единичных запросах или при блоковых, если заранее известен порядок размещения значений, которые будут переданы устройством в ответе.

При разборе ответа от контроллера по данному алгоритму МРВ выполняет следующие операции:

1. Осуществляет проход по базе с ее начала. (Повторный проход выполняется с места окончания предыдущего блокового запроса). При этом выбираются каналы с тем же подтипом, дополнением к подтипу и двумя младшими байтами удаленного адреса (ia.i[0] == ia1.i[0]). Количество вызываемых каналов определяется значением параметра q_rec.

2. Если найден канал, удовлетворяющий описанным условиям, то для него вызывается функция zCompare_xxx. В эту функцию передаются удаленные адреса канала-инициатора запроса и найденного канала. В ней надо проанализировать принадлежность выбранного канала к разбираемому блоковому запросу.

Если данные для анализируемого канала в запросе не содержатся, то функция должна вернуть значение 0. В противном случае возвращаемая величина должна быть больше 0, а значение параметра count будет равно индексу элемента в массиве структур RSDATA, содержащего значение для записи в канал.

3. Для найденного канала анализируется элемент p[ind].F.fmt[1] массива структур RSDATA. Значение этого элемента определяет следующие действия:

0 – присвоить входу канала значение элемента p[ind].V.v массива структур RSDATA;

1 – сформировать для канала признак аппаратной недостоверности.

Выход из алгоритма осуществляется либо после прохода по всем каналам, либо при равенстве количества выбранных каналов значению q_rec