Алгоритм пересечения нескольких рубежеи, для программы «Радиодозор» Далее полный порядок действий при выполнении сеанса связи пульта и комплекса, описанный в «RoadScan облик системы» будет называться - «команда связи с комплексом». Общий случай: В общем случае, выполняется следующий порядок действий: 1. Пульт пересекает рубеж 2. Команда связи с комплексом помещается в очередь 3. На тот момент, когда команда изымается из очереди, программа проверяет, находится ли пульт в пределах рубежа, к которому относится изымаемая команда. Если к моменту изъятия команды из очереди, пульт покинул данный рубеж, команда удаляется. В противном случае запускается процесс связи с комплексом. Если во время проверки нет возможности определить позицию пульта относительно рубежей (не работает GPS): выдается ошибка, команда удаляется. 4. Все остальные действия согласно старому сценарию Один рубеж: Прохождение одного рубежа полностью соответствует первоначальному варианту алгоритма. Два и более рубежей В случае с двумя рубежами могут возникать различные ситуации: Последовательное пересечение двух рубежей Реализуется, так же как и общий алгоритм. Собственно для этого случая и реализована очередь. Одновременное пересечение двух рубежей В этом случае возникает конфликт: не ясно, в каком порядке помещать команды в очередь. Решением будет помещать команды по возрастанию номеров комплексов. «Появление» пульта одновременно в нескольких рубежа х Такая ситуация может возникнуть, если во время перемещения пульта внутрь двух рубежей, на пульте не работал GPS и был включен уже после перемещения. Решение такое же, как и при одновременном пересечении двух рубежей. Работа с внутренними рубежами При пересечении пультом внутреннего рубежа любого комплекса, программа должна предупредить оператора (звук/смена цветовой схемы), независимо от того, для какого комплекса сейчас выполняется сеанс связи. Исключением является случай, когда программа уже успешно получила лог от комплекса, рубеж которого пересекает пульт. В этом случае предупреждение не выдается.