Вход/Регистрация
Интернет-журнал "Домашняя лаборатория", 2007 №5
вернуться

Журнал «Домашняя лаборатория»

Шрифт:

Запуск мини-серверов осуществляется нажатием кнопок на модуле DEVICE. Для каждого номера порта или звуковой карты запускается своя копия мини-сервера. Одновременно может быть запущено несколько мини-серверов. На рисунке для примера запущен сервер, оперирующий первым параллельным портом. Контрольно-измерительные модули PARALLEL (параллельный порт), SERIAL (последовательный порт) и INPUT (звуковая карта) могут подключаться к нужной копии минисервера. Для этого они имеют переключатель номера порта/карты (над кнопкой Read). На рисунке модуль PARALLEL подключен к серверу LPT1. Чтение устройства осуществляется кнопкой Read. Для каждого доступного бита есть своя кнопка установки, но запись установленных битов в порт осуществляется кнопкой Set.

На рисунке можно видеть, после чтения, что в порте LPT1, на 1, 5, 8, 10, 13 и 15 выводах разъема установлена логическая единица, а на остальных, соответственно, ноль.

Для запуска осциллографа INPUT нужно не только выбрать номер карты (соответствующий мини-сервер должен быть запущен), но и длительность развертки (время чтения) по оси X. Соответствующие переключатели выбирают усиление и положение на оси Y. Кнопка Stat на модуле INPUT переключает осциллограф в режим показа гистограммы входного сигнала.

Сброс системы SOROS в исходное состояние осуществляется кнопкой Init на контроллере крейта CRATE. Кнопка Printer, там же, позволяет запустить минисервер для принтера. На окне этого сервера можно выбрать нужный принтер, подключится к нему, и выбрать имя для сервера. Подразумевается, что будет использован сетевой принтер, поскольку параллельный порт (порты) необходимы для подключения контрольно-измерительных устройств. Переключатель Strob запускает режим циклического чтения (когда не 0 и кликнута кнопка Read). Чем больше значение на переключателе, тем реже производится чтение (делитель частоты стробового импульса).

При нажатой кнопке Setup можно подшить какой-либо скрипт, написанный на языке QSL, к кнопке на модуле PROGRAM, при ее нажатии конечно. Когда Setup отжата, кнопки модуля PROGRAM могут запускать скрипты на выполнение. Любой QSL скрипт можно также выбрать и выполнить с помощью кнопки Run.

К мини-серверам пакета SOROS может подключаться и интерпретатор QSL. Для взаимодействия с серверами используется «клиент-сервер» модель и DDE. QSL всегда является клиентом с именем «QSL». Сервер может быть открыт как файл, командой open. Имена внешних программ (драйверов) должны предваряться символом #. Сами имена мини-серверов уже заложены внутри их программ, но входящий в них номер порта/карты выбирается при запуске с панели системы SOROS. К некоторым устройствам, таким как аудио и видео периферия, командные последовательности могут быть посланы через MCI (смотрите документацию на QSL и MCI). К настоящему моменту в пакет входит всего 4 сервера: принтер, параллельный порт, последовательный порт и звуковая карта, но каждый желающий может изменить их или добавить другие. Все источники предоставляются.

Далее следуют примеры программирования скриптов для работы с минисерверами.

Урок 4. И снова принтер

# Lesson 4

open (PRN, ">#printer) || die "";

print PRN "Nice weather today, isn't it?\n";

close PRN;

Надо полагать, что в этом примере все уже знакомо. Следует учесть только, что до его выполнения соответствующий сервер должен быть запущен и настроен. Тоже самое относится и к последующим примерам.

Урок 5. Параллельный порт

В действительности QSL не имеет каких-либо специальных команд для контроля драйверов. Одним из возможных решений этой проблемы может являться использование управляющих символов в выводимых данных и использование отрицательного размера буфера для ввода в стандартных командах ввода-вывода QSL.

# Lesson 5

open(LPT, "+#LPT1") || die "";

$reg = " ";

read(LPT, $reg, — 2); # read status and control registers

($sr, $cr) = unpack("CC", $reg);

printf "%x\n%x", $sr, $cr;

$cr |= 0x20; # bi-direct

$reg = pack("CC", 0x01, $cr); # SOH + control byte

print LPT $reg;

print LPT "Hello, world!\r";

sleep 3000;

close LPT;

warn " ";

Обратите внимание, что в команде чтения read размер буфера дан отрицательным, это является просьбой к серверу вернуть значения контрольного регистра и регистра чтения (два байта). Естественно, что сервер понимает это (смотрите программу этого сервера). Поскольку с сервера будет получена текстовая строка, переменная $reg была сделана текстовой, путем записи в нее пары пробелов.

Для передачи значения регистров упаковываются в текстовую строку, команда unpack распаковывает ее ($reg) на два байта без знака (код С) и помещает, в соответствующие названиям регистров, переменные. Последующий printf, просто для наглядности, выводит значения этих регистров на консоль, в шестнадцатеричном формате. Далее, после нужного изменения содержимого регистров, они снова упаковываются в текстовую строку командой pack и отсылаются на сервер командой print. Параллельный порт готов к работе, если там имеется принтер, то можно отпечатать что-нибудь, но на самом деле этот порт необходим для управления контрольно-измерительными устройствами, подключаемыми через него, а принтер можно использовать и сетевой.

  • Читать дальше
  • 1
  • ...
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: