8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 32 33 34 35 36 37 38 ... 105

pieslice(x,y,0.360,10); setcolor(magenta), circle(x,y,10); setcolor(yellow); circle(x,y,5);

(♦-Библиотека ресурсов № 03 (рисование окон и вывод сообщений).-*) procedure draw message(x1,у1,width,height,color box:integer, message.string; font,size text,color textinteger); (* x1,y1 - координаты левого края надписи;

width и height - ширина и высота окна сообщения;

color box - цвет окна сообщения;

message - сообщение, выводимое на экран;

Font,size text,color text - шрифт, размер и цвет текста.*) begin

setfillstyle(1, color box);

bar(x1,y1-round(height/2),x1+width,y1+round(height/2)); setcolor(color text); settextstyle(font,0, size text); outtextxy(x1+5,y1-4, message); end;

(«-Библиотека ресурсов № 04 (считывание символов при нажатии функциональных клавиш).-*)

function getkey:string;

var

ch:char; begin

ch:=readkey; («Считывание символа с клавиатуры.*)

if ch=#0 then («Если нажата дополнительная клавиша, то выполняются следующие процедуры,*)

ch:=readkey; («Считывание клавиши снова для получения кода символа.*)

end;

begin

if ch=#72thengetkey=UP;

if ch=#80thengetkey=D0WN;

if ch=#75thengetkey=LEFT;

if ch=#77thengetkey=RIGHT;

if ch=#82thengetkey= INSERT

if ch=#83thengetkey=DELETE

if ch=#71thengetkey=HOME;

if ch=#79thengetkey=END;

(«Стрелкавверх = #72.*)

(«Стрелкавниз = #80.*)

(♦Стрелкавлево = #75.*)

(•Стрелкавправо = #77.*)

(♦Клавиша insert = #82.•) (•Клавиша delete = #83.•)

(♦Клавиша home = #71.•) («Клавиша end = #79.«)

end

else

(♦Если нажата не дополнительная клавиша.♦) begin

if ch=#13 then getkey.=RETURN

else if (ch=8) or (ch=127) then getkey.=BACKSPACE

else getkey=ch;

end;

end;


Procedure init 8253; begin

(♦Управляющее слово = b6h = 10110110b:

10= выбор счетчика 2;

11= сначала чтение/запись младшего байта, 011 = режим 3;

0 = шестнадцатибитовый двоичный счет.*)

затем старшего;

port($43) port($42) port($43) port($61) port($43) end;

=$Ь6;(«Запись слова в управляющий регистр §253.*)

=255;(«Загрузка младшего байта.*)

=255;(«Загрузка старшего байта.*)

=port($61)or 1 (*Выключение внутреннего динамика.*) =$80(*80h - команда фиксации для счетчика 3.*)

Function read 8253:integer;

(«Считывание младшего и старшего байтов счетчика.*) var

low byte,high byte:byte; begin

low byte:=port($42); high byte:=port($43); read 8253:=low byte+256*high byte; end;

function find period(address:integer; bit weight:integer):real; (* Нахождение длительности периода входного цифрового сигнала.

Входной сигнал определяется адресом порта ввода и номером бита:

Бит 0 - bit weight=1

Бит 1 - bit weight=2

Бит 7 - bit weight=128.«) var

count,average number,timel,time2:integer; begin

(«Определение промежутка времени, в течение которого входной сигнал имеет низкий уровен Это значение будет использоваться для вычисления переменной average number.*) repeat until port(address) and bit weight=bit weight; («Высокий уровень.*) repeat until port(address) and bit weight=0;(«Низкий уровень.*)

timel:=read 8253;(«Считывание первого значения счетчика.*)

repeat until port(address) and bit weight=bit weight; («Снова высокий уровень.*) tlme2:=read 8253;(«Считывание второго значения счетчика.*)

average number:=round(10000/(time2-time1));(«Определение average number.

if average number=0 then average number:=1;

repeat until port(address) and bit weight=bit welght; (Высокий уровень.*) repeat until port(address) and bit weight=0;(«Низкий уровень.*)

timel:=read 8253;(«Считывание первого значения счетчика.»)

for count:=1 to average number do («Нахождение спада входного сигнала.») begin

repeat until port(address) and bit weight=bit weight; («Высокий уровень.») repeat until port(address) and bit weight=0;(«Низкий уровень.*)

end;


time2•=read 8253;(«Считывание второго значения счетчика.*)

find period =((time1-time2)*i/2*l193180)*le6/average number), end;

Библиотека ресурсов WLIB.PAS

(•Программная библиотека ресурсов А.*)

(Процедуры ввода/вывода для параллельного, последовательного и игрового портов.*) Library LibA;

uses Wincrt;

(•-Библиотека ресурсов № А1 (определение базового адреса LPT) -•) Function Centronic(x1 integer) integer; export; (• $000 $0408 содержит базовый адрес для LPT1, ):$040А содержит базовый адрес для LPT2, ,$040С содержит базовый адрес для LPT3, :$040В содержит базовый адрес для LPT4, ):$0411 содержит количество параллельных портов.*) var

number of LPT,LPT1,LPT2,LPT3,LPT4:integer; begin

number of lpt:=mem($0000,$0411); («Считывание количества установленных лараллельных

портов *)

number of lpt:=(number of lpt and (128+64)) shr 6;

lpt1 lpt1 lpt2 lpt3 lpt4

=0; lpt2:=0, lpt3.=0; lpt4=0; =memw( =memw(

=memw($0000.$040C); =memw($0000:$040E);

(Процедура считывания из памяти.*)

case х of

centronic:=number of LPT; centromc:=LPT1; centronic:=LPT2; centronic:=LPT3; centronic:=LPT4;

end;

end;

(♦-Библиотека ресурсов № A2 (нахождение веса бита).-*) Function bit weight(bit:integer):integer; export; var

l,dummy.integer; begin

if bit=l then bit weight:=1 else

begin

dummy:=1

for i:=i to bit-1 do dummy=dummy*2; bit weight:=dummy;

end;

end,



0 ... 32 33 34 35 36 37 38 ... 105