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

0 ... 30 31 32 33 34 35 36 ... 105

Next 1 End Sub

Sub 0ption1 Click(index As Integer)

led selected=index+1 End Sub

Sub 0ption1 MouseMove (index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

Label6.Caption="Select No." & index+1 & "resistance input channel" End Sub

Function resistance(ByVal period As Single) As Single

dummy2=(interval R(led selected)-interval 0(led selected)) If Abs(dummy2)<.001 Then dummy2=1

dummy=Standard r(led selected)/dumrny2*(period-interval 0(led selected)) If Abs(dummy)>200 Then resistance=200 Else resistance=dummy End Function

3.4. Программные библиотеки ресурсов

Ниже приведены тексты библиотек ресурсов ТР6 (TPLIB1.PAS и TPLIB2.PAS для DOS) и библиотеки динамической компоновки для Windows (WLIB.PAS). Подробные комментарии к процедурам и функциям даны в тексте.

Библиотека ресурсов TP LIB 1. PAS

(«Библиотека ресурсов TP6 № 1.*) («Название библиотеки: TPLIB1.PAS.*)

(«Процедуры для управления параллельным, последовательным и игровым портами *) («Эта библиотека может быть включена в пользовательскую программу.*)

var

P address,RS232 address:integer;

(♦-Библиотека ресурсов № А1 (определение базового адреса LPT) -*) Procedure Centronic Address (* $000:$0408 содержит базовый адрес для LPT1 :$040А содержит базовый адрес для LPT2 :$040С содержит базовый адрес для LPT3 :$040В содержит базовый адрес для LPT4 :$0411 содержит количество параллельных портов *)

var

lpt:array[1. .4] of integer; питЬе r of lpt,LPT number,code:integer; kbchar:char; begin

clrscr;

LPT number:=1;(Для установки принтера no умолчанию *)

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

портов *)

number of lpt:=(nU(riber of lpt and (128+64)) shr 6,(«Битовые преобразования.»)

lpt[1]:=memw($0000:$0408) lpt[2]:=memw($0000:$040A) lpt[3]:=memw($0000:$040C)

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


lpt[4] =memw($0000 $040Е) textbackground(blue) clrscr,

textcolor(yellow) textbackground(red), window(10,22,70,24), clrscr, wnteln( Number of LPT installed number of lpt 2),

writeln( Addresses for LPT1 to LPT4 , lpt[1] 3, ,lpt[2] 3, ,lpt[3] 3 lpt[4] 3),

write( Select LPT to be used(1,2,3,4) ),

delay(1000),

if number of lpt>1 then begin {Выбор порта, если установлено несколько портов } repeat

kbchar =readkey,(«Считывание значения

с вводимой клавиши «)

val(kbchar, LPT number,code), («Преобразование символа

в число *)

until (LPT number>=1) and (LPT number<=4) and

(lpt[LPT number]<>0),

end,

clrscr

P address =lpt[LPTJumber],

writeln( Your selected printer interface LPT",LPT number 1),

write( LPT address ,RS232 address 3),

delay(1000)

textbackground(black) window(1 1 80,25), clrscr,

end,

(«-Библиотека ресурсов № A2 (нахождение веса бита) -*)

Function bit weight(bit byte) byte,

var

i,dummy integer begin

if bit=1 then bit weight =1 else

begin

dummy =1

for i =1 to bit-1 do dummy =2*dummy, if dummy=0 then dummy =1, bit weight =dummy,

end

end

(«-Библиотека ресурсов № A3 (считывание данных в компьютер) -«)

Function Read status port(P address integer) byte,

var

bytel byte, begin

bytel =port(P address+1),(«Считывание байта из регистра состояния *)

bytel =byte1 and 120, («01111000 (от старшего к младшему) and Odddd = OddddOOO «) Read status port =byte1 shr 3,(«Сдвиг на 3 бита вправо,

Read status port=0000hhhh *)

end,

(«-Библиотека ресурсов № А4 (запись данных в регистр данных компьютера) -*) Procedure Write data port(P address integer, port data byte), («Линии порта данных не инвертированы *)


(«Ввод байта в регистр данных.*)

begin

port(P address):=port data; end;

(•-Библиотека ресурсов № А5 (запись данных в регистр управления).- Procedure Write control port(P address:integer; port data:byte); (*Биты 0, 1 и 3 инвертированы. Требуются преобразования над битами, begin

if port data and 1=1 then port data:=port data and (255-1)

else port data:=port data or 1; if port data and 2=2 then port data;=port data and (255-2)

else port data:=port data or 2; if port data and 8=8 then port data:=port data and (255-8) else port data:=port data or 8;

end;

port(P address+2):=port data; (*Ввод байта данных в регистр управления.*)

(♦-Библиотека ресурсов № А6 (определение базовых адресов СОМ-портов).-*) Procedure COM address;

(* $0000:$0400 содержит базовый адрес порта С0М1,

$0000 $0000

$0000

$0402 содержит базовый адрес порта COM2, $0404 содержит базовый адрес порта COM3, $0406 содержит базовый адрес порта COM4, $0411 содержит количество СОМ-портов.*)

var

СОМ:аггау[ 1. .4] of integer; C0M number,number of C0M,code:integer Kbchanchar; begin clrscr;

C0M number:=1;

Number.of C0M:=mem($0000:$0411);

(«Установка порта по умолчанию.*) («Считывание количества СОМ-портов.*)

Number of C0M;=(Number of C0M and (8+4+2)) shr 1;

С0М[1] С0М[2] С0М[3] С0М[4]

=memw($0000 =memw($0000 =memw($0000 =memw($0000

$0400) $0402) $0404) $0406)

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

textbackground(blue); clrscr;

textcolor(yellow); Textbackground(red); wmdow(l0,22,70,24); clrscr; writeln(Number of COM installed:, Number of C0M:2);

writeln(Addresses for C0M1 to COM4:, C0M[1]:3, C0H[2]:3, C0M[3]:3, C0M[4]:3);

wnte(Select COM to be used (1,2.3,4):);

delay(lOOO);

if number of C0M>1 then begin (*Выбор порта, если установлено несколько портов.*) repeat

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

val(kbchar,C0M number,code); («Преобразование символа в число.*) until (C0M number>=1) and (C0M number<=4) and (C0M[C0M number]<>0);

end; clrscr;

RS232 address:=C0M[C0M number];

writeln("Your selected RS232 interface: COM, C0M number:1); write(RS232 address:, RS232 address:4);



0 ... 30 31 32 33 34 35 36 ... 105