Интернет-журнал "Домашняя лаборатория", 2007 №5
Шрифт:
151. Регенеративный режекторный фильтр.
152. Стабилизатор повышенной стабильности.
153. Замена высокоомного сопротивления обратной связи на более низкоомные.
154. Стабилизатор напряжения с удвоением пульсаций.
155. Генератор тока.
156.
157. Преобразователь пилообразного напряжения в синусоидальное.
158. Преобразователь напряжение-ток.
159. Амплитудно-стабилизированный гетеродин.
АВТОМАТИЗАЦИЯ ЭКСПЕРИМЕНТА
Учимся использовать QSL (начальный курс автоматизации)
QSL (Quick Script Language) это просто небольшой диалект языка PERL, немного более близкий к языку «С», чем сам PERL. Интерпретатор QSL был сделан из интерпретатора PERL, для использования в составе программного пакета SOROS. Последний предназначен для построения и отладки систем автоматизации эксперимента на основе персонального компьютера. Взять пакет SOROS, включающий QSL, можно по этой ссылке:QSL оптимизирован для манипулирования данными в среде операционной системы Microsoft Windows. QSL, также как и PERL, является легким, не жестким языком программирования. Строгих правил и деклараций переменных нет. Писать программы (скрипты) на нем можно так, как вам больше нравится, корректируя их по результатам их работы или по выдаваемым сообщениям об ошибках. Приводимые в данной статье небольшие примеры, являются только возможными вариантами использования конструкций языка. Полное описание языка QSL вы можете найти в файле qsl.hlp. Интерпретатор QSL независим от периферийных устройств компьютера, команды языка используют доступ к устройствам и файлам, предоставляемый операционной системой. Такими устройствами могут являться, например, параллельный порт, последовательный порт и т. п. QSL поддерживает только текстовую консоль, драйверы устройств должны быть внешними.
Создавать скрипты для QSL можно с помощью любого текстового редактора. Договоримся использовать для файлов с QSL скриптами расширение «.qsl». Для того чтобы было удобно вызывать скрипт на выполнение можно поместить qsl.exe в какую-нибудь директорию, например, Program Files. Кликнув первый раз по файлу с расширением «.qsl», можно задать вызов qsl.exe для всех файлов с расширением «.qsl» (с помощью кнопки «Other…» в возникшем диалоге «Open With»).
Урок 1. Вывод на консоль
Сразу возникает вопрос — для чего это нужно? Прежде всего, консоль используется для отлаживания скриптов, для вывода промежуточных результатов. Консоль может использоваться также для демонстрации результатов измерений и информирования о ходе экспериментальных процессов. Хотя консоль текстовая, не графическая, но может быть использована для вывода простейших графиков и диаграмм. Кроме того, не следует забывать, что язык QSL может быть использован для проведения вычислений «на ходу, на скорую руку». Результаты таких вычислений тоже могут быть выведены на консоль, как, например, в скрипте Lesson 1.
# Lesson 1
$> = 0x10 | 0х0е;
print "\t\t", "Number", "\t\t", "Square root of number\n";
for ($i =1; $i < 10; $i++) {
sleep 500;
$> = 7; print "\n\n\t\t";
$> = 10; print $i;
$> = 7; print "\t\t";
$> = 12; print sqrt($i);
}
warn " ";
Рассмотрим
Комментарии, то есть то, что не подлежит выполнению, показываются символом #. Действие этого символа простирается до конца строки. Символ; разделяет команды скрипта. Пробелы в командах и операторах игнорируются. Все команды и операторы должны быть в нижнем регистре (маленькие, прописные буквы).
QSL интерпретатор не держит консоль открытой, консоль вызывается только при необходимости, при завершении скрипта закроется и консоль. Для того чтобы задержать консоль на экране в данном примере используется команда warn. Эта команда выводит указанное сообщение (то, что в парных кавычках, в нашем примере пустое место — пробел) или сообщения в диалоге и задает вопрос «да/нет». Если мы ответим «нет», то скрипт завершается (в нашем примере он в любом случае завершается, поскольку это последняя команда) с кодом «0» (нормальный выход с кодом «1»). Это может быть использовано при вызове QSL из других программ и скриптов (например, из *.bat файлов), но для нашего примера это сейчас неважно.
Команда sleep приостанавливает выполнение скрипта на указанное число миллисекунд. Ее применение в данном примере не особо важно, просто замедляется вывод. В основном она используется для временного согласования вывода и вычислений. Интерпретатор производит вычисления достаточно быстро, тогда как вывод данных наружу зачастую должен осуществляться с определенным интервалом.
Всю работу по выводу делает команда print. Она вызывает консоль и выводит указанный список данных. Элементы списка разделяются запятой. В частном случае может быть просто один элемент. То, что в двойных кавычках выводится как текст (символьная строка) и всегда преобразуется к этому виду. Обратите внимание, что этом примере выводимое первой командой print, можно записать как один элемент, а не список. Символьная строка может включать специальные (управляющие) символы. То, что это управляющий символ, указывается слешем \.
В примере для вывода использовался символ табуляции \t и символ перевода строки \n.
Другим выводимым элементом является содержимое переменной с именем «i». Все переменные имеют предшествующий символ $. Переменные могут иметь любые имена, состоящие из букв, цифр и символа подчеркивания, но первый символ в имени переменной должен быть буквой. Имена переменных зависят от регистра, то есть переменные $Data и $data являются разными. Имена в разных видах хранения независимы, интерпретатор не спутает переменную $days с массивом переменных @days. Переменные в памяти компьютера создаются интерпретатором при первом их упоминании, так что мы не заботимся об их создании. Одни и те же переменные могут содержать числа и/или текст. Представление содержания переменных в нужном формате, при выводе, берет на себя интерпретатор. Если нам что-то не нравится в выводе, то нужно использовать команду форматированного вывода printf, хорошо знакомую программирующим на языке «С».
Особой группой переменных являются системные переменные, они уже существуют до выполнения первой команды, содержат данные (которые по умолчанию) и их имена зарезервированы. В данном примере была использована системная переменная, хранящая цвет и фон выводимых символов $>.
Запись в переменные осуществляется с помощью операции =. Обратите внимание, что в первой записи в переменную $>, участвовали два числа, в шестнадцатеричном представлении, объединенные в одно с помощью битовой операции «или»: |. А в дальнейшем записывалось десятичное представление кодов цвета — это кому, что нравится.