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

0 ... 25 26 27 28 29 30 31 ... 105

[ARROW!:Select • ledo [T]:Transmitted Data[SPACE]:Change statue -

[C]:Configure HS232[a] Quit

, ;;0uu€iserial/data::;128 , . .-r.> Input, serial: data: -0

Рис. 3.5. Виртуальная панель управления для экспериментальной платы последовательного порта

Посредством клавиш «~ и -» можно указать одну из выходных линий. Выбранный выход помечается окружностью вокруг изображения светодиода. Для изменения состояния выхода используется клавиша пробела. При нажатии на клавиши 4~ или клавишу пробела входные данные считываются и выводятся на экран. Для тестирования порта нужно соединить приемную и передающую линии. Значения входных и выходных последовательных данных должны совпадать.

Текст программы RS232EXP.PAS

Program RS232 tester

(«Программа управления экспериментальной платой последовательного порта *) uses

graph crt.dos, var

l,led selected Serial input byte,Baud rate byte data length byte,Stop length byte,Parity byte integer Serial output string,Serial input string 01d serial input stnng string[5] ch char,

status array[1 18] of integer, key pressed string[10]

(«Загрузка двух библиотек *) {$1 с \ioexp\tpliM pas} {$1 с \ioexp\tplib2 pas}


procedure Draw.panel;

(«Рисование панели управления экспериментальной платой последовательного порта.*) begin

for i:=1 to 16 do status[i]:=0; setbkcolor(cyan);

for i:=1 to 3 do draw led(80+i*50,350,status[i]); for i:=4 to 7 do draw led(180+i*50,350,status[i]); draw led(20,20,1);

draw message(50,20,70,20, lightblue,LED ON,0,1,yellow); draw led(20,60,0);

draw message(50,60,70,20, lightblue,LED OFF,0,1,yellow); setfillstyle(1,magenta); bar(1,420,800,480); settextstyle(0,0,1);

outtextxy(10,425, [ARROW]:Select LED [T]transmitted data [Space]:Change Status); outtextxy(10,440. [C] Configure RS232 [Q]:Quit); draw message(60,200,500,50,blue, RS232 experimental board,0,2,yellow); draw message(115, 390,130,20,blue,DTRTXD RTS,0,1,yellow);

draw message(370,390,180,20,blue,RD DSR DCD CTS,0,1,yellow); end;

procedure 0utput input; var

output byte,input byte:byte; code-.integer; begifi

(•Вычисление значения данных для передачи через регистр данных.*) write modem status(RS232 address, status[3], status[l]); val(serial output string,output byte,code); status[5]:=read modem status(RS232 address,2); status[6]:=read modem status(RS232 address,1); statust7]:=read modem status(RS232 add ress,3); if status[2]=1 then begin repeat

write transmit buffer(RS232 address,output byte); until keypressed; status[2]:=0;

end; delay(50);

serial input byte:=read receive buffer(RS232 address); setcolor(magenta);

outtextxy(420,460,Input serial data:+01d serial input string); setcolor(yellow);

str(serial input byte,serial input string); outtextxy(420,460, Input serial data: +serial input string); 01d serial input string;=serial input string; setbkcolor(cyan); end;

Procedure Scan keyboard; begin

key p ressed:=getkey;

if key pressed=LEFT then led selected:=led selected-1;

if key pressed=RIGHT then led selected:=led selected+1;

if key pressed= then status[led selected]:=1-status[led selected];

if (key pressed=T) or (key pressed=f) then


begin

setcolor(magenta);

outtextxy(30,460,Output serial data:+serial output string);

draw roessage(100,290,100,60,cyan,Input Serial data , 0,1 yellow);

gotoxy(22,20); readln(serial output string);

draw raessage(100,290,100,60,cyan,Input serial data ,0,1,blue);

setcolor(yellow);

outtextxy(30,460,Output serial data:+serial output string);

end;

if (key pressed=C) or (key pressed=c) then begin

closegraph;

writeln(Configure RS232 port");

writeCInput baud rate (115200-9600-4800-2400-1200):"); readln(baud rate byte); write(Input parity (0=None, 1=Even, 3=0dd): ); readln(Parity byte); write(Input data bit length (5, 6, 7, 8): ); readln(Data length byte); write(Input stop bit length (2, 1): ); readln(Stop length byte); write data forroat (RS232 address, Baud rate byte, Parity byte, Data length byte, Stop length byte);

initialize graph;

draw panel;

led selected:=1;

end;

end;

procedure draw led status; var

led selected old:integer; begin

led selected old:=led selected; scan keyboard;

for i:=1 to 3 do draw led(80+i*50,350,status[i]); output input;

for i:=4 to 7 do draw led(180+i*50,350,status[i]);

if led selected>3 then led selected:=3; if led selected<1 then led selected:=1;

setlinestyle(0,0,3); setcolor(cyan);

if led selected old<=3 then circle(80+50*led selected old, 350,15); setcolor(yellow);

if led selected<=3 then circle(80+50*led selected,350,15); end;

(«Главная программа.*) begin

C0M address;

initialize graph;

draw panel;

led selected:=1;

repeat

draw led status;

until (key pressed=Q) or (key pressed=q);

closegraph; («Закрытие графического режима.*) end.



0 ... 25 26 27 28 29 30 31 ... 105