Интернет-журнал 'Домашняя лаборатория', 2007 №5 - Федорочев
Шрифт:
Интервал:
Закладка:
Знак + в начале имени файла означает, что файл нужен для чтения и записи. Операция |= (битовое «или»), просто сокращенная форма конструкции $сг = $сг | 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.
ТИХОЕ ПОМЕШАТЕЛЬСТВО
Полный справочник по уходу за пресноводными тропическими рыбами
М. Бейли, П. Бергресс
Содержание рыб — любимое занятие людей всех возрастов и всех слоев общества. Оно позволяет иметь домашних животных даже тем, кто по разным причинам — из-за нехватки места, плохого состояния здоровья и т. п. — не имеет возможности держать собаку или кошку. Ведь практически в любом доме можно найти место для маленького аквариума. С другой стороны, для кого-то это занятие может превратиться в хобби, что непременно приведет к изменениям в жизни аквариумиста, проявившемся, например, в покупке огромного демонстрационного аквариума для гостиной или множества маленьких аквариумов для мальков, в постройке специального «рыбьего домика» или устройстве большого пруда в саду, или даже ко всему этому вместе взятому — в зависимости от того, как далеко заведет энтузиаста его увлечение.
В этой книге речь пойдет только об одном аспекте аквариумистики, а именно — о содержании пресноводных тропических рыб. Правда, часть информации, данной в книге, вполне можно применить и к другим вариантам содержания рыб (например, в аквариумах с тропической морской и холодной морской водой, с солоноватой водой, с холодной пресной водой и в прудах). В данной книге учитывается огромное количество и большое разнообразие представителей группы тропических пресноводных рыб и гарантируется охват этой специфической области.
Рыбы радикально отличаются от других распространенных домашних животных тем, что они живут в воде и поэтому не могут разделить с нами нашу непосредственную окружающую среду. Это означает, что их нельзя взять на руки и погладить, или бросить им палку, чтобы они принесли нам ее обратно, или взять их с собой в автомобильную поездку. Но вскоре становится очевидно, что они замечают человеческую деятельность вокруг и реагируют на приближение своего хозяина — особенно в часы кормления. В то же время они спокойны, их не нужно приучать к дому, они не портят мебель, не кусают посетителей, не воруют пищу с кухни. Однако они, разумеется, нуждаются в «системе жизнеобеспечения», которой для них является аквариум. Заметим при этом, что хорошо оформленный и правильно содержащийся аквариум, заполненный яркими, здоровыми рыбами, находящимися в постоянном движении и ведущими повседневную жизнь почти так же, как в природе, может стать не только украшением гостиной, но и центром интересной деятельности. Он даст вам возможность создать прекрасный подводный сад (сами по себе водные растения — захватывающая тема), а также послужит учебным пособием, если в доме есть дети.
Создание этого замкнутого подводного мира можно уподобить составлению картинки-загадки. Вы знаете, как должна выглядеть окончательная картина, но чтобы создать единое целое, вначале нужно рассмотреть и подогнать друг к другу множество отдельных кусочков. Не имеет смысла начинать с какого-то определенного кусочка и продвигаться вперед в заранее заданной последовательности, так как в этом процессе есть очень много переменных составляющих. В идеале должно быть так: сначала нужно принять решение, каких именно рыб вы хотели бы держать, а потом позаботиться о том, где их разместить. Но здесь могут быть различные ограничивающие факторы: например, у вас не хватает места для аквариума, нужного размера, или пол у вас недостаточно прочный, чтобы выдержать вес большого аквариума, или все дело просто в его стоимости.
Рыбы — это наиболее важная составная часть головоломки, поэтому первая часть этой книги посвящена именно им. В нем рассказывается о разных типах рыб, имеющихся в продаже, и о том, как узнать, каких из них можно держать вместе. При этом следует учитывать такие факторы, как разница в размерах рыб, их привычки, пищевая ориентация