Введение
Experix – это интерпретатор команд с открытым исходным кодом, предназначенный для управления лабораторным оборудованием, особенно устройствами сбора данных, а также для обработки, отображения и хранения полученных данных. В настоящее время он доступен только для Linux на архитектуре x86, но всё ещё находится в разработке, и пользователи могут участвовать в его расширении и улучшении. Experix радикально отличается от большинства коммерческих программ сбора данных, таких как LabVIEW, которые моделируют приложение для измерений и управления как сеть операционных блоков, графически представленных в виде блоков с соединениями, обозначающими поток данных. В этих системах приложение создается путем манипулирования этими символами на экране, а затем используется посредством нажатия кнопок и заполнения диалоговых окон в среде графического интерфейса. В отличие от этого, Experix представляет приложение как последовательность операций, обычно выполняемых одна за другой. Он обрабатывает командную строку последовательно, а числа, операторы, функции и команды в этой строке потребляют и создают объекты в стеке. Эти объекты включают целые числа и числа с плавающей точкой различных размеров, комплексные и полярные числа, многомерные массивы, составленные из любого числового типа, различные типы строк и указатели на функции, команды и переменные (которые могут быть числами, массивами и строками). Функция, команда или оператор требует определенных типов объектов в стеке и помещает объекты в стек, а также может изменять значения объектов и переменных в стеке, строить графики, выполнять команды в драйверах устройств и читать и записывать файлы. Experix распространяется под лицензией GNU GPL.
commercial data acquisition programs, for example LabVIEW, which model a measurement and control application as a network of operational units represented graphically as boxes with connections that stand for data flow. In these systems an application is created by manipulating these symbols on the screen, and then it is used by clicking buttons and filling dialog boxes in a GUI environment. Experix, in contrast, represents the application as a series of operations generally taking place one after another. It processes a command line in a sequential way, and numbers, operators, functions and commands in the command line consume and create objects on a stack. These objects include integers and floating point numbers in several sizes, complex and polar numbers, multi dimensional arrays made from any of the numerical types, several kinds of strings, and pointers to functions, commands and variables (which can be numbers, arrays and strings). A function, command or operator requires certain types of objects on the stack and puts objects on the stack, and may also change values in stack objects and variables, draw graphs, order operations in device drivers, and read and write files. Experix is released under the GNU GPL.
Документация
Документация обширная. Файл с ключевыми словами (.doc) описывает функции и структуры данных в программе. Команды, функции и операторы описаны в справочных файлах, к которым можно получить доступ в Experix с помощью операторов справки. Справочные файлы – это обычные текстовые файлы с управляющими последовательностями для цветового выделения. Системные команды, такие как cat и grep, отображают эти файлы с цветовым оформлением, а редактор, используемый Experix для оператора справки с двумя вопросительными знаками, – это nano (из проекта GNU) с расширением для работы с управляющими последовательностями. Исходные файлы nano, которые были изменены для добавления этого расширения, доступны на веб-сайте Experix. Пользователям Experix рекомендуется исправлять и улучшать справочные файлы в процессе работы.
Ограничения
В настоящее время experix доступен только для Linux и, из-за кода на языке ассемблера, только на архитектуре x86. На данный момент единственной графической поддержкой для experix является SVGALib с открытым исходным кодом. Можно запустить графическую сессию experix в одном виртуальном терминале и текстовые или X-сессии в других, переключаясь между ними с помощью клавиш. Графические операции выполняются серверным процессом, а experix отправляет команды и данные этому процессу через FIFO. В системе есть поток выполнения, который использует readline (библиотеку с открытым исходным кодом из проекта GNU) для получения командных строк и добавления их в очередь выполнения. Другой поток преобразует стандартный вывод (то есть эхо от readline) в команды для графического сервера. Experix также может работать в текстовом режиме или X-терминале без использования svgalib. Перед тем, как он сможет работать на архитектурах, отличных от x86, необходимо доработать код на языке ассемблера и решить другие задачи. Количество доступных в настоящее время драйверов устройств и приложений крайне ограничено. Он запускается от имени root, что представляет собой значительную угрозу безопасности на компьютере, подключенном к сети. Запуск experix без прав root должен быть возможен, но пока это не реализовано.