Перевести страницу

Создание приложений для науки и производства ещё не было таким простым

Создание виртуального прибора

Виртуальный прибор - основной вид продукта, для создания которого пока предназначено ПО MAX15. Фактически, виртуальный прибор - это программное приложение, которое имеет интерфейс, похожий на интерфейс физического прибора, который интегрирует в себе все функции управления и представления данных. ПО MAX15 в пределе ориентировано на то, чтобы можно было создавать такие приборы, как черные ящики для использования без необходимости дальнейшего программирования. Но, кроме этого, ПО MAX15 можно использовать в "лабораторном варианте", когда схема виртуального прибора открыта и может быть динамически изменена. Поэтому необходимо отметить важное свойство MAX15, как средства создания программных виртуальных приборов:


Схему виртуального прибора и настройки отдельных её элементов можно динамически изменять в процессе использования. Добавлять и удалять элементы, создавать и удалять соединения между ними, даже изменять внешний вид самого прибора. Всё это можно делать даже не останавливая работу прибора.


Теперь о том, как создавать виртуальный прибор. Демонстрационное видео создания простейшего прибора находится в архиве record_000007.zip (его также можно скачать со страницы Скачиваемые файлы или посмотреть онлайн на странице Основные возможности). Архив надо распаковать в отдельный каталог и открыть плейлист record_000007.mpcpl с помощью видео-плеера, поддерживающего этот формат. Несколько слов об общих принципах:


  • Если прибор должен иметь свой интерфейс с элементами управления, то необходимо перетащить на схему элемент "Виртуальный прибор", который находится в закладке "Системные" в коллекции. При этом автоматически откроется окно для элементов управления этим прибором. Далее элементы управления при перетаскивании на схему будут появляться на этом окне. НО! Если на схему перетащить элемент управления первым, то он автоматически притащит на схему и "виртуальный прибор". Это сделано для удобства. Элементы управления интерфейсом виртуального прибора находятся в закладке "Элементы интерфейса" коллекции.
  • Виртуальный прибор при создании может находиться в двух состояниях - редактирование и использование. Переключение состояний производится нажатием правой кнопки мыши на свободное место окна виртуального прибора - появится меню, в котором будет нужный пункт. В режиме испредактирование элементы на окне виртуального прибора можно перетаскивать мышью и менять их размеры. Для изменения размеров нужна мышка с колесиком. Вращение колесика изменяет размер элемента по горизонтали, а вращение с зажатой кнопкой Shift - по вертикали. Если же зажать одновременно кнопки Shift и Alt, то размеры элемента меняются во вертикали и горизонтали одновременно. Изменение размеров и перемещение элементов производится по сетке на окне виртуального прибора. Сетка видна в режиме редактирования и не видна в режиме использования.
  • В режиме редактирования можно перемещать и изменять размеры нескольких элементов одновременно. Для этого надо выбрать эти элементы, что делается аналогично выбору элементов на схеме - надо зажать кнопку Ctrl и кликом мыши выбирать элементы. Выбора с помощью резинового квадрата на окне виртуального прибора нет. Для одновременного перемещения элементов надо также удерживать кнопку Ctrl и потащить за любой выбранный элемент. При перемещении элементы не могут выходить за левую и верхнюю границы окна виртуального прибора - они будут на ней останавливаться. Но они могут выходить за нижнюю и правую границы - чтобы их увидеть, придется мышкой растянуть окно прибора. Окно прибора может быть сколько угодно большим.
  • На окне виртуального прибора в режиме редактирования также имеется возможность отмены и повтора отмененных действий. При нажатии правой кнопки в свободном месте прибора в меню появляются соответствующие пункты.
  • При наведении курсора на элемент схемы, если это элемент управления на окне виртуального прибора, то он там подсвечивается пунктирной рамкой. Обратное подсвечивание пока не реализовано. Также пока не реализовано выделение элементов на схеме при выделении на приборе и наоборот.
  • В режиме редактирования виртуального прибора при двойном клике на его элемент управления на окне прибора открывается окно редактора настроек этого элемента. Аналогично это окно открывается при двойном клике на элемент управления на схеме прибора, но это также работает, если виртуальный прибор находится в режиме использования.
  • Создаваемая схема не обязательно должна иметь интерфейс виртуального прибора. Она может быть лабораторным экспериментом, составленным из каких-то элементов, которые имеют собственные интерфейсы. Их можно увидеть на видео-фрагментах с record_000002 по record_000005 (они находятся в архивах, скачиваемых со страницы Скачиваемые файлы). Но в демонстрационную версию такие интерфейсы пока не входят.
  • Для создания цепей схемы надо соединить выходы одних элементов со входами других, или наоборот. Внешне соединение будет отображать логическое подключение выхода одного элемента ко входу другого. Любое количество выходов может быть подключено к одному входу, и один выход может быть подключен к любому количеству входов.
  • Все сигналы между любыми элементами схемы, независимо от типов сигналов, передаются посредством неуправляемых очередей абсолютно асинхронно. Скорость передачи в очереди следует считать неизвестной, но она достаточно высокая. Синхронизация обмена отсутствует. Если для создаваемого прибора потребуется синхронизация передачи внутренних сигналов - этим должен будет озаботиться разработчик прибора. Если приёмник сигналов работает медленнее передатчика, то сигналы в очереди накапливаются, что может привести к переполнению очереди и даже к аварийному завершению приложения. В текущей версии пока обработка такой ситуации отсутствует, ответственность за стабильность лежит на разработчике виртуального прибора. При разрыве соединения его очередь автоматически очищается.
  • Для создания соединения надо навести курсор на подключаемый вход или выход. При этом появится флажок с его названием, а также у всех совместимых сигналов всех элементов схемы появятся флажки с их названиями. При наведении на выход, флажки появляются у совместимых входов, а при наведении на вход, у совместимых выходов. Если курсор наведен на выход, но на каких-то входах флажки не появились, значит их сигналы не совместимы, их соединить нельзя. Если курсор находится над соединителем, то можно нажать левую кнопку мыши и тащить "резиновую" линию к требуемому соединителю, который надо подключить. При этом линия будет оставаться красной. Как только курсор окажется над совместимым соединителем, линия станет зеленой, кнопку можно будет отпустить. Будет установлено соединение. Если расположение элементов позволяет, то будет автоматически нарисована линия из синих ортогональных отрезков. Стрелки на концах отрезков показывают направление передачи сигнала. Если линию нарисовать невозможно из-за слишком тесного расположения элементов, то будет выдано сообщение. Тогда надо просто перетащить один или несколько элементов в другое место схемы - линия будет проложена заново. Соединение между элементами при этом сохраняется.
  • Другой способ соединения более удобен, когда надо подключить один выход к нескольким входам. Либо когда подключаемый элемент далеко и не удобно тащить к нему "резиновую" линию. Надо нажать над соединителем правую кнопку мыши, появится меню с пунктом "Подключить". При его выборе появится окно со списком всех совместимых соединетелей всех элементов. Можно выбрать несколько нужных и нажать кнопку "Ок" - будут сразу установлены все требуемые соединения. Этот же режим можно вызвать, если дважды кликнуть на соединитель.
  • Если хочется узнать, что соединяет линия, надо просто навести на неё курсор в том месте, где она не входит в шину. Линия изменит цвет, появятся флажки у соединителей, между которыми она проложена. Если соединители не попали в окно, то можно нажать правую кнопку мыши, появится меню, в котором будут названия элементов и соединителей.
  • Для отключения подключенных входов или выходов также есть несколько возможностей. Самый простой вариант - навести курсор на соединитель, который нужно отключить, и нажать правую кнопку мыши. В появившемся меню выбрать пункт "Отключить". При этом соединитель будет сразу отключен от всех других соединителей. Если надо отключить выборочно, то надо выбрать пункт меню "Подключить", найти соединители, к которым подключен текущий, снять с них флажки и нажать кнопку "Ок". И третий способ - можно отключить линию соединения, это описано далее. Наконец, сразу после ошибочного соединения можно нажать кнопку "Отмена" или клавиши Ctrl-Z и соединение будет отменено.
  • Линии соединений прокладываются автоматически. Они могут накладываться друг на друга, создавая "шины". Линии можно редактировать - перемещать входящие в них отрезки, чтобы расположить их более удобно для восприятия. При редактировании линий может потребоваться выбрать какой-то отрезок из нескольких, наложившихся друг на друга. Пока единственная возможность сделать это - навести курсор на любой другой отрезок этой же линии. Тогда линия "всплывает" наверх, и её отрезки в шинах будут первыми под курсором. В дальнейшем будут сделаны более удобные средства. Если хочется изменить проложенные линии, то единственная пока возможность - это ортогональное перемещение их отрезков. Если отрезок линии можно перемещать, то при наведении курсора на него он становится зеленым (остальные отрезки этой линии становятся фиолетовыми). Если перемещать нельзя, то отрезок становится красным. Если отрезок зеленый, то можно нажать левую кнопку мыши и тащить отрезок ортогонально его направлению. Когда он проходит в разрешенных местах, он остаётся зеленым. Когда в запрещенных, становится красным. Если он зеленый, его можно отпустить, отрезок останется на месте, остальная часть линии может быть оптимизирована для удаления лишних отрезков. Отредактированная таким образом линия сохраняется в файле схемы в виде набора отрезков и изображается при её загрузке. Все линии, которые не редактировались, сохраняются в схеме только как начальная и конечная точки, и при каждой загрузке прокладываются заново. Однако, если переместить любой элемент, который был подключен к отредактированной линии, она снова станет автоматической и её редактирование будет утеряно. Возможно в дальнейшем это будет улучшено. Наконец, если при наведении курсора на отрезок линии нажать правую кнопку мыши, то появится меню, в котором будет пункт "Отключить". При его выборе соответствующее подключение из схемы удаляется. Если курсор был над шиной, то удалится только то подключение, отрезок которого был верхним. Его точки соединения видны в том же меню. При нажатии на любую из них схема переместится в окне, чтобы соответствующий соединитель оказался в середине окна.
  • Неподключенные соединители можно скрывать, чтобы уменьшить размер элементов на схеме и сделать её более читаемой. Если нужно скрыть один вход или выход, то можно навести на него курсор и нажать правую кнопку мыши. В меню выбрать пункт "Скрыть". Для показа скрытых соединителей пока придётся использовать меню элемента (см. далее).
  • Для удобства редактирования схемы можно использовать меню элемента, вызываемое правой кнопкой мыши, когда курсор находится над элементом. Действие отдельных пунктов этого меню интуитивно понятно из их названий. Описание пунктов для копирования настроек элементов находится в разделе Настройка прибора. У некоторых элементов, например у процессоров языка Ci могут быть собственные пункты меню, находящиеся в начале меню. Эти пункты описаны в соответствующих разделах, посвященных таким элементам.