Далее перечислены все типы сообщений существующих в системе.
01 – Нижний уровень информирует верхний о том, что в процессе, каких либо сбоев информация, хранящаяся в оперативной памяти устройства нижнего уровня, имеет неправильную контрольную сумму. Поле "Текст" имеет нулевую длину.
02 – Если сообщение пришло от верхнего уровня, то в поле Текст первые 2 байта номер выводимого объявления, все последующее объявление, которое следует вывести устройством нижнего уровня. Если длина поля "Текст" = 0 то устройство ни чего не должно выводить.
Сообщение, посылаемое устройством нижнего уровня, информирует верхний уровень о правильном приеме сообщения. Поле "Текст" имеет длину в 1 байт. Если значение данного байта = 0, то устройство нижнего уровня правильно приняло сообщения и приступило к его выводу. Если значение данного байта = 1, то сообщение было принято с ошибкой.
03 – Верхний уровень требует информацию о работе данного устройства нижнего уровня. Поле "Текст" имеет нулевую длину.
Сообщение нижнего уровня является ответом за запрос верхнего уровня. Поле "Текст" имеет длину 3 байта. Если значение первого байта = 0, то устройство свободно, 2 и 3 байт также = 0. Если значение первого байта = 1, устройство в данный момент выводит объявление, номер которого помещается во второй и третий байт.
04 – Говорит о том, что было принято сообщение с неправильной контрольной суммой и является запросом для повторной передачи сообщения. Поле "Текст" имеет нулевую длину.
05 – Клиент посылает запрос серверу с просьбой проверить пользователя и выслать его приоритет. Поле "Текст" состоит из 20 байт, в первых 10 байтах находиться "Сетевое имя" пользователя, во вторых 10 байтах находиться его пароль.
Ответ "Сервера" на запрос клиента. В поле Текст 13 байт.1 байт – ошибка, 0 - ошибки нет , 1 - не существует данного сетевого имени в базе данных пользователя, 2 - сетевое имя обнаружено, но пароль не совпадает. 10 байт "Сетевое имя", 2 байта приоритет.
06 – "Клиент" посылает "Серверу" объявление, которое он хочет опубликовать. Поле "Текст" 2 байта приоритет, 2 байта устройства, 2 байта время, остальное под текст объявления.
Ответ "Cервера". Поле "Текст" из 2 байт. Если значение в данных байтах = 0, то объявление было успешно принято и будет опубликовано. Если не = 0 то смотрится по бинарной 1 и говорит о том что данное устройство не работоспособно.
07 – Посылается только "Сервером" и говорит о том, что было принято сообщение с неправильной контрольной суммой и является запросом для повторной передачи сообщения. Поле "Текст" имеет нулевую длину.
08 – "Клиент" требует список устройств и описание их. Поле "Текст" пусто.
Сервер отвечает на запрос. Поле "Текст" – 1 байт работает или не работает устройство, 1 байта номер устройства в массиве устройств. В данном случае под массивом устройств понимают 2 байтное число, которое как бы кодирует список устройств.200 байт на описание, данная структура может повторяться столько раз, сколько устройств в системе, но не больше 16. Данная информация находится в массиве устройств.
Алгоритм /13,14/ представлен на рисунках 9 - 12.
Алгоритм процедуры (Control)
Данная процедура является основным звеном для связи верхнего уровня ИСУ с нижним уровнем. В ее задачу входит обработка всех сообщений принятых от нижнего уровня и формирование и отправка сообщений на нижний уровень.
Описание переменных присутствующих на блок схеме:
- i – счетчик(Номер устройства);
- id[i](вх) – "Идентификатор присутствия" по номеру записи в массиве входящих сообщений;
-
- n – количество устройств нижнего уровня в ИСУ .
Рис. 10
Данная процедура вызывается в том случае, если по каким либо причинам, система считает, что нижний и верхний уровень действуют не синхронно. Т.е. информация, хранящаяся в динамическом массиве верхнего уровня, не соответствует действительности. Для того чтобы восстановить правдивую информацию вызывается данная процедура с параметром "Номер устройства". Order формирует пакет на нижний уровень с запросом, чем занимается данное устройство. Если необходимо опросить все устройства нижнего уровня, процедура вызывается в цикле с новым параметром.
Процедура вызывается с параметром:
i – Переданный параметр ("Номер устройства").
Алгоритм представлен на рисунке 13.
Рис. 13
Во входном буфере находиться принятый пакет сообщения. Его формат и структура описаны в пункте "Формат и структура пакетов циркулирующих в системе". Задача данной процедуры идентифицировать данный пакет, разбить его и заполнить массив входящих сообщений.
Описание переменных присутствующих на блок схеме:
- N – "Номер сообщения" (служит для заполнения массива сообщения в системе).
Алгоритм представлен на рисунке 14.
Рис. 14
Данная процедура занимается формированием пакетов и отправкой их на нижний уровень (см. рис. 15). Как только в массиве исходящих сообщений появилось сообщение, которое необходимо направить на нижний уровень, процедура формирует текстовую строку и помещает ее в выходной буфер.
Формат и структура пакетов циркулирующих в ИСУ описана в одноименном пункте. Для простоты описания алгоритма были введены следующие обозначения:
Алгоритм процедуры перемещения данных (Datas_Down)
Рис. 15
Алгоритм представлен на рисунке 16.
Рис. 16
Алгоритм представлен на рисунке 17.
Алгоритм процедуры ожидания (Waiting)
Все объявления принятые системой помещаются во временный массив объявлений. После чего с помощью процедуры Processing (см. рис. 18 - 21) они обрабатываются и помещаются в базу данных объявлений (массив объявлений). Также процедура выполняет одну из важнейших функций, а именно определяет время вывода сообщения и помещает его в массив неопубликованных объявлений. Исключает коллизии, т.е. если два разных сообщения должны быть опубликованы в одно и тоже время, данная процедура определяет приоритеты и принимает решение о первоочередном выводе того или иного объявления.