Чтение онлайн

ЖАНРЫ

Интернет-журнал "Домашняя лаборатория", 2007 №5
Шрифт:

($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. Параллельный порт готов к работе, если там имеется принтер, то можно отпечатать что-нибудь, но на самом деле этот порт необходим для управления контрольно-измерительными устройствами, подключаемыми через него, а принтер можно использовать и сетевой.

Знак + в начале имени файла означает, что файл нужен для чтения и записи. Операция |= (битовое «или»), просто сокращенная форма конструкции $сг = $сг | 0x20.

Урок 6. Последовательный порт

Последовательный порт (RS-232) тоже может быть использован для управления некоторыми устройствами, тем более что некоторые современные измерительные приборы имеют встроенный интерфейс для него. В нижеследующем примере использован другой подход к проблеме доступа к регистрам порта. В этом подходе первые 2 байта ввода/вывода содержат данные контрольного регистра, другие 2 байта — получаемые/посылаемые портом данные.

#Lesson 6

open(СОМ, "+#СОМ1") || die "";

$sr =2; # -1 for serial register and -1 or 0 for data means do not set/send

$sr <<= 16; # first 2 bytes are register, second 2 bytes are data

# actually for setting/sending is used only second byte in pair

print COM $sr; # DTR is set, it works like printf(COM "%d", $sr);

$str = "";

read(COM, $str, 12); # read serial register and data as decimal string

$sr = dec($str) >> 16; # converts string to bytes and gets register

# first 2 bytes are register, second 2 bytes are data

printf "0x%x", $sr;

close COM;

warn " ";

Операции << и >> производят сдвиг битов числа, соответственно влево и вправо на указанное количество позиций, добавляя на освободившиеся места нули. Каждый сдвиг это, по сути, умножение (влево) или деление (вправо) на 2.

Урок 7. Ввод-вывод звуковой карты

Нижеследующий скрипт считывает 160 байтов из звуковой карты и отправляет на нее, через мини-сервер, тоже 160, случайных байтов. Этого достаточно, чтобы услышать скрип в динамике.

#Lesson 7

open(AUDIO, "+#AUD1") || die "";

$str = "";

read(AUDIO, $str, 160);

@x = unpack("Cl60", $str);

printf "0x%x", $x[10];

srand;

for($idx =0; $idx < 160; $idx++) {

$x[$idx] += rand(50) — rand(50);

}

$str = pack("C160", 0x);

write(AUDIO, $str, 160);

close AUDIO;

warn " ";

В

этом примере для вывода используется команда write, обратная по смыслу команде read, но аналогичная по формату.

Обратите внимание, на использование переменной в команде printf. Это означает 10 порядковая переменная (или 11 по счету, поскольку в QSL индексы считаются с нуля) массива переменных , то есть можно записать как $х[].

В блоке, далее, это и используется.

Прим. ред.: Во всех примерах, перед исполнением замените кавычки на нормальные, поскольку те, что присутствуют, не всегда соответствуют требуемым, некоторые были заменены MS Word.

ТИХОЕ ПОМЕШАТЕЛЬСТВО

Полный справочник по уходу за пресноводными тропическими рыбами

М. Бейли, П. Бергресс

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

В этой книге речь пойдет только об одном аспекте аквариумистики, а именно — о содержании пресноводных тропических рыб. Правда, часть информации, данной в книге, вполне можно применить и к другим вариантам содержания рыб (например, в аквариумах с тропической морской и холодной морской водой, с солоноватой водой, с холодной пресной водой и в прудах). В данной книге учитывается огромное количество и большое разнообразие представителей группы тропических пресноводных рыб и гарантируется охват этой специфической области.

Рыбы радикально отличаются от других распространенных домашних животных тем, что они живут в воде и поэтому не могут разделить с нами нашу непосредственную окружающую среду. Это означает, что их нельзя взять на руки и погладить, или бросить им палку, чтобы они принесли нам ее обратно, или взять их с собой в автомобильную поездку. Но вскоре становится очевидно, что они замечают человеческую деятельность вокруг и реагируют на приближение своего хозяина — особенно в часы кормления. В то же время они спокойны, их не нужно приучать к дому, они не портят мебель, не кусают посетителей, не воруют пищу с кухни. Однако они, разумеется, нуждаются в «системе жизнеобеспечения», которой для них является аквариум. Заметим при этом, что хорошо оформленный и правильно содержащийся аквариум, заполненный яркими, здоровыми рыбами, находящимися в постоянном движении и ведущими повседневную жизнь почти так же, как в природе, может стать не только украшением гостиной, но и центром интересной деятельности. Он даст вам возможность создать прекрасный подводный сад (сами по себе водные растения — захватывающая тема), а также послужит учебным пособием, если в доме есть дети.

Поделиться с друзьями: