Раздел: Документация
0 ... 23 24 25 26 27 28 29 ... 105 for i:=1 to 4 do draw led(340+i*30,350,status[8+i]); output.input; for i:=5 to 8 do draw led(340+i«30,350,status[8+i]); if led selected>12 then led selected:=12; if led selected<1 then led selected:=1; (•Отображение окружности вокруг выбранного светодиода.•) setlinestyle(0,0,3); setcolor(cyan); if led selected old<=8 then circle(30+30*led selected old,350,15) else circle(340+30«(led selected old-8),350,15); setcolor(yellow); if led selected<=8 then circle(30+30*led selected,350,15) else circle(340+30«(led selected-8),350,15); end; (•Главная программа.•) begin centromc address; («Ввод адреса параллельного порта.*) initialize graph;(«Инициализация графического режима.*) draw panel;(«Рисование виртуальной панели.*) led selected:=1; repeat scan keyboard;(«Опрос клавиатуры для обнаружения нажатия клавиши.*) until (key pressed=Q) or (key pressed=q); closegraph;(«Закрытие графического режима.*) end. Здесь используются две библиотеки - TPLIB1.PAS и TPLIB2.PAS, которые подключаются с помощью директивы ТР6 INCLUDE. {$1 c:\ioexp\tplib1.pas} {$1 c:\ioexp\tplib2.pas} Программа содержит три главные процедуры, находящиеся в библиотеке TLIB2.PAS: Draw panel рисует виртуальную панель управления экспериментальной платой, Draw led() и Draw message() - изображения виртуальных светодиодов и надписи. Процедура Output input управляет операциями ввода/вывода параллельного порта, Write data port(), write control port() и read status port() -операциями записи в регистры порта и чтения из них; они содержатся в библиотеке TPLIB1.PAS. Процедура Scan keyboard опрашивает клавиатуру для обнаружения нажатия клавиш управления. Здесь используется функция get key из библиотеки TPLIB2.PAS. 3.1.2. Описание программы CENTEXP Программа написана на языке VB3 и выполняет следующие функции: О сообщает о количестве установленных на компьютере параллельных портов; О позволяет выбрать номер порта для его дальнейшего использования; О изменяет состояние битов регистра данных (8 бит) и регистра управления (4 бита); О считывает данные из регистра состояния (4 линии). Centronic port (LPT) on pour PC Ш 2 Centronic ports (LPTsJ are instated on your PC. Thee base addresses ate: 888 Б32 Decimal ЗВПуск g Adobe PhotoshopJ Centronic ports (LPT) Рис. 3.2. Сообщение о количестве установленных параллельных портов Нажмите кнопку ОК, и на экране появится другое окно (рис. 3.3). Здесь необходимо выбрать номер порта, к которому подключена экспериментальная плата. Введите номер порта (1-4) и щелкните по ОК. Вы увидите окно управления экспериментальной платой параллельного порта (рис. 3.4), содержащее информационную панель и 15 кнопок, которые выполняют следующие функции- О Get it - обновление информации о состоянии входов. Красный цвет светодиода свидетельствует о высоком уровне соответствующей линии, О 0-1 - изменение состояния битов регистра данных и управления При этом на панель выводится номер указанного порта и его базовый адрес, О Change - выбор другого порта, О Quit - выход из программы. Для запуска программы в среде Windows нужно нажать кнопку Пуск и выбрать пункт меню Выполнить, а затем вписать ее полное имя путь + CENTEXP. После щелчка по кнопке ОК на экран выводится сообщение о количестве параллельных портов, установленных на компьютере, и их базовых адресах (рис. 3 2). Рис. 3.3. Окно выбора параллельного порта Текст программы CENTEXP Объявление функции библиотеки динамической компоновки WLIB1 DLL Объявляемые функции Centronic() Bit weight() Read status port() Write data port() и Write control port() Declare Function Centronic Lib С \Ioexp\Wlib1 dll (ByVal X As Integer) As Integer Declare Function Bit weight Lib С \Ioexp\WliM dll (ByVal X As Integer) As Integer Declare Function Read status port Lib С \Ioexp\WliM dll (ByVal address As Integer) As Integer Declare Function Write data port Lib С \Ioexp\WliM dll (ByVal address As Integer ByVal Output data As Integer) As Integer Declare Function Write control port Lib С \Ioexp\WliM dll (ByVal address As Integer ByVal Output data As Integer) As Integer Sub Command1 Click() input byte =read status port(P address) For l =12 to 15 status(i)=(input byte And Bit weigtit(i 11))/Bit weight(i-11) If status(i)=1 Then Shape1(i) BackColor=&HFF& Else Shape1(i) BackColor=black Next l End Sub 0 ... 23 24 25 26 27 28 29 ... 105
|