Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы MIDI 2.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
210 Кб
Скачать
☆

Формат команды

Название "формат команды" (command_format), на мой взгляд, несколько неудачно, поскольку не отражает сути вопроса; к тому же, его можно перепутать со следующим байтом — самой командой. Формат команды в терминологии MSC — это просто-напросто категория оборудования, для которой предназначено сообщение. Стандарт определяет несколько общих категорий, внутри них — несколько более конкретных, и особую категорию All-types. К общим категориям относятся свет, звук, машинерия, видео, проекция, спецэффекты и пиротехника. Номера этих категорий содержат в младшем полубайте ноль, за исключением категории "свет". Номера более конкретных категорий заключены внутри общих и имеют тот же старший полубайт, что и общая категория (рис. 3).

Код 0x00 зарезервирован для будущих расширений протокола. Как видно из таблицы, коды выше 0x64 не определены, и их можно использовать для нужд собственной системы, если в ней есть какие-то особенные категории оборудования, не отраженные в спецификации. Чтобы сообщение было принято устройством к обработке, в нем должен быть задан не только правильный номер устройства, но и категория оборудования (то есть байт command_format). Очевидно, сообщение для контроллера сжатого воздуха должно игнорироваться контроллером подъемника. Категория All-types (0x7F) используется, если сообщение подходит всем без исключения устройствам системы. Однако и в этом случае устройства будут отвечать на команду, только если в ней указан правильный device_ID. Для отправки сообщения всем устройствам, независимо от их типа и номера, можно воспользоваться комбинацией широковещательного номера 0x7F и категории 0x7F.

Команды и данные

Основой сообщения MSC является байт команды, который говорит управляемому прибору о том, что, собственно, от него хотят. Например, типичные команды для светового пульта: GO (пуск) и FIRE (запуск макроса). Для каждой категории оборудования может использоваться до 128 команд. В MSC предложены некоторые типичные команды (см. далее), но, как и в случае с байтом command_format, здесь можно использовать собственные значения. Важно только, чтобы устройства системы их понимали. Код команды 0x00 зарезервирован для дальнейших расширений. Таким образом, вместе с байтом 0x00 формата команды в MSC предусмотрены два уровня расширения (рис. 4). В настоящее время таких расширений нет.

Каждая команда может содержать дополнительные данные. MSC здесь накладывает только одно ограничение — данных должно быть столько, чтобы полная длина сообщения не превышала 128 байт. Структура их остается на усмотрение производителя конкретного устройства, но должна быть опубликована. Понятно, что в простых устройствах формат данных будет проще, а их длина — меньше. Чтобы организация рабочей системы из устройств разного "интеллекта" не превратилась в кошмар, MSC рекомендует: в начале сообщения передавать наиболее общую информацию, а затем — все более и более специфичную. При этом группы байт отделяются друг от друга нулевым символом-разделителем. Тогда менее интеллектуальные устройства могут реагировать только на первые, довольно универсальные группы, и игнорировать остальные. Например, сложное устройство может обрабатывать номера сцен с большим количеством десятичных точек, разделяющих подсекции: скажем, "235.32.7.8.654". Если главный контроллер передает такой номер в простое устройство, которое понимает только сцены вида "ххх.х", то оно может либо проигнорировать сообщение, либо использовать номер сцены "235.3". Еще пример: номер сцены может быть передан группой байт, разделенных нулевым символом. То есть, номер сцены 235.3, затем — разделитель, номер листа 36.6, разделитель, номер пути 59. Если устройство поддерживает множественные списки (листы) сцен, но не множественные пути, оно обработает сцену 235.3 в списке 36.6 (или 36) и проигнорирует данные пути, просто используя текущий путь или путь по умолчанию. И наоборот, если простой номер сцены передается в устройство, способное обрабатывать сложные номера, оно будет считать, что данный номер относится к текущему списку или списку по умолчанию, используя текущий путь или путь по умолчанию. В системах управления шоу чаще всего используются данные сцены и данные времени. Поэтому в MSC для обеспечения совместимости предложен стандартный способ их передачи.