- •7. Midi Show Control. Часть 1
- •Появление midi Show Control
- •Основные принципы
- •Предосторожности и ограничения
- •Формат сообщений
- •Формат команды
- •Команды и данные
- •Данные сцены
- •Таймкод
- •Рекомендованные наборы команд
- •Общие команды
- •Команды звука
- •7. Midi Show Control. Часть 2
- •Сообщения 2pc
- •Номер секвенции
- •Контрольные суммы
- •Коды состояния
- •Данные сцены
- •Взаимодействие устройств
- •Тайм-ауты
- •Ожидание сообщений
- •Обработка исключительных ситуаций
- •Пример работы 2pc
- •Обмен сообщениями без ошибок
- •Ошибки, обнаруженные на ранней стадии
- •Ошибки, произошедшие во время выполнения сцены
- •Сравнительная характеристика 2pc и msc
Ошибки, обнаруженные на ранней стадии
Теперь предположим, что во время выполнения нашей сцены произошли кое-какие ошибки. Сначала рассмотрим ошибку, которая приводит к прекращению всей сцены. Предположим, контроллер системы подъема обнаружил неполадку одного из лебедочных моторов, связанных с двенадцатым штанкетом. Тогда система подъема вместо STANDING_BY вернет сообщение ABORT. После чего главный контроллер (компьютерная программа) ответит сообщением CANCEL для всех сцен, которым было отправлено сообщение STANDBY. Последовательность сообщений может выглядеть так, как показано на рис. 17.
Примечания: A. Первая сцена системы подъема возвращает сообщение ABORT с кодом состояния "сбой в моторе". Этот код преобразуется в текстовое сообщение, которое выводится оператору системы. B. Всем контролируемым устройствам посылается сообщение CANCEL для тех сцен, которые еще не завершились. Это в соответствии с требованиями 2PC по восстановлению после сбоя (см. ранее). Так как отдельные приборы все еще обрабатывают сообщения STANDBY, сообщения STANDING_BY и CANCEL перемешиваются во времени друг с другом. C. К главному контролеру начинают приходить сообщения CANCELLED. Как и в случае с сообщениями STANDING_BY, они приходят не в том порядке, в каком были отправлены сообщения CANCEL. Статус-код сообщений CANCELLED — "terminated", так как ни одна из отмененных сцен не начала выполняться. D. Главному контроллеру не остается ничего другого, как отменить сцену F-28.1 (сообщение CANCEL в момент времени 0.018 с). Так как контроллер системы подъема уже забыл, что сцена F-28.1 была в состоянии "наготове", он отправляет главному контроллеру сообщение CANCELLED со статус-кодом "не в режиме ожидания". Как видно из этого гипотетического примера, протокол 2PC успешно выявил неполадку с лебедочным мотором. Начало поворота площадки было автоматически остановлено. Декорация на площадке не повернулась и не порвала полотнище, которое осталось неподвижно висеть. Кроме того, стейдж-менеджер за главным контроллером был проинформирован о неполадке сообщением на экране компьютера.
Ошибки, произошедшие во время выполнения сцены
Они обрабатываются почти так же, как и вышеуказанная ошибка. Все ожидающие или выполняющиеся сцены завершаются сообщением CANCEL от главного контроллера. Отличие здесь в том, что число возможных вариантов выключения безобразия на сцене значительно увеличивается. И выбор правильного решения не всегда очевиден. Спецификация рекомендует разработчикам тщательно рассмотреть все варианты — от продолжения работы как ни в чем не бывало до возврата в исходное состояние. Предположим, что мотор поворотного стола из нашего примера сломался после поворота стола на 45 градусов. Тогда, спустя где-то 18 секунд от начала сцены (см. рис. 16), главному контроллеру будет передано сообщение ABORT. Поле чего все сцены получат сообщения CANCEL. Две из них, находящиеся в состоянии "наготове" (S-110 и L-119), обработают отмену "по-простому", забыв, что им было послано сообщение "приготовиться". Однако обработка сообщения CANCEL в сцене F-28, которая к этому моменту еще не завершилась, более проблематична. Так как полотнище продолжает подъем, то вероятно, лучше всего поднять его до конца, дав сцене F-28 полностью завершиться, с возвращением статус-кода "completing" в сообщении CANCELLED и последующим сообщением COMPLETE. Но если бы по сценарию полотнище должно было не подниматься, а опускаться, показывая зрителю нанесенную на него картину, сцену F-28 следовало бы, наверное, завершить немедленно.
